
我有用 golang 寫的 lambda 函數。我透過呼叫 HTTP API 網關來運行它。它工作正常,但我希望看到由我的 golang 程式產生的 stderr 中寫入的日誌。
我試過這
aws logs describe-log-groups
但它顯示空數組:
{
"logGroups": []
}
實際上,只有當我直接呼叫 lambda 函數而不使用 API 網關時才能看到日誌,如下所示:
aws lambda invoke --function-name $FUNCTION_NAME $output --log-type Tail --query 'LogResult'
在本例中,日誌在呼叫後立即列印。
但當我透過 HTTP API 閘道呼叫 lambda 函數時,如果能看到它的日誌就更好了。
更新1
我新增了一個名為的日誌組/aws/lambda/$FUNCTION_NAME
:
aws logs create-log-group --log-group-name /aws/lambda/$FUNCTION_NAME
並在其中加入日誌流:
aws logs create-log-stream --log-group-name /aws/lambda/$FUNCTION_NAME --log-stream-name /aws/lambda/$FUNCTION_NAME
然後我透過 API 呼叫 lambda 函數來產生一些日誌。現在檢查日誌:
aws logs get-log-events --log-group-name /aws/lambda/$FUNCTION_NAME --log-stream-name /aws/lambda/$FUNCTION_NAME
並得到響應:
{
"nextForwardToken": "f/7872383232323",
"events": [],
"nextBackwardToken": "b/8080823092093"
}
所以我沒有任何活動...嗯...
我在控制台中檢查了這個日誌組。那裡也是空的。
更新2
我CloudWatchFullAccess
向附加到此 lambda 函數的角色添加了策略:
aws iam attach-role-policy --role-name $roleName \
--policy-arn arn:aws:iam::aws:policy/CloudWatchFullAccess
呼叫API,重新檢查日誌,仍然為空。有趣的是,當我列出角色策略時,它顯示一個空數組。雖然,我只是在上面設定了CloudWatchFullAccess。
aws iam list-role-policies --role-name $roleName
{
"PolicyNames": []
}
答案1
當您建立 lambda 函數時,它應該有一個與之關聯的日誌組,但您的帳戶中似乎沒有任何日誌組。您可以嘗試使用該名稱建立新的日誌組'/aws/lambda/<function_name>'
,看看是否可以解決問題。我也會嘗試登入 Web 控制台以驗證您是否看到相同的問題。您也可以透過雲端手錶中的控制台建立日誌組。