メニュー
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 に転送する受信ルールを作成することに関する詳細については、「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 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 に許可するために、次のポリシーステートメントをキーのポリシーに貼り付けます。AWSACCOUNTID は、ご自身の 12 桁の AWS アカウント ID に置き換えます。

{ "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": "AWSACCOUNTID" } } }

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 に付与しています。AWSACCOUNTID は、ご自身の 12 桁の AWS アカウント ID に置き換えます。Lambda 関数へのポリシーのアタッチの詳細については、「AWS Lambda Developer Guide」を参照してください。

{ "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 開発者ガイド」を参照してください。

{ "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" } ] }