我已经将viewer-request和origin-response Lambda函数部署到CloudFront分配中,它们正在运行,但没有记录到CloudWatch。我花了很多时间研究这个问题,并且运行了所有其他帖子的建议,包括:
- 检查所有区域的日志,因为我知道它们的CloudWatch日志将在lambda@edge函数运行的区域创建。但在任何一个区域都没有找到日志。
- 我已确认AWSServiceRoleForCloudFrontLogger角色存在。
有趣的是,当我有意在其中一个Lambda函数中编写错误时,我确实在一个名为/aws/cloudfront/LambdaEdge/<cloudfront distribution id>
的组中创建了错误日志,但是这里没有console.log语句的输出。
就我的生活而言,我无法想象该如何启用对所有请求的记录,包括成功和失败,并将调试语句使用console.log()记录到CloudWatch。
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:*:*:*"
]
}
]
}```
logger.cloudfront.amazonaws.com
作为受信任实体吗?如果我理解正确,这是默认的AWSServiceRoleForCloudFrontLogger角色的一种扩展替代,对吗? - mj3c