我目前正在研究 lambda@edge 函数。我在 CloudWatch 或其他调试选项上找不到任何日志。
使用“测试”按钮运行 lambda 时,日志将写入 CloudWatch。
当 CloudFront 事件触发 lambda 函数时,不会写入日志。
我 100% 肯定事件触发器有效,因为我可以看到它的结果。
知道如何进行吗?
提前谢谢,
约西
我目前正在研究 lambda@edge 函数。我在 CloudWatch 或其他调试选项上找不到任何日志。
使用“测试”按钮运行 lambda 时,日志将写入 CloudWatch。
当 CloudFront 事件触发 lambda 函数时,不会写入日志。
我 100% 肯定事件触发器有效,因为我可以看到它的结果。
知道如何进行吗?
提前谢谢,
约西
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 日志。
万一有人觉得它有用。AWS 为您的函数名称添加前缀,这打破了内置的“CloudWatch at a glance”仪表板,并且 Lambda@Edge 跨多个区域运行,这一事实激发了我创建此 CloudWatch 仪表板模板的灵感,该模板可为您在所有区域提供类似的标准监控一个仪表板。