我有一个在AWS ECS Fargate容器中运行的Django应用程序,我想设置从Django发送邮件的可能性.使用built in function,这并不太难.我已在AWS上设置了SES,并向我的Fargate任务的任务角色授予了对SES的完全访问权限.

据我所知,AWS会自动为任务角色生成凭据(例如,请参阅here.要在Django中设置SES邮件功能,我需要EMAIL_HOST_USER和密码,在AWS SES的情况下,EMAIL_HOST_USER将是AWS_ACCESS_KEY_ID,密码将是该用户的密钥.

现在我有点困惑了,因为我实际上想使用Fargate任务的任务角色来发送邮箱.我是否必须以某种方式获得Django代码中的凭据并设置环境变量?或者我可以把它们留空,然后Fargate通过它的任务角色自动连接到SES.

推荐答案

您正在使用SMTP库发送邮箱.分配给您的Fargate任务的AWS IAM角色只能访问标准的AWS SES API,而不能访问SMTP API.您有两个 Select :

  1. 不使用Django SMTP支持,而是通过AWS API使用Boto3库到send SES emails.这将自动使用您分配给ECS任务的IAM角色.

  2. 创建一个拥有SMTP credentials的IAM用户,并拥有通过SMTP发送SES邮箱的权限.然后配置Django使用这些凭据通过SES SMTP endpoint发送邮箱.您可以将凭据存储在AWS参数存储或AWS Secrets Manager中,并通过环境变量将凭据inject those credentials存储到ECS容器中.

Django相关问答推荐

覆盖保存以创建范围的多个对象()

Django:作为模型中的列表元素的字段

如何在Django模板中为无效词典查找打开异常?

如何在 Django 测试中发送带有图像字段查询参数的 POST 请求

DecimalField 验证错误,返回不正确的值 Django

Pytest-django - 测试创建和传递所需的用户对象

文档中的 Mongoengine creation_time 属性

删除所有表的django命令是什么?

base.html 中的 Django 变量

AngularJS + Django Rest Framework + CORS(CSRF Coo​​kie 没有出现在客户端)

在 django 模板中访问元组

has_object_permission 和 has_permission 有什么区别?

Celery 和 Django 简单示例

django 在 unittest 测试中设置环境变量

Django 发送邮箱

AUTH_USER_MODEL 指的是尚未安装和创建的模型 .. AbstractUser 模型无法登录

django 应用基于条件的样式类

Django 模型(1054,Unknown column in 'field list')

django select_related - 何时使用它

Django 多项 Select 字段/复选框 Select 多个