使用AWS Elastic Beanstalk部署Django项目时遭遇NotAuthorizedError权限拒绝问题的解决方案咨询
我来帮你捋清楚这个问题的解决方向,你遇到的权限报错大概率是本地AWS凭证配置、IAM用户权限,或者EB CLI的凭证读取逻辑不匹配导致的,下面一步步拆解:
1. 先确认本地AWS凭证的配置状态
EB CLI默认会读取本地AWS CLI的凭证配置,你可以先检查凭证文件是否正确:
- Linux/macOS:查看
~/.aws/credentials文件 - Windows:查看
C:\Users\<你的用户名>\.aws\credentials文件
文件格式应该是这样的:
[default] aws_access_key_id = 你的IAM用户Access Key ID aws_secret_access_key = 你的IAM用户Secret Access Key
如果这个文件不存在或者内容不对,直接执行aws configure命令,按照提示依次输入Access Key ID、Secret Access Key、部署区域(比如us-east-1)和输出格式(选json即可),完成本地凭证配置。
2. 理解官方文档和YouTube教程的差异
AWS官方文档默认你已经完成了本地AWS凭证的基础配置(比如用aws configure),所以没特意提eb init时手动输入凭证的步骤;而YouTube教程里的eb init是交互式引导输入凭证,本质是两种配置EB CLI凭证的方式:
- 方式一:依赖本地已有的AWS CLI凭证(官方文档默认路径)
- 方式二:
eb init过程中手动输入凭证(教程里的操作)
你可以重新执行eb init -p python-3.8 django-tutorial,如果过程中弹出凭证输入提示,就填入你创建的IAM用户的对应信息;如果没提示,说明EB CLI已经读取了本地credentials文件,但可能这个文件里的用户权限不足。
3. 检查IAM用户的权限配置
你创建的IAM用户必须拥有Elastic Beanstalk部署所需的权限,最快捷的排查方式是给用户附加托管策略:
- 找到你创建的IAM用户,进入「权限」标签页,点击「添加权限」→「附加策略」
- 搜索并勾选
AWSElasticBeanstalkFullAccess策略(这个策略包含了EB部署所需的EC2、S3、CloudFormation等关联服务权限) - 保存配置后等待1-2分钟让权限生效
4. 验证配置并重新尝试部署
先确认当前凭证对应的用户是否正确,执行命令:
aws sts get-caller-identity
这个命令会返回当前凭证对应的用户ARN、账户ID和用户ID,核对是否是你创建的那个IAM用户。
之后重新执行:
eb init -p python-3.8 django-tutorial eb create django-env
如果还是报错,可以尝试更新EB CLI到最新版本:
pip install --upgrade awsebcli
额外排查点
- 如果你的AWS账户开启了MFA(多因素认证),EB CLI需要额外配置MFA token,新手可以先临时关闭MFA来排查问题,或者参考AWS文档配置带MFA的凭证。
- 确认部署区域和IAM用户的权限区域一致,比如用户权限没有限制区域,或者你选择的部署区域在用户权限允许范围内。
内容的提问来源于stack exchange,提问作者S Mev
相关产品推荐
相关产品推荐

