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

如何在运行于AWS ECS Fargate容器的Django中使用AWS SES发送邮件?

在ECS Fargate上用Task Role配置Django SES邮件发送

不需要手动设置EMAIL_HOST_USER和密码,也不用在代码里手动获取凭证注入环境变量——Fargate的Task Role会自动为容器提供临时AWS凭证,Django可以借助AWS SDK自动读取这些凭证来调用SES服务。

具体配置步骤如下:

  • 安装依赖包
    首先需要安装boto3和django-ses(或者用Django 3.2+内置的SES后端):

    pip install boto3 django-ses
    
  • 修改Django配置文件(settings.py)
    替换默认的邮件后端为SES专用后端,可选两种方式:

    # 方式1:使用django-ses第三方库的后端
    EMAIL_BACKEND = 'django_ses.SESBackend'
    
    # 方式2:使用Django官方内置的SES后端(仅Django 3.2及以上版本支持)
    # EMAIL_BACKEND = 'django.core.mail.backends.ses.SESBackend'
    
    # 可选:手动指定SES区域(如果自动识别有问题)
    AWS_SES_REGION_NAME = '你的SES部署区域,比如us-east-1'
    AWS_SES_REGION_ENDPOINT = 'email.us-east-1.amazonaws.com'
    
  • 确认Task Role权限
    你的Task Role已经配置了SES完全访问权限,确保策略中包含ses:SendEmail和ses:SendRawEmail这两个核心权限(完全访问策略默认包含)。

  • 测试邮件发送
    可以通过Django Shell快速验证:

    from django.core.mail import send_mail
    
    send_mail(
        '测试邮件标题',
        '这是通过Fargate Task Role发送的测试内容',
        '你的SES验证发件邮箱@xxx.com',
        ['收件邮箱@yyy.com'],
        fail_silently=False,
    )
    

原理说明

Fargate会自动在容器内部设置AWS_CONTAINER_CREDENTIALS_RELATIVE_URI环境变量,boto3(以及依赖它的Django SES后端)会自动读取该变量指向的路径,获取临时的AWS访问凭证,整个过程完全自动,不需要手动配置任何密钥信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 16:22:20