django aws ses boto3 - 为什么不同的 IAM 凭据用于 verify_email_identity
django aws ses boto3 - why different IAM credentials are used for verify_email_identity
我正在尝试使用 django boto3 aws ses 来发送电子邮件。我注意到 verify_email_identity 使用不同的 IAM 凭据,这个集合实际上在哪里?我没有在我的 Django 应用程序中设置它。
client = boto3.client('ses', region_name='us-east-1')
client.verify_email_identity(EmailAddress="bounce@example.com") -> IAM user B
conn = mail.get_connection('django_amazon_ses.EmailBackend') -> IAM user A
email = EmailMessage(
'Subject', 'Content', 'bounce@example.com', ['to@example.com'],
headers={'From': 'from@example.com'},
)
self.assertGreater(conn.send_messages([email]), 0) -> IAM user A
IAM 用户 A 拥有所有权限(如下所示),但 IAM 用户 B 没有。对我来说很奇怪为什么它使用 IAM 用户 B,这怎么可能?我检查了我所有的代码,IAM 用户 B
没有这样的设置
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail",
"ses:VerifyEmailIdentity"
],
"Resource": "*"
}
]
}
在 settings.py 中,这是 IAM 用户 A 凭据,我没有在应用程序的任何地方设置 IAM 用户 B,也许在 mac pc 的其他地方,但我不确定。
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
问题是客户端 = boto3.client 和 verify_email_identity 设置 aws 凭据
django_amazon_ses
后端是为 Django 设计的。因此 can fetch credentials from your settings.
当您直接使用 boto3.client()
时,它不知道您的 Django 设置。它试图 fetch your credentials from several places.
如果您想使用 Django 设置中的凭证,您可以在实例化 boto3 客户端时明确使用它们:
s3_client = boto3.client(
'ses',
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
region_name='us-east-1',
)
我正在尝试使用 django boto3 aws ses 来发送电子邮件。我注意到 verify_email_identity 使用不同的 IAM 凭据,这个集合实际上在哪里?我没有在我的 Django 应用程序中设置它。
client = boto3.client('ses', region_name='us-east-1')
client.verify_email_identity(EmailAddress="bounce@example.com") -> IAM user B
conn = mail.get_connection('django_amazon_ses.EmailBackend') -> IAM user A
email = EmailMessage(
'Subject', 'Content', 'bounce@example.com', ['to@example.com'],
headers={'From': 'from@example.com'},
)
self.assertGreater(conn.send_messages([email]), 0) -> IAM user A
IAM 用户 A 拥有所有权限(如下所示),但 IAM 用户 B 没有。对我来说很奇怪为什么它使用 IAM 用户 B,这怎么可能?我检查了我所有的代码,IAM 用户 B
没有这样的设置{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail",
"ses:VerifyEmailIdentity"
],
"Resource": "*"
}
]
}
在 settings.py 中,这是 IAM 用户 A 凭据,我没有在应用程序的任何地方设置 IAM 用户 B,也许在 mac pc 的其他地方,但我不确定。
AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
问题是客户端 = boto3.client 和 verify_email_identity 设置 aws 凭据
django_amazon_ses
后端是为 Django 设计的。因此 can fetch credentials from your settings.
当您直接使用 boto3.client()
时,它不知道您的 Django 设置。它试图 fetch your credentials from several places.
如果您想使用 Django 设置中的凭证,您可以在实例化 boto3 客户端时明确使用它们:
s3_client = boto3.client(
'ses',
aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY,
aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY,
region_name='us-east-1',
)