AWS Lambda@Edge调试

11

我目前正在开发一个lambda@edge函数。

我无法在CloudWatch或其他调试选项中找到任何日志。

当使用“测试”按钮运行lambda函数时,日志会被写入CloudWatch。

当CloudFront事件触发lambda函数时,日志不会被写入。

我非常确定事件触发是有效的,因为我可以看到它的结果。

有任何想法如何继续吗?

谢谢,
Yossi

2个回答

19

1)确保您已经允许Lambda将日志发送到CloudWatch。以下是您需要附加到Lambda函数使用的执行角色的AWSLambdaBasicExecutionRole策略。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "logs:CreateLogGroup",
                "logs:CreateLogStream",
                "logs:PutLogEvents"
            ],
            "Resource": "*"
        }
    ]
}

2) Lambda会在离函数执行位置最近的CloudWatch Logs区域中创建CloudWatch Logs日志流。每个日志流的名称格式为/aws/lambda/us-east-1.function-name,其中function-name是创建函数时为其指定的名称。请确保您在正确的REGION中检查CloudWatch日志。


7
请注意,"最接近函数执行位置"意味着最靠近发送请求给CloudFront的浏览器的地区。(技术上来说,“最优”的地区通常是地理上离浏览器最近的地区,但不一定如此。) - Michael - sqlbot
1
谢谢!它保存在“最接近位置区域”的CloudWatch日志中。感谢快速和有用的回答 :) - Yossi Ben David
我在整个区域的事情上遇到了困难。为了强调给其他人 - 你在/cloudwatch/home?region=eu-central-1#logs:看到的日志不是全部的日志。你需要在右上角的下拉菜单中积极切换区域以找到其他日志文件夹。 - VitalyB

1
如果有人觉得有用的话。 AWS 在你的函数名称前缀中加入了前缀,这破坏了内置的“CloudWatch一览”仪表板,并且Lambda@Edge在多个区域运行,这让我想创建此CloudWatch仪表板模板,可以为所有区域提供类似的标准监控,放在一个仪表板上。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接