AWS Lambda関数でAmazon SESを使用してEメールを送信しようとしています。このため、次のエラーに直面しています。
AccessDenied:リソース `arn:aws:ses:us-west-2:XXX:identity/[email protected] 'のユーザー
arn:aws:sts::XXXXX:assumed-role/lambda_basic_execution/awslambda_XXXX' is not authorized to perform
ses:SendEmail'
私は許可を与えました
IAMロールの「ses:SendEmail」、「ses:SendRawEmail」。
だから、私もラケシュが説明したのと同じ問題を抱えていましたが、彼が言っているステップを理解できませんでした。
次のセキュリティ、アイデンティティ、コンプライアンスを実行する必要があります-> 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 また、最初にメールアドレスを確認する必要があるため、忘れないでください。これが皆さんのお役に立てば幸いです。
長いデバッグの後、問題が発生しました。「lambda_basic_execution」ロールには、「ses:SendEmail」、「ses:SendRawEmail」へのアクセス許可を付与する必要があります。
作成した新しいIAMロールにアクセス許可を付与しようとしたところ、ラムダ関数が「lambda_basic_execution」にマップされているため、不一致があります。
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: '*'
IAMポリシーで問題が修正されました。ポリシーの概要には、警告がある場合、つまりリソースが存在しない場合などが表示されます。
JSONには以下が必要です
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
他の人が言ったように、この2つの権限を追加する必要があります:ses:SendEmail、ses:SendRawEmail
サーバーレスフレームワークを使用している人に説明を追加したいだけです
Serverless.ymlで:
provider:
name: aws
stage: dev
runtime: nodejs10.x
region: us-west-1
iamRoleStatements:
- Effect: Allow
Action:
- dynamodb:Query
- dynamodb:Scan
- dynamodb:GetItem
- dynamodb:PutItem
- dynamodb:UpdateItem
- dynamodb:DeleteItem
- lambda:InvokeFunction
- ses:SendEmail # add this
- ses:SendRawEmail # add this
Resource: '*' # add this