我一直在徒劳地尝试查看lambda函数的日志。无论我看到什么:
为清楚起见,lambda函数正常运行。我根本看不到日志。
我已经多次重新创建该函数,以确保不是我意外禁用了禁用日志记录的设置。
我的步骤:
testbucket
到thumbnails.zip
。aws lambda update-function-code --function-name transcode-v2 --s3-bucket mytestbucket --s3-key thumbnails.zip
发布我的lambda函数。当我进入云日志时,我总是看到此消息:There was an error loading Log Streams. Please try again by refreshing this page.
我尝试过两次重新创建该函数,但这不能解决。
有人知道这是怎么回事吗?该功能似乎在测试中正常工作(意味着,我在测试日志对话框中看到了日志),以及当我从命令行调用时。但是,除了该错误之外,没有任何东西进入云日志页面。
我可以看到调用是从AWS触发的。
答案 0 :(得分:1)
创建AWS角色后,您必须提供供Lambda函数使用的 IAM角色。与该角色相关联的权限将授予对Lambda函数所需的AWS服务和资源的访问。
有一个默认的AWSLambdaBasicExecutionRole
提供:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "*"
}
]
}
这些权限允许Lambda函数将日志信息写入Amazon CloudWatch Logs。
还有其他可用的角色,例如AWSLambdaExecute
:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:*"
],
"Resource": "arn:aws:logs:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:PutObject"
],
"Resource": "arn:aws:s3:::*"
}
]
}
因此,请使用这些预先提供的角色之一,或向您的Lambda函数使用的角色添加类似的权限。