Aws-Cli

如何使用 aws cli 查看 aws lambda 函式生成的日誌

  • July 26, 2019

我有用 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 控制台以驗證您在那裡看到相同的問題。您也可以通過雲手錶中的控制台創建日誌組。

引用自:https://serverfault.com/questions/975870