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

使用eb deploy部署Django应用时遭遇NotAuthorizedError权限拒绝

AWS Elastic Beanstalk部署Django应用权限拒绝问题排查

核心错误

ERROR: NotAuthorizedError - Operation Denied. Access Denied

环境与问题背景

  • 环境:AWS Elastic Beanstalk托管的Django应用
  • 问题:此前eb deploy部署QA环境完全正常,突然触发权限拒绝错误;已确认凭证、密钥对未修改,仅更新了requirements.txt中的依赖包;eb ssh可正常使用。

调试补充信息

执行eb deploy --debug时捕获到以下异常链:

raise NotFoundError('Object not found.')
ebcli.objects.exceptions.NotFoundError: Object not found.

raise error_class(parsed_response, operation_name)
botocore.exceptions.ClientError: An error occurred (AccessDenied) when calling the ListMultipartUploads operation: Access Denied

raise NotAuthorizedError('Operation Denied. ' + message)
ebcli.objects.exceptions.NotAuthorizedError: Operation Denied. Access Denied

排查与修复方案

1. 校验S3存储桶权限

从调试日志看,核心触发点是S3的ListMultipartUploads操作被拒绝,需检查:

  • 当前使用的AWS凭证(~/.aws/credentials或环境变量配置)是否拥有Elastic Beanstalk关联S3桶的s3:ListMultipartUploads、s3:PutObject、s3:GetObject权限。
  • 检查该S3桶的桶策略,确认未误添加拒绝规则,或移除了部署所需的权限条目。

2. 检查IAM角色权限

Elastic Beanstalk部署依赖指定的IAM角色(默认如aws-elasticbeanstalk-ec2-role),需确认:

  • 登录IAM控制台,找到对应角色,检查附加的权限策略是否包含AWSElasticBeanstalkFullAccess及必要的S3权限(如AmazonS3FullAccess或精细化S3权限)。
  • 若使用临时凭证,确认凭证未过期(部分场景下凭证会自动轮换)。

3. 清理S3未完成分段上传

NotFoundError结合ListMultipartUploads错误,大概率是S3桶中存在残留的未完成分段上传,导致部署流程异常:

  • 登录S3控制台,找到Elastic Beanstalk关联的存储桶,进入「管理」→「分段上传」,清理所有未完成的上传任务。
  • 或用AWS CLI批量处理:
    # 列出所有未完成的分段上传
    aws s3api list-multipart-uploads --bucket <你的EB关联桶名>
    # 终止指定上传(替换占位符)
    aws s3api abort-multipart-upload --bucket <桶名> --key <对象键> --upload-id <上传ID>
    

4. 重置本地EB配置

本地EB环境配置可能损坏,尝试重置:

  • 删除项目根目录下的.elasticbeanstalk文件夹。
  • 重新执行eb init,选择正确的应用、环境及AWS区域,完成后再执行eb deploy。

5. 排除依赖包影响

虽然仅更新了依赖包,但部分AWS相关依赖可能隐含权限需求,可临时回滚到之前的requirements.txt版本,重新部署验证是否恢复正常,以此排除依赖包的影响。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 11:45:36