You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS SAM执行sam deploy --guided失败报ROLLBACK_COMPLETE如何解决

根因分析
  • 最常见原因是当前AWS账号所属区域开启了S3全局公有访问拦截配置,低版本SAM CLI默认生成的部署 artifacts 存储桶会附带公开访问相关的策略片段,和全局配置冲突导致存储桶策略创建失败,触发CloudFormation栈整体回滚
  • 第二常见原因是使用的AdministratorAccess角色附加了限制S3策略创建的权限边界(Permission Boundary),或所属AWS组织配置了禁止创建宽松S3策略的服务控制策略(SCP),两类策略优先级高于身份自身的权限配置,会拦截存储桶策略创建操作
  • 少数情况是同区域之前部署过同名SAM项目,残留了冲突的存储桶资源,新部署的策略和已有存储桶的配置不兼容
修复步骤
  1. 清理残留失败栈
    登录AWS CloudFormation控制台,找到状态为ROLLBACK_COMPLETE的对应部署栈,执行删除操作,避免后续部署出现资源冲突
  2. 调整SAM部署参数,强制使用私有部署桶
    执行部署命令时追加--s3-private-buckets参数,完整命令为:
    sam deploy --guided --s3-private-buckets
    
    该参数会强制SAM生成私有存储桶配置,不会携带公开访问相关的策略片段,直接避开和全局S3公有访问拦截规则的冲突。如果需要长期生效,可以在项目根目录的samconfig.toml的[default.deploy.parameters]段落下新增配置项:s3_private_buckets = true
  3. 升级SAM CLI到最新版本
    旧版本SAM CLI存在默认存储桶策略不符合AWS最新S3安全规范的问题,执行以下命令升级即可:
    pip install aws-sam-cli --upgrade
    
  4. 排查账号层面策略限制
    • 检查当前使用的IAM角色是否附加了权限边界,确认边界规则中没有拒绝s3:PutBucketPolicy操作的配置
    • 如果是企业组织下的子账号,确认组织管理员没有配置禁止创建宽松S3存储桶策略的SCP规则
  5. 清理残留存储桶(可选)
    如果是历史部署残留的存储桶导致的冲突,登录S3控制台找到对应同名存储桶,清空对象后删除存储桶,再重新执行部署即可

内容的提问来源于stack exchange,提问作者devcrazy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 15:06:04