无法使用AWS Lambda函数将日志(文本输出)记录到CloudWatch

ffx*_*sam 58 amazon-web-services amazon-cloudwatch aws-lambda

我正在尝试设置一个Lambda函数,该函数会在文件上传到S3存储桶时对其进行处理.我需要一种方法来查看console.log上传文件时的输出,但我无法弄清楚如何将我的Lambda函数链接到CloudWatch.

我通过查看context我的日志组/aws/lambda/wavToMp3和日志流的对象来计算2016/05/23/[$LATEST]hex_code_redacted.所以我在CloudWatch中创建了该组和流,但没有记录任何内容.

hoo*_*noh 129

更新策略后,您似乎必须更新功能的设置以刷新所有作业实例以阅读新策略.

因此,如果您在IAM中更新角色策略后只需单击Lambda控制台中的"测试"按钮,则缓存的Lambda实例仍将具有旧角色权限,因此您仍将看不到将任何日志写入Cloudwatch日志.

只需将您的超时更改一秒钟,然后单击"保存并测试"按钮,您就会开始在Cloudwatch中查看日志.

  • 谢谢!我被困在这一个小时. (13认同)
  • 这是我对正确答案的投票.如果您遇到此AWS错误,文档中的任何内容都无济于事. (6认同)
  • 谢谢。。。这也是我被困的地方。 (2认同)
  • 当然,这在AWS中会是一件事情,呃 (2认同)
  • 如果这个答案可以合并到已接受的答案中,那就太好了 - 它们是解决问题所需的同一过程的一部分。 (2认同)

Shi*_*his 93

对于lambda函数来创建日志流并将日志发布到cloudwatch,lambda执行角色需要具有以下权限.

{
    "Statement": [
        {
            "Action": [
                "logs:CreateLogGroup",
                 "logs:CreateLogStream",
                 "logs:PutLogEvents"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:logs:*:*:*"
        }
    ]
} 
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅以下AWS文档: http://docs.aws.amazon.com/lambda/latest/dg/intro-permission-model.html#lambda-intro-execution-role

  • 请注意以下hoonoh的答案,我需要在实际应用此新策略之前更新设置. (15认同)
  • 我来到这里是因为我遇到了同样的问题,在我的情况下,错误是"找不到日志组".在这里添加它,所以任何其他人谷歌搜索它将找到这个答案 (3认同)

小智 16

对于lambda函数来创建日志流并将日志发布到cloudwatch,lambda执行角色需要具有以下权限

我已经拥有这些权限但它没有用.

只需将您的超时更改一秒钟,然后单击"保存并测试"按钮,您就会开始在Cloudwatch中查看日志.

我更改了超时,保存和日志仍然无法正常工作.

我分配了另一个角色,日志仍然无效.

最终为我工作的是单击"创建自定义角色",然后单击"允许".这就是它和日志开始生成但由于我不想使用新角色但我现有的角色,我之后只是分配了我现有的角色并且它起作用了.所以从技术上讲,我应该回到原来的配置,但是现在无法正常工作.去搞清楚.

  • 同样在这里,花了大约 2 个小时试图解决这个问题。对 lambda-to-cloudwatch 设置的错误、绝对不透明和不直观感到失望。谢谢! (2认同)
  • 这太糟糕了。应该有人认真地与 AWS Lambda 竞争。就像他们没有动力去改善服务一样。 (2认同)

jel*_*csc 10

2020 年 7 月更新!!

日志可能不在 us-east-1 中,尝试在不同区域寻找 lambda 边缘日志!

  • 谢谢——我也遇到过这种情况。尽管所有 AWS 文档都说日志最终将位于与 Lambda 函数执行相同的区域,但我的日志位于伦敦(我本地),路径前缀为“/aws/lambda/us-east-1”。...去搞清楚! (2认同)

Vic*_*Vic 6

显然,日志记录发生的另一个必要条件是 Lambda 函数必须指示完成;例如在 Python 上下文中,处理程序必须返回None.