Доступ запрещен при отправке электронной почты от 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: '*'
Ответ 4
Если вы используете сервисы serverless.com, обратитесь к https://dev.to/adnanrahic/building-a-serverless-contact-form-with-aws-lambda-and-aws-ses-4jm0 за хорошим справочным материалом.
Ответ 5
Политика IAM устранила проблему. Сводка политики покажет, есть ли какие-либо предупреждения, т.е. ресурс не существует и т.д.
JSON нужно следовать
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}