宛先にイベント通知メッセージを発行するアクセス許可の付与 - Amazon Simple Storage Service

宛先にイベント通知メッセージを発行するアクセス許可の付与

Amazon S3 プリンシパルに、SNS トピック、SQS キュー、Lambda 関数へメッセージを公開する関連する API を呼び出すため必要なアクセス許可を付与する必要があります。これは、Amazon S3 がイベント通知メッセージを宛先に公開できるようにするためです。

イベント通知メッセージを送信先に公開する場合のトラブルシューティングについては、「Amazon S3 イベント通知を Amazon Simple Notification Service に公開するためのトラブルシューティング」トピックを参照してください。

AWS Lambda 関数を呼び出すアクセス許可の付与

Amazon S3 は Lambda 関数を呼び出してイベントメッセージを AWS Lambda に発行し、イベントメッセージを引数として指定します。

Amazon S3 コンソールを使用して Lambda 関数の AmazonS3 バケットにイベント通知を設定すると、コンソールは Lambda 関数に必要なアクセス許可を設定します。これは、Amazon S3 がバケットから関数を呼び出す許可があるからです。詳細については、「Amazon S3 コンソールを使用したイベント通知の有効化と設定」を参照してください。

AWS Lambda から Amazon S3 の許可を付与して、Lambda 関数を呼び出すこともできます。詳細については、AWS Lambda デベロッパーガイドチュートリアル: Amazon S3 で AWS Lambda を使用するを参照してください。

SNS トピックまたは SQS キューにメッセージを発行するアクセス許可の付与

SNS トピックや SQS キューにメッセージを発行する許可を Amazon S3 に付与するには、AWS Identity and Access Management (IAM) ポリシーを宛先 SNS トピックや SQS キューにアタッチします。

SNS トピックや SQS キューにポリシーをアタッチする方法の例については、チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する を参照してください。アクセス許可の詳細については、次のトピックを参照してください。

発行先 SNS トピックの IAM ポリシー

発行先の SNS トピックにアタッチする AWS Identity and Access Management (IAM) ポリシーの例を次に示します。このポリシーを使用してイベント通知の宛先 Amazon SNS トピックを設定する方法については、チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する を参照してください。

{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "Example SNS topic policy", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SNS:Publish" ], "Resource": "SNS-topic-ARN", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }

発行先 SQS キューの IAM ポリシー

以下は、発行先 SQS キューにアタッチする IAM ポリシーの例です。このポリシーを使用してイベント通知の宛先 Amazon SQS キューを設定する方法については、チュートリアル: 通知 (SNS トピックまたは SQS キュー) のバケットを設定する を参照してください。

このポリシーを使用するには、Amazon SQS キューの ARN、バケット名、およびバケット所有者の AWS アカウント ID を更新する必要があります。

{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "SQS:SendMessage" ], "Resource": "arn:aws:sqs:Region:account-id:queue-name", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }

Amazon SNS および Amazon SQS IAM ポリシーの両方について、StringLike 条件の代わりにポリシーで ArnLike 条件を指定できます。

ArnLike を使用する場合、ARN のパーティション、サービス、アカウント ID、リソースタイプ、および部分的なリソース ID 部分が、リクエストコンテキストの ARN と完全に一致する必要があります。部分一致が許可されるのは、リージョンとリソースパスのみです。

ArnLike の代わりに StringLike を使用すると、マッチングでは ARN 構造が無視され、ワイルドカードで指定された部分に関係なく部分一致が可能になります。詳細については、「IAM ユーザーガイド」の「IAM JSON のポリシー要素」を参照してください。

"Condition": {        "StringLike": { "aws:SourceArn": "arn:aws:s3:*:*:bucket-name" } }

AWS KMS キーポリシー

SQS キューまたは SNS トピックが AWS Key Management Service (AWS KMS) カスタマーマネージドキーで暗号化されている場合は、暗号化されたトピックまたはキューを操作するための許可を Amazon S3 サービスプリンシパルに付与する必要があります。Amazon S3 サービスプリンシパルに許可を付与するには、カスタマーマネージドキーのキーポリシーに次のステートメントを追加します。

{ "Version": "2012-10-17", "Id": "example-ID", "Statement": [ { "Sid": "example-statement-ID", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": [ "kms:GenerateDataKey", "kms:Decrypt" ], "Resource": "*" } ] }

AWS KMS キーポリシーの詳細については、AWS Key Management Service デベロッパーガイドAWS KMS でキーポリシーを使用するを参照してください。

Amazon SQS および Amazon SNS 用の AWS KMS でのサーバー側の暗号化の使用の詳細については、以下を参照してください。