AWS Elastic Beanstalk执行eb create部署时报NotAuthorizedError如何解决
根因定位
从debug日志可以确认核心报错为:执行S3的ListMultipartUploads接口时权限不足,应用型负载均衡对应的Platform ARN报错为EB CLI版本过低无法识别新平台ARN格式导致。
1. 权限错误修复方案
找到你执行eb create命令使用的IAM用户,给该用户附加对应权限:
- 快速验证:直接附加AWS托管策略
AWSElasticBeanstalkFullAccess到IAM用户,即可覆盖所有Beanstalk部署需要的权限 - 自定义最小权限策略参考如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListMultipartUploadParts", "s3:ListBucketMultipartUploads", "s3:PutObject", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::elasticbeanstalk-us-west-2-395403681453", "arn:aws:s3:::elasticbeanstalk-us-west-2-395403681453/*" ] }, { "Effect": "Allow", "Action": [ "elasticbeanstalk:*", "ec2:RunInstances", "elasticloadbalancing:CreateLoadBalancer", "autoscaling:CreateAutoScalingGroup", "cloudformation:*" ], "Resource": "*" } ] }
应用型负载均衡的ARN报错直接升级本地EB CLI到最新版本即可解决。
2. 特定用户操作错误日志查询
通过AWS CloudTrail即可查询:
- 打开CloudTrail控制台,进入「事件历史」页面
- 筛选条件选择「用户名」,输入对应IAM用户名,调整时间范围到你执行命令的时间段
- 所有该用户发起的API请求的错误码、请求参数、返回结果均可在事件详情中查看。
3. 已有访问凭证额外需要的配置
除IAM权限外,还需完成以下配置:
- 确认本地EB CLI配置的部署区域和资源所在区域一致,你日志中对应区域为us-west-2,可执行
eb init --region us-west-2重新指定区域 - 确认账号在对应区域的EC2、ElasticBeanstalk配额足够,新账号默认配额较低,不足可提交工单申请提升
- 确认已创建ElasticBeanstalk服务角色和EC2实例配置文件,首次访问Beanstalk控制台时会自动创建,无需手动操作。
4. 其他必要配置调整
- 若需要使用应用型负载均衡,可在执行
eb create时手动指定平台ARN,避免CLI识别错误,格式为:eb create django-env --platform "arn:aws:elasticbeanstalk:us-west-2::platform/64bit Amazon Linux 2 v3.3.4 running Python 3.8" - 确认ElasticBeanstalk对应的S3存储桶没有附加限制访问的桶策略,若有需要放开对应IAM用户的读写权限
- 部署包大于50MB时,确保已开启S3分段上传权限,本次报错本质就是分段上传相关权限缺失导致。
内容的提问来源于stack exchange,提问作者S Mev
相关产品推荐
相关产品推荐

