Amazon Simple Email Service
開発者ガイド

Amazon SES に対する E メール受信に関するアクセス権限の付与

Amazon S3 バケットへの E メールの書き込み、AWS KMS キーを使用した E メールの暗号化、Lambda 関数の呼び出し、別のアカウントの Amazon SNS トピックへの公開を Amazon SES が実行できるようにするためには、これらのリソースに対するアクセス権限を Amazon SES に付与する必要があります。アクセス権限を付与するには、ポリシーをリソースにアタッチします。このトピックでは、ポリシーの例を示します。

Amazon S3 バケットに書き込むためのアクセス権限を Amazon SES に付与する

Amazon S3 バケットに適用された場合、以下のポリシーが Amazon SES にそのバケットに書き込む許可を与えます。入力メールを Amazon S3 に転送する受信ルールを作成することに関する詳細については、「S3 アクション」を参照してください。Amazon S3 バケットへのポリシーのアタッチの詳細については、Amazon Simple Storage Service 開発者ガイドの「バケットポリシーとユーザーポリシーの使用」を参照してください。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSESPuts", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "s3:PutObject", "Resource": "arn:aws:s3:::BUCKET-NAME/*", "Condition": { "StringEquals": { "aws:Referer": "AWSACCOUNTID" } } } ] }

AWS KMS マスターキーを使用するためのアクセス権限を Amazon SES に付与する

Amazon SES で E メールを暗号化するためには、受信ルールをセットアップしたときに指定した AWS KMS キーを使用するためのアクセス権限を付与する必要があります。ご使用のアカウントのデフォルトのマスターキー (aws/ses) を使用するか、ご自身で作成するカスタムのマスターキーを使用することができます。デフォルトのマスターキーを使用する場合は、それを使用するためのアクセス権限を Amazon SES に付与する手順は必要ありません。カスタムのマスターキーを使用する場合は、キーのポリシーにステートメントを追加することで、使用するためのアクセス権限を Amazon SES に付与する必要があります。

ご使用の AWS アカウントの代理で Amazon SES が E メールを受信するときに Amazon SES がカスタムのマスターキーを使用することを許可するために、次のポリシーステートメントをキーのポリシーに貼り付けます。

{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": { "Service":"ses.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": "*" }

注記

Amazon SES は Amazon S3 マルチパートアップロード API を使用して、大きなメッセージ (5 MB 以上) を Amazon S3 バケットに送信します。AWS KMS を使用して暗号化されたメッセージを Amazon S3 バケットに送信し、5 MB を超えるメッセージを受信する計画の場合は、前の例のステートメントではなく、次のポリシーステートメントを使用する必要があります。

{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": { "Service":"ses.amazonaws.com" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": "*" }

Amazon S3 でのマルチパートアップロードの詳細については、Amazon Simple Storage Service 開発者ガイドの「マルチパートアップロード API とアクセス許可」を参照してください。AWS KMS キーへのポリシーのアタッチの詳細については、AWS Key Management Service Developer Guideの「AWS KMS でのキーポリシーの使用」を参照してください。

Lambda 関数を呼び出すためのアクセス権限を Amazon SES に付与する

Amazon SES が Lambda 関数を呼び出せるようにするには、受信ルールのセットアップ中に Amazon SES コンソールを使用して Lambda 関数を設定するか (この場合 Amazon SES が必要なアクセス権限を関数に自動的に追加します)、AWS Lambda AddPermission API を使用して関数にポリシーをアタッチすることができます。次の AddPermission API 呼び出しでは、Lambda 関数を呼び出すためのアクセス許可を Amazon SES に付与しています。AWSACCOUNTID をご自身の 12 桁の AWS アカウント ID に置き換えます。Lambda 関数へのポリシーのアタッチの詳細については、AWS Lambda Developer Guideの「AWS Lambda アクセス許可」を参照してください。

{ "Action": "lambda:InvokeFunction", "Principal": "ses.amazonaws.com", "SourceAccount": "AWSACCOUNTID", "StatementId": "GiveSESPermissionToInvokeFunction" }

別のアカウントの Amazon SNS トピックに公開するためのアクセス権限を Amazon SES に付与する

使用する Amazon SNS トピックを、Amazon SES で使用しているのと同じ AWS アカウントが所有している場合は、トピックへの公開を Amazon SES に許可するためのセットアップは必要ありません。ただし、ご自身が所有していないトピックに対して通知を公開する場合は、Amazon SNS コンソールまたは API を使用して Amazon SNS トピックにポリシーをアタッチします。次のポリシーは、Amazon SNS トピックに対して公開するためのアクセス権限を Amazon SES に付与します。AWSACCOUNTID をご自身の 12 桁の AWS アカウント ID で置き換え、TOPIC-NAME を Amazon SNS トピックの名前で置き換えます。Amazon SNS トピックのポリシーの記述の詳細については、Amazon Simple Notification Service 開発者ガイドの「Amazon SNS に対する認証とアクセスコントロール」を参照してください。

{ "Version": "2008-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": "SNS:Publish", "Resource": "arn:aws:sns:us-east-1:AWSACCOUNTID:TOPIC-NAME" } ] }