使用IAM Role创建AWS SES SMTP凭据



我正在尝试使用我已附加到EC2实例的IAM角色来生成一组AWS SES SMTP凭据。但是,在使用Amazon提供的脚本从IAM角色的Secret_Key生成SMTP密码后,并使用IAM角色的Access_Key_ID,当尝试通过django.core发送电子邮件时。邮件,我得到错误(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,
)

我是如何生成密码的:

session = boto3.session.Session()
credentials = session.get_credentials().get_frozen_credentials()
region = requests.get('http://169.254.169.254/latest/dynamic/instance-identity/document').json()['region']
SMTP_PASSWORD = smtp_credentials_generate.calculate_key(secret_access_key=credentials.secret_key, region=region)

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-acchttps://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/

重要提示:IAM用户或角色用于创建SMTP凭据…

所以这是可能的还是不可能的?我做错了什么?

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

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

关于您引用的Amazon官方QA,它说您可以使用角色在web控制台中创建SMTP凭据.

最新更新