我有一个Django应用程序在AWS ECS Fargate容器中运行,并希望设置从Django发送邮件的可能性。使用built in function并不太困难。我已经在AWS上设置了SES,并授予我的Fargate任务的任务角色对SES的完全访问权限。
据我所知,AWS会自动为任务角色生成凭证(例如,请参阅here。要在Django中设置SES邮件功能,我需要EMAIL_HOST_USER
,在AWS SES中,它将是AWS_ACCESS_KEY_ID和密码,这将是该用户的密钥。
现在我有点困惑,因为我实际上想使用Fargate任务的Task角色来发送电子邮件。我必须以某种方式获取Django代码中的凭据并设置环境变量吗?或者我可以将它们留空,然后Fargate通过其Task Role自动连接到SES。
1条答案
按热度按时间pgky5nke1#
您正在使用SMTP库发送电子邮件。分配给您的Fargate任务的AWS IAM角色只能访问标准AWS SES API,而不能访问SMTP API。您有两个选项:
1.不使用Django SMTP支持,而是通过AWS API使用Boto3库到send SES emails。这将自动使用您分配给ECS任务的IAM角色。
1.创建一个具有SMTP credentials的IAM用户,并允许通过SMTP发送SES电子邮件。然后使用这些凭据配置Django通过SES SMTP endpoint发送电子邮件。您可以将凭据存储在AWS参数存储或AWS Secrets Manager中,并通过环境变量将inject those credentials存储到ECS容器中。