Доступ запрещен при отправке электронной почты от AWS SES в функции лямбда

Я пытаюсь отправить электронное письмо с использованием Amazon SES в функции AWS Lambda, для этого я столкнулся со следующей ошибкой.

AccessDenied: Пользователь arn:aws:sts::XXXXX:assumed-role/lambda_basic_execution/awslambda_XXXX' is not authorized to perform ses: SendEmail 'на ресурсе `arn: aws: ses: us-west-2: XXX: identity/[email protected]'

Я дал разрешение на

"ses: SendEmail", "ses: SendRawEmail" для роли IAM.

Ответ 1

После долгой отладки у меня возникла проблема, роль "lambda_basic_execution" должна быть предоставлена ​​с разрешением на доступ к "ses: SendEmail", "ses: SendRawEmail".

Где я пытался предоставить разрешение для новой роли IAM, которую я создал, но функция лямбда отображается на "lambda_basic_execution", поэтому существует несоответствие.

Ссылка - http://docs.aws.amazon.com/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-examples-email-sending-actions

Ответ 2

Итак, у меня также была та же проблема, которую объяснил Ракеш, но я не мог понять шаги, которые он говорил, чтобы сделать это, вот подробное объяснение с шагами.

Вам нужно сделать следующее Безопасность, личность и Соответствие → IAM → Роли → выберите лямбда-функцию → затем отредактируйте политику → откройте ее в JSON и добавьте нижеприведенную часть

{
  "Effect":"Allow",
  "Action":[
    "ses:SendEmail",
    "ses:SendRawEmail"
  ],
  "Resource":"*"
}

или вы можете сделать это в соответствии с требованиями этих примеров политики https://docs.aws.amazon.com/ses/latest/DeveloperGuide/control-user-access.html#iam-and-ses-examples-email-sending-actions Кроме того, вам нужно сначала проверить адрес электронной почты, поэтому не забывайте об этом. Надеюсь, это поможет всем.

Ответ 3

Если вы настраиваете политики для SAM Lambda или используете файл конфигурации YAML, вы должны использовать что-то вроде этого:

template.yaml

AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: 'your-email-lambda'

Resources:
  YourEmailFunction:
    Type: AWS:Serverless::Function
    Properties:
      Policies:
        - Version: '2012-10-17'
          Statement:
            - Effect: Allow
              Action:
                - 'ses:SendEmail'
                - 'ses:SendRawEmail'
              Resource: '*'

Ответ 5

Политика IAM устранила проблему. Сводка политики покажет, есть ли какие-либо предупреждения, т.е. ресурс не существует и т.д.

JSON нужно следовать

       {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }