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

Django REST API部署AWS EB时遭遇rds:DescribeDBEngineVersions权限错误

我来帮你一步步排查这两个棘手的问题,先从部署后遇到的认证错误说起,再解决后续的RDS权限问题:

问题1:部署到AWS Elastic Beanstalk后出现 {"detail": "Authentication credentials were not provided."}

本地运行正常但生产环境报错,大概率是DRF的认证配置、请求凭证传递或者EB的代理设置出了问题,你可以按下面的步骤排查:

  • 检查DRF全局/视图级别的认证配置
    打开你的settings.py,查看REST_FRAMEWORK里的DEFAULT_AUTHENTICATION_CLASSES和DEFAULT_PERMISSION_CLASSES。比如如果本地依赖会话认证(SessionAuthentication),但生产环境用API请求时没带Cookie或Token,就会触发这个错误。

    • 如果是需要开放部分匿名访问的视图,记得在对应视图里显式设置:
      from rest_framework.permissions import AllowAny
      
      class YourView(APIView):
          permission_classes = [AllowAny]
          # ... 其他代码
      
    • 如果用Token/JWT认证,要确保请求头里正确携带Authorization: Token <your-token>或者Authorization: Bearer <your-jwt-token>。
  • 确认EB环境变量配置
    本地的SECRET_KEY、数据库配置、JWT密钥等环境变量,要在EB控制台的“配置 > 软件”里同步设置。如果DRF的认证依赖这些密钥(比如JWT签名验证),密钥不一致会直接导致凭证验证失败。

  • 调整EB代理与请求头设置
    如果你的EB环境用了应用负载均衡(ALB),需要确保代理正确转发请求头。在settings.py里添加以下配置:

    USE_X_FORWARDED_HOST = True
    SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
    

    这能让DRF识别到真实的请求协议和主机,避免因为代理层导致的认证逻辑异常。

  • 直接测试API端点
    用curl或Postman直接请求EB的API,验证凭证是否有效:

    curl -H "Authorization: Token your-valid-token" https://your-eb-app-domain.com/api/your-endpoint/
    
问题2:推送代码至AWS EB时出现 Service:AmazonRDS, is not authorized to perform: rds:DescribeDBEngineVersions

这个是Elastic Beanstalk的服务角色权限不足导致的——EB在部署过程中需要调用RDS的API来检查数据库引擎版本,所以得给对应的IAM角色添加上权限:

  • 找到EB的服务角色
    登录AWS控制台,进入IAM服务,在“角色”列表里找到你的EB环境对应的服务角色(通常名字是aws-elasticbeanstalk-service-role,如果是自定义角色,你可以在EB控制台的“配置 > 权限”里查看)。

  • 创建并附加RDS权限策略
    给这个角色创建一个自定义IAM策略,内容如下:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": "rds:DescribeDBEngineVersions",
                "Resource": "*"
            }
        ]
    }
    

    如果你想更安全,可以把Resource指定为你EB环境关联的RDS实例ARN,而不是通配符*。

  • 验证角色关联并重新部署
    确认EB环境确实使用了这个更新后的角色,然后重新推送代码到EB,流水线应该就能正常执行了。

另外,别忘了检查EB环境的Python版本是否设置为3.6,版本不匹配也可能引发各种隐性问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:16:19