【发布时间】:2019-11-21 04:50:06
【问题描述】:
我将查看器请求和源响应 Lambda 函数部署到 CloudFront 分配,它们正在触发,但未记录到 CloudWatch。我花了相当多的时间研究这个主题,并浏览了其他帖子的所有建议,包括:
- 检查所有区域的日志,因为我知道它们 CloudWatch 日志将在 labmda@edge 函数运行的区域中创建。没有任何日志。
- 我已检查 AWSServiceRoleForCloudFrontLogger 角色是否存在。
有趣的是,当我故意将错误编码到一个 Lambda 函数中时,我确实会在名为 /aws/cloudfront/LambdaEdge/<cloudfront distribution id> 的组中创建包含错误日志的日志,但是此处的 console.log 语句没有输出。
在我的一生中,我无法弄清楚如何启用将所有请求(成功和失败)记录到 CloudWatch,其中包含使用 console.log() 的调试语句。
AWSServiceRoleForCloudFrontLogger 包含单个策略 AWSCloudFrontLogger:
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": "arn:aws:logs:*:*:/aws/cloudfront/*"
}
]
}
编辑:
以下是 AWS 支持建议的 AWS 角色。我可以确认这有效并解决了问题。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}```
【问题讨论】:
-
你能分享你的角色 AWSServiceRoleForCloudFrontLogger 吗?
-
@matesio 当然,在上面添加。
-
AWS 支持建议的策略是否意味着附加到将
logger.cloudfront.amazonaws.com作为受信任实体的新角色?如果我理解正确,这是对默认 AWSServiceRoleForCloudFrontLogger 角色的一种扩展替代,对吧? -
为了回答我之前的建议,需要为 Lambda 的执行角色设置建议的策略,然后日志开始工作!
-
非常感谢,他们真的应该在浪费了很多时间的文档中强调这一点。
标签: amazon-web-services aws-lambda amazon-cloudfront aws-lambda-edge