Ошибка Python при отправке почты с Amazon Amazon с AWS лямбда - PullRequest
0 голосов
/ 24 сентября 2018

Я новичок в AWS Lambda.Я пытаюсь отправить почту с помощью AWS с помощью AWS Lambda, без каких-либо триггеров.Вот мой код

import boto3
from botocore.exceptions import ClientError

ses = boto3.client('ses')

email_from = 'proteeti@cloudly.io'
email_to = 'proteeti13@gmail.com'
emaiL_subject = 'Subject'
email_body = 'Body'


def lambda_handler(event, context):
    response = ses.send_email(
        Source = email_from,
        Destination={
            'ToAddresses': [
                email_to,
            ],
        },
        Message={
            'Subject': {
                'Data': emaiL_subject
            },
            'Body': {
                'Text': {
                    'Data': email_body
                }
            }
        }
    )

Я создал обычную роль с разрешением простых микросервисов.Событие настроено на Привет мир.Я сохранил и нажал на тест, он показывает эти ошибки

{
  "errorMessage": "An error occurred (AccessDenied) when calling the SendEmail operation: User `arn:aws:sts::990458801115:assumed-role/basic-lambda-role/sendmail' is not authorized to perform `ses:SendEmail' on resource `arn:aws:ses:us-east-1:990458801115:identity/proteeti@cloudly.io'",
  "errorType": "ClientError",
  "stackTrace": [
    [
      "/var/task/lambda_function.py",
      28,
      "lambda_handler",
      "'Data': email_body"
    ],
    [
      "/var/runtime/botocore/client.py",
      314,
      "_api_call",
      "return self._make_api_call(operation_name, kwargs)"
    ],
    [
      "/var/runtime/botocore/client.py",
      612,
      "_make_api_call",
      "raise error_class(parsed_response, operation_name)"
    ]
  ]
}

Я написал код от здесь , он отлично работает локально.

1 Ответ

0 голосов
/ 24 сентября 2018

Функция Lambda, в которой вы запускаете этот код, не имеет разрешения на отправку сообщений с использованием SES.Вам необходимо добавить действие ses:SendEmail к вашей роли basic-lambda-role IAM.

Когда вы запускаете код локально, вы будете общаться с SES, используя свои собственные учетные данные разработчика, которые, вероятно, имеют более высокие разрешения.

...