3

I have the following setup:

Python Flask API with boto3 installed. I create a boto3 client like so:

client = boto3.client(
    "ses",
    region_name='eu-west-1',
    aws_access_key_id='myAccessKeyID',
    aws_secret_access_key='mySecretAccessKey'
)

Then I try to send an email like so:

try:
    client.send_email(
        Source='VerifiedSourceEmail',
        Destination={
            'ToAddresses': ['VerifiedRecipientEmail'],
            'CcAddresses': [],
            'BccAddresses': [],
        },
        Message={
            'Subject': {'Data': 'Test'},
            'Body': {'Text': {'Data': 'Test'},
        }
except ClientError as e:
    return {
        'ErrorCode': e.response['Error']['Code'],
        'ErrorMessage': e.response['Error']['Message'],
    }

When I try to do this, I get:

ErrorCode: SignatureDoesNotMatch
ErrorMessage: The request signature we calculated does not match the signature you provided. Check your AWS Secret Access Key and signing method. Consult the service documentation for details.

I have used the exact same client creation process when connecting to my S3 bucket:

client = boto3.client(
    "s3",
    region_name='eu-west-1',
    aws_access_key_id='myS3AccessKeyID',
    aws_secret_access_key='myS3SecretAccessKey'
)

...and this client works fine, I have tested both gets, uploads and deletes with no errors.

I have tested sending a mail directly in AWS, this works. What am I doing wrong?

1 Answers1

0

From this answer:

The keys to be provided to send Emails are not "SMTP Credentials" . The keys are instead Global access key which can be retrieved http://docs.amazonwebservices.com/ses/latest/GettingStartedGuide/GetAccessIDs.html.

Michael Herrmann
  • 4,832
  • 3
  • 38
  • 53