Lambda Function获取S3存储桶对象报错后超时故障求助
根因定位
从提供的CloudWatch日志可以直接确定:报错发生在访问S3存储桶的阶段,并非访问S3前的逻辑触发超时。日志已经成功输出了文件对应的TaskId、来源等前置逻辑的执行结果,后续在调用S3 GetObject接口时触发了网络连接超时,请求被主动取消。
可执行排查方案
- 检查VPC S3端点配置
如果Lambda部署在VPC内且未分配公网IP,必须配置S3网关端点/接口端点才能正常访问S3:- 确认S3网关端点已关联Lambda所在子网的路由表,且路由表存在指向S3前缀列表的路由条目
- 如果使用S3接口端点,确认端点安全组放行了Lambda安全组的443端口出站请求
- 核查Lambda执行角色权限
确认Lambda执行角色的IAM策略包含s3:GetObject权限,且资源字段匹配当前故障环境的S3存储桶ARN、对象路径,未错写为其他环境的配置 - 校验S3存储桶访问控制规则
确认桶策略未禁止Lambda执行角色的访问请求,也未设置仅允许特定VPC、IP段访问的限制规则 - 调整Lambda超时阈值测试
当前请求执行时长为534秒,若Lambda配置的超时阈值小于实际需要的执行时长,会主动取消运行中的请求,可先临时将超时调整至最大15分钟验证是否为阈值设置过低导致 - 确认S3区域配置一致性
确认Lambda代码中调用S3时指定的区域,与目标存储桶实际所在区域完全一致,跨区域访问延迟过高也会触发连接超时
内容的提问来源于stack exchange,提问作者Thiago Rodrigues
相关产品推荐
相关产品推荐

