使用 IAM 角色创建 AWS SES SMTP 凭证

问题描述

我正在尝试使用附加到 EC2 实例的 IAM 角色来生成一组 AWS SES SMTP 凭证。但是,在使用 Amazon 提供的脚本从 IAM 角色的 Secret_Key 生成 SMTP 密码并使用 IAM 角色的 Access_Key_ID 后,尝试通过 django.core.mail 发送电子邮件时,出现错误 {{1 }}。

这就是我发送电子邮件的方式:

(535,b'Authentication Credentials Invalid')

我如何生成密码:

#django.core.mail
EMAIL_USE_TLS = True
EMAIL_HOST = 'email-smtp.us-east-1.amazonaws.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = credentials.access_key
EMAIL_HOST_PASSWORD = SMTP_PASSWORD

send_mail(
    'Subject here','Here is the message.','from@example.com',['to@example.com'],fail_silently=False,)

SMTP 密码生成脚本在这里https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html

通过一些研究,我发现这些链接表明您不能使用 IAM 角色来使用生成 SMTP 凭证:

https://serverfault.com/questions/584789/is-it-possible-to-send-email-via-the-amazon-ses-smtp-service-with-a-iam-role-acc https://hector.dev/2015/01/17/sending-e-mail-via-amazon-ses-over-smtp-with-iam-roles.html

不过,亚马逊官方QA说有可能: https://aws.amazon.com/premiumsupport/knowledge-center/ses-create-smtp-credentials/

重要提示:您用于创建 SMTP 凭证的 IAM 用户或角色...

那么有可能吗?我做错了什么?

解决方法

https://docs.aws.amazon.com/ses/latest/DeveloperGuide/smtp-credentials.html

不要使用临时 AWS 凭证来派生 SMTP 凭证。 Amazon SES SMTP 接口不支持从临时安全凭证生成的 SMTP 凭证。

关于您引用的 Amazon 官方 QA,是说您可以使用该角色在网络控制台中创建 SMTP 凭证