Amazon SES に対する E メール受信に関するアクセス許可の付与
Amazon Simple Storage Service(Amazon S3)バケットへの E メールの送信や AWS Lambda 関数の呼び出しなど、Amazon SES で E メールを受信したときに実行できるタスクには、特別なアクセス許可が必要です。このセクションには、いくつかの一般的なユースケースのサンプルポリシーを含みます。
このセクションのトピック:
S3 バケットへの書き込みができる Amazon SES への許可
S3 バケットに以下のポリシーを適用すると、Amazon SES にそのバケットに書き込む許可を与えます。入力メールを Amazon S3 に転送する受信ルールを作成することに関する詳細については、「S3 バケットアクションへの配信」を参照してください。
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:::
myBucket
/*", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } } ] }
上のポリシー例に、以下の変更を加えます。
-
myBucket
を書き込みたいS3 バケットの名前に置き換えます。 -
region
は、受信ルールを作成した AWS リージョンに置き換えます。 -
111122223333
を自分の AWS アカウント ID に置き換えます。 -
Amazon S3 バケットアクションへの配信を含むレシピルールを含むルールセットの名前で
rule_set_name
の部分を置き換えます。 -
Amazon S3 バケットアクションへの配信を含むレシピルールの名前で
receipt_rule_name
の部分を置き換えます。
AWS KMS キーを使用する許可を Amazon SES に付与する
Amazon SES で E メールを暗号化するためには、受信ルールをセットアップしたときに指定した AWS KMS キーを使用するためのアクセス許可を付与する必要があります。ご使用のアカウントのデフォルトKMSキー (aws/ses ) を使用するか、ご自身で作成するカスタマー管理のキーを使用することができます。デフォルトのKMSキーを使用する場合、そのキーを使用するためのアクセス許可を Amazon SES に付与する追加の手順を特に実行する必要はありません。カスタマー管理のキーを使用する場合は、キーのポリシーにステートメントを追加することで、使用するためのアクセス許可を Amazon SES に付与する必要があります。
ドメインで Amazon SES が E メールを受信するときに Amazon SES がカスタマー管理のキーを使用することを許可するために、次のポリシーステートメントを使用します。
{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": { "Service":"ses.amazonaws.com" }, "Action": [ "kms:GenerateDataKey*" ], "Resource": "*", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"
111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } }
上のポリシー例に、以下の変更を加えます。
-
region
は、受信ルールを作成した AWS リージョンに置き換えます。 -
111122223333
を自分の AWS アカウント ID に置き換えます。 -
E メール受信に関連付けたレシピルールを含むルールセットの名前で
rule_set_name
の部分を置き換えます。 -
E メール受信に関連付けたレシピルールの名前で
rule_set_name
の部分を置き換えます。
AWS KMS を使用して、サーバー側の暗号化が有効になっている状態で暗号化されたメッセージを S3 バケットに送信するには、ポリシーアクション "kms:Decrypt"
を追加する必要があります。前の例を使用してこのアクションをポリシーに追加すると、次のように表示されます。
{ "Sid": "AllowSESToEncryptMessagesBelongingToThisAccount", "Effect": "Allow", "Principal": { "Service":"ses.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"
111122223333
", "AWS:SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } }
AWS KMS キーの添付ポリシーの詳細については、 AWS KMSデベロッパーガイドの「AWS Key Management Service のキーポリシーの使用」を参照してください。
AWS Lambda 関数を呼び出すための許可を Amazon SES に与えます。
Amazon SES が AWS Lambda 関数を呼び出せるようにするには、Amazon SES コンソールで受信ルールを作成するときに、その関数を選択します。これを行うと、Amazon SES は自動的に必要なアクセス許可を関数に追加します。
または、AddPermission
API の AWS Lambda オペレーションを使用して、関数へのポリシーを添付します。次の AddPermission
API 呼び出しでは、Lambda 関数を呼び出すためのアクセス許可を Amazon SES に付与しています。Lambda 関数へのポリシーの添付に関する詳細については、AWS Lambda デベロッパーガイドの「AWS Lambda のアクセス許可」を参照ください。
{ "Action": "lambda:InvokeFunction", "Principal": "ses.amazonaws.com", "SourceAccount": "
111122223333
", "SourceArn": "arn:aws:ses:region
:111122223333
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" "StatementId": "GiveSESPermissionToInvokeFunction" }
上のポリシー例に、以下の変更を加えます。
-
region
は、受信ルールを作成した AWS リージョンに置き換えます。 -
111122223333
を自分の AWS アカウント ID に置き換えます。 -
rule_set_name
は、Lambda 関数を作成した受信ルールを含むルールセットの名前に置き換えます。 -
receipt_rule_name
は、Lambda 関数を含む受信ルールの名前に置き換えます。
異なる AWS アカウントに属する Amazon SNS トピックに発行するための Amazon SES のアクセス許可を付与します。
別の AWS アカウントのトピックに通知を公開する場合は、Amazon SNS のトピックにポリシーを添付する必要があります。SNS トピックは、ドメインおよび受信ルールセットと、同じリージョンに存在する必要があります。
次のポリシーは、Amazon SES に別の AWS アカウントで Amazon SNS トピック に公開する許可を与えます。
{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Principal":{ "Service":"ses.amazonaws.com" }, "Action":"SNS:Publish", "Resource":"arn:aws:sns:
topic_region
:sns_topic_account_id
:topic_name
", "Condition":{ "StringEquals":{ "AWS:SourceAccount":"aws_account_id
", "AWS:SourceArn": "arn:aws:ses:receipt_region
:aws_account_id
:receipt-rule-set/rule_set_name
:receipt-rule/receipt_rule_name
" } } } ] }
上のポリシー例に、以下の変更を加えます。
-
topic_region
は、とAmazon SNS トピックが作成された AWS リージョン に置き換えます。 -
sns_topic_account_id
は、Amazon SNS トピックを所有する AWS アカウント の ID に置き換えます。 -
topic_name
は、通知の発行先となる Amazon SNS トピックの名前に置き換えます。 -
aws_account_id
は、E メールを受信するように設定した AWS アカウント のID に置き換えます。 -
receipt_region
は、受信ルールを作成した AWS リージョン に置き換えます。 -
rule_set_name
は、Amazon SNS トピックへの発行アクションを作成した受信ルールを含む、ルールセットの名前に置き換えます。 -
receipt_rule_name
は、Amazon SNS トピックへの発行アクションを含む受信ルールの名前に置き換えます。
Amazon SNS トピックでサーバー側の暗号化に AWS KMS を使用する場合は、AWS KMS キーポリシーに許可を追加する必要があります。アクセス権限を追加するには、次のポリシーをAWS KMSキーポリシーにアタッチします。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowSESToUseKMSKey", "Effect": "Allow", "Principal": { "Service": "ses.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ] }