はじめに
SESで受信したメールをS3に保存する設定
- 「Email Receiving」→「Rule Sets」→ 「既存ルールの変更」または「新規ルールの作成」→「Actions」の設定画面に遷移する
- 「Add action」から「S3」を選択する
- メールを保存するためのS3バケットを作成する
- S3上に作成するバケット名を設定してボタンをクリックする
- 「Save Rule」ボタンをクリックする
S3のバッケトの確認
- 上記で作成したS3のバケットのポリシーがSES からの E メールを保存するためにアクセス許可を持っているか確認する
メール送信してみる
- 下記のようなエラーが発生する。原因はLambdaからS3にアクセスする権限がないためにエラーになっていた。
[ERROR] ClientError: An error occurred (AccessDenied) when calling the SendRawEmail operation: User `arn:aws:sts::756866072545:assumed-role/email_forwarding-role-j5b3a8ac/email_forwarding' is not authorized to perform `ses:SendRawEmail' on resource `arn:aws:ses:us-east-1:756866072545:identity/winlogic.biz'
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 49, in lambda_handler
send_email(raw_message)
File "/var/task/lambda_function.py", line 25, in send_email
response = ses_client.send_raw_email(
File "/var/runtime/botocore/client.py", line 316, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 635, in _make_api_call
raise error_class(parsed_response, operation_name)
- Lambdaのアクセス権限にS3にFullAccessを与える
結果
- LambdaにS3のアクセス権限を与えたことでLambdaからS3へのアクセスをすることができて、S3上にもメールが保存されていることを確認できた。