メニュー
Amazon Simple Email Service
開発者ガイド

Amazon SES による E メール受信に必要なアクセス権限の付与

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

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

Amazon S3 バケットへの書き込みを Amazon SES に許可するには、Amazon S3 コンソールまたは API を使用してバケットにポリシーをアタッチします。次のポリシーでは、Amazon S3 バケットにオブジェクトを書き込むアクセス権限を Amazon SES に付与します。ACCOUNT-ID-WITHOUT-HYPHENS をご自身の 12 桁の AWS アカウント ID で置き換え、BUCKET-NAME をご使用の Amazon S3 バケットの名前で置き換えます。Amazon S3 バケットへのポリシーのアタッチの詳細については、Amazon Simple Storage Service 開発者ガイド を参照してください。

Copy
{ "Version": "2008-10-17", "Statement": [ { "Sid": "GiveSESPermissionToWriteEmail", "Effect": "Allow", "Principal": { "Service": [ "ses.amazonaws.com" ] }, "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::BUCKET-NAME/*", "Condition": { "StringEquals": { "aws:Referer": "ACCOUNT-ID-WITHOUT-HYPHENS" } } } ] }

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

Amazon SES で E メールを暗号化するには、受信ルールのセットアップ時に指定した AWS KMS キーを使用するアクセス権限が必要です。ご使用のアカウントのデフォルトのマスターキー (aws/ses) を使用するか、ご自身で作成するカスタムのマスターキーを使用することができます。デフォルトのマスターキーを使用する場合は、そのためのアクセス権限を Amazon SES に付与するステップを実行する必要はありません。カスタムのマスターキーを使用する場合は、そのためのアクセス権限を Amazon SES に付与するために、キーのポリシーにステートメントを追加する必要があります。このポリシーステートメントには、以下のような条件を含めて、AWS KMS へのリクエスト内に特定の値がある場合に限り、カスタムのマスターキーの使用を Amazon SES に許可します。

  • aws:ses:source-account—Amazon SES で E メール受信を代行する対象の AWS アカウント ID。

  • aws:ses:message-id—受信した E メールの Amazon SES メッセージ ID。

  • aws:ses:rule-name—E メールの暗号化に使用された受信ルールの名前。

AWS アカウントに代わって Amazon SES で E メールを受信するときにカスタムのマスターキーを使用することを Amazon SES に許可するために、次のポリシーステートメントをキーのポリシーに貼り付けます。ACCOUNT-ID-WITHOUT-HYPHENS は、ご自身の 12 桁の AWS アカウント ID に置き換えます。

Copy
{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": {"Service":"ses.amazonaws.com"}, "Action": ["kms:Encrypt", "kms:GenerateDataKey*"], "Resource": "*", "Condition": { "Null": { "kms:EncryptionContext:aws:ses:rule-name": "false", "kms:EncryptionContext:aws:ses:message-id": "false" }, "StringEquals": { "kms:EncryptionContext:aws:ses:source-account": "ACCOUNT-ID-WITHOUT-HYPHENS" } } }

AWS KMS キーへのポリシーのアタッチの詳細については、AWS Key Management Service Developer Guide を参照してください。

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

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

Copy
{ "Action": "lambda:InvokeFunction", "Principal": "ses.amazonaws.com", "SourceAccount": "ACCOUNT-ID-WITHOUT-HYPHENS", "StatementId": "GiveSESPermissionToInvokeFunction" }

別のアカウントの Amazon SNS トピックに発行するアクセス権限を Amazon SES に付与する

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

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