部署CloudFormation模板遇S3 NoSuchKey错误求助
问题排查:CloudFormation部署Lambda时S3 NoSuchKey错误
错误信息
Resource handler returned message: "Error occurred while GetObject. S3 Error Code: NoSuchKey. S3 Error Message: The specified key does not exist. (Service: Lambda, Status Code: 400, Request ID:)" (RequestToken:, HandlerErrorCode: InvalidRequest)
核心问题
Lambda资源无法在指定S3桶中找到配置的guardduty_to_acl_lambda_wafv2.zip代码包,以下是针对性排查步骤:
1. 核对S3对象路径与CloudFormation配置
- 确认
ArtifactsBucket参数指向的桶与你提供的截图中S3桶完全一致(S3桶名大小写敏感,不能有拼写错误) - 检查
ArtifactsPrefix参数值:- 如果前缀格式为
xxx/,拼接后的S3Key应为xxx/guardduty_to_acl_lambda_wafv2.zip,需确认该路径下确实存在目标zip包 - 如果前缀未加末尾斜杠(如
xxx),会导致拼接后路径变成xxxguardduty_to_acl_lambda_wafv2.zip,这种情况需修正前缀格式,或在YAML中手动添加斜杠:S3Key: !Sub ${ArtifactsPrefix}/guardduty_to_acl_lambda_wafv2.zip
- 如果前缀格式为
- 直接在S3控制台复制目标zip包的对象键,与CloudFormation中
S3Key拼接结果完全比对,确保无路径、大小写、后缀错误
2. 验证CloudFormation参数传递
部署栈时,确认ArtifactsBucket和ArtifactsPrefix参数的输入值正确,没有遗漏或多余字符,比如前缀是否误填成了桶名的一部分。
3. 检查权限配置
- 确认CloudFormation执行角色(或Lambda服务角色)拥有
s3:GetObject权限,能访问目标S3桶及对应对象 - 检查S3桶策略/对象ACL,确保上述角色被授权读取该zip包
4. 核对YAML配置细节
你的Lambda资源配置中,S3Key的拼接逻辑是关键:
Code: S3Bucket: !Sub ${ArtifactsBucket} S3Key: !Sub ${ArtifactsPrefix}guardduty_to_acl_lambda_wafv2.zip
- 确保
ArtifactsPrefix变量已正确定义并传递到栈中,若前缀为空,需确认zip包直接存放在S3桶根目录下
内容的提问来源于stack exchange,提问作者NubeProgram
相关产品推荐
相关产品推荐

