Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django aws ses boto3-为什么不同的IAM凭据用于验证电子邮件身份_Django_Amazon Web Services_Boto3_Amazon Ses - Fatal编程技术网

django aws ses boto3-为什么不同的IAM凭据用于验证电子邮件身份

django aws ses boto3-为什么不同的IAM凭据用于验证电子邮件身份,django,amazon-web-services,boto3,amazon-ses,Django,Amazon Web Services,Boto3,Amazon Ses,我正在尝试使用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 c

我正在尝试使用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')

问题是client=boto3.client和verify_email_identity设置aws凭据django\u amazon\u ses后端是为django设计的。所以呢

当您直接使用bot3.client()时,它不知道您的Django设置。它试图改变

如果要使用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',
)