更新 1

更新 1

我有一个用 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 控制台以验证您是否在那里看到相同的问题。您还可以通过 Cloud Watch 中的控制台创建日志组。

相关内容