Git Webhooks与AWS服务模板us-east-1部署失败,请求协助
解决跨区域部署CloudFormation模板时的NoSuchBucket错误
我来帮你梳理下这个问题的根源和解决办法——本质上是跨区域部署时CloudFormation模板依赖的资源路径不匹配导致的连锁失败,下面一步步拆解:
问题核心原因
你在us-east-2区域能正常运行模板,说明所有依赖资源(比如存Lambda代码包的S3桶、相关脚本文件)都在这个区域存在。但切换到us-east-1后:
CopyZips自定义资源需要从指定S3桶复制ZIP文件到部署区域的临时桶,但这个源桶只在us-east-2存在,us-east-1没有对应的桶,直接触发NoSuchBucket错误。- 因为
CopyZips创建失败,依赖它的KMS密钥资源也被系统取消创建,最终导致整个栈部署失败。
具体解决步骤
1. 定位模板中的源S3桶配置
打开你的CloudFormation模板,找到CopyZips这个AWS::CloudFormation::CustomResource资源,查看它的Properties字段,里面应该有SourceBucket和SourcePrefix的配置,这里的值指向的是us-east-2区域的S3桶。
2. 在us-east-1区域同步依赖资源
- 先在us-east-1区域创建一个新的S3桶(命名可以参考原桶规则,比如
your-template-resources-us-east-1)。 - 使用AWS CLI将us-east-2桶中的ZIP文件批量复制到us-east-1的新桶中:
aws s3 cp s3://your-original-us-east-2-bucket/path/to/zip-packages/ s3://your-new-us-east-1-bucket/path/to/zip-packages/ --recursive --region us-east-1
3. 修改CloudFormation模板的资源路径
- 将模板中
CopyZips的SourceBucket值替换为你在us-east-1创建的新桶名。 - 确认
SourcePrefix路径和原模板一致(保证复制的文件路径和模板预期匹配)。 - 同时检查KMS密钥配置:如果KMS密钥是用于加密S3对象的,确保它的区域是us-east-1,或者调整加密策略适配目标区域的资源。
4. 重新部署模板
保存修改后的模板,在us-east-1区域重新提交CloudFormation栈创建请求。此时CopyZips能找到对应的源桶和文件,后续的KMS密钥及其他资源就能正常创建了。
额外提醒
AWS多数资源是区域特定的,跨区域部署时一定要确保所有依赖资源(S3桶、Lambda代码、KMS密钥等)都在目标区域存在或能被正确访问。如果模板中有硬编码的区域信息,记得统一替换为目标区域的配置。
内容的提问来源于stack exchange,提问作者Viet
相关产品推荐
相关产品推荐

