メニュー
Amazon Simple Email Service
開発者ガイド (API Version 2010-12-01)

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 コンソールまたは 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 を使用して関数にポリシーをアタッチすることができます。次の AddPermissionAPI 呼び出しでは、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" } ] }