CDK部署失败:S3 NoSuchKey错误求助(未使用Lambda场景)
问题:CodePipeline部署时出现Lambda关联的S3 NoSuchKey错误(未显式使用Lambda)
错误详情
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: 3160ff16-1e4a-4a38-b609-34820a1d9a8f)" (RequestToken: a8b5eecf-8c1d-d90f-e18f-390a05734944, HandlerErrorCode: InvalidRequest)
补充信息
- 使用
aws-cdk-lib版本:2.40.0 - 未在CDK代码中显式使用Lambda函数
- 已尝试通过
cdk deploy将资产复制到S3存储桶,问题未解决 - 该问题曾在CDK官方仓库上报,相关issue已关闭但无明确结论
解决提示
- 检查隐式Lambda资源:部分CDK构造(如CodePipeline的CloudFormation部署阶段)会自动创建Lambda作为自定义资源用于部署流程,需确认这些隐式Lambda对应的S3资产键是否存在。
- 验证CDK资产桶内容:查看CDK默认使用的资产存储桶(命名通常为
cdk-assets-<账户ID>-<区域>),确认是否缺失对应资产包。可手动将cdk.out目录下的本地资产上传到桶内的正确路径。 - 清理缓存重新生成资产:删除本地
cdk.out目录,执行cdk synth重新生成部署资产,再触发CodePipeline部署,避免旧缓存导致的路径不匹配。 - 检查CodePipeline源阶段:确认源阶段拉取的代码包包含完整的
cdk.out目录,避免代码提交时遗漏生成的资产文件。 - 升级CDK版本:2.40.0版本较旧,该问题可能在后续版本中修复,尝试升级到最新稳定版后重新部署。
内容的提问来源于stack exchange,提问作者zafar
相关产品推荐
相关产品推荐

