Aws-Cli
如何使用 aws cli 查看 aws lambda 函式生成的日誌
我有用 golang 編寫的 lambda 函式。我通過呼叫 HTTP API 網關來執行它。它工作正常,但我希望看到由我的 golang 程序生成的用 stderr 編寫的日誌。
我試過這個
aws logs describe-log-groups
但它顯示空數組:
{ "logGroups": [] }
實際上,只有在沒有 API 網關的情況下直接呼叫 lambda 函式時,我才能看到日誌,如下所示:
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": [] }
當您創建一個 lambda 函式時,它應該有一個與之關聯的日誌組,但看起來您的帳戶中沒有任何日誌組。您可以嘗試使用該名稱創建一個新的日誌組,
'/aws/lambda/<function_name>'
看看是否能解決問題。我還會嘗試登錄到 Web 控制台以驗證您在那裡看到相同的問題。您也可以通過雲手錶中的控制台創建日誌組。