无法在CloudWatch中获取Lambda@Edge日志的问题求助
Lambda@Edge日志无法定位的排查方案
1. 明确日志存储区域规则
Lambda@Edge的日志不会仅存于你创建函数的us-east-1区域,而是存储在CloudFront处理请求的边缘节点所在区域。同时,边缘执行的日志会同步一份到us-east-1的CloudWatch Logs中,优先检查这个区域的对应日志组。
2. 核对日志组命名格式
Lambda@Edge的日志组有固定命名规则,别盲目搜索:
- 控制台测试生成的日志:
/aws/lambda/<你的函数名>(us-east-1区域) - 边缘执行同步来的日志:
/aws/lambda/us-east-1.<你的函数名>(即使是其他边缘区域执行的日志,也会用这个命名同步到us-east-1)
3. 验证函数实际执行状态
虽然授权逻辑生效,建议在Lambda代码里加一条明确的日志输出,比如:
console.log("Lambda@Edge Viewer Request触发 - 请求ID:", event.requestId);
重新发布函数到CloudFront,发起实际请求后,再去对应区域搜索这条日志内容,排除日志被遗漏的可能。
4. 检查IAM角色信任关系
除了日志操作权限,要确认Lambda执行角色的信任策略是否允许edgelambda.amazonaws.com作为信任实体,否则边缘环境下的函数可能没有权限写入日志。信任策略需包含:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "lambda.amazonaws.com", "edgelambda.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
5. 确认CloudFront关联配置
检查CloudFront分发中,Lambda@Edge的触发事件是否正确设置为Viewer Request,且关联的是函数的已发布版本(不能是$LATEST版本,Lambda@Edge要求使用已发布的版本),未发布版本无法在边缘正常执行。
内容的提问来源于stack exchange,提问作者ns123456
相关产品推荐
相关产品推荐

