Serverless部署突发异常:跨区域SSM权限错误排查求助
排查方案
检查Serverless本地缓存与全局配置
- 清理项目根目录下的
.serverless缓存文件夹,以及用户主目录下的~/.serverless目录,避免旧配置残留 - 执行
serverless config list查看全局配置,确认是否有默认区域或state相关的全局设置覆盖了项目配置
- 清理项目根目录下的
验证AWS本地配置的默认区域
- 检查
~/.aws/config和~/.aws/credentials文件,确认默认区域是否被设为us-east-1,Serverless会优先继承这个配置 - 部署时临时指定目标区域环境变量,比如执行
AWS_REGION=你的目标区域 serverless deploy,测试是否还会访问us-east-1
- 检查
排查IAM权限的深层限制
- 除了用户的身份策略,检查该IAM用户的权限边界和AWS组织的服务控制策略(SCP),确认是否存在对us-east-1区域SSM操作的限制
- 确认用户策略中是否明确允许(或未拒绝)在us-east-1区域执行
ssm:GetParameter操作,哪怕你的项目不用这个区域,Serverless可能临时需要访问该参数
回退Serverless Framework版本
- 若近期自动升级过Serverless,回退到之前能正常部署的版本,比如执行
npm install -g serverless@x.x.x,验证是否是版本更新导致的逻辑变化
- 若近期自动升级过Serverless,回退到之前能正常部署的版本,比如执行
检查部署命令与CI/CD配置
- 确认部署命令是否通过
--region参数隐式指定了us-east-1,命令行参数优先级高于yml配置 - 若使用CI/CD工具,检查管道中的部署脚本是否硬编码了区域参数或相关环境变量
- 确认部署命令是否通过
排查项目环境变量
- 检查项目根目录下的
.env文件,或系统环境变量中是否存在SERVERLESS_STATE_S3_BUCKET、AWS_DEFAULT_REGION等变量,这些会覆盖yml中的配置
- 检查项目根目录下的
临时绕过验证(用于定位问题)
- 在us-east-1区域手动创建SSM参数
/serverless-framework/state/s3-bucket,值设为你自定义的S3 Bucket ARN,执行部署看是否成功,以此确认是否是参数缺失导致的问题
- 在us-east-1区域手动创建SSM参数
内容的提问来源于stack exchange,提问作者Christian Nally
相关产品推荐
相关产品推荐

