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

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

Amazon S3 が宛先にイベント通知メッセージを発行できるようにするには、該当する API を呼び出して、SNS トピック、SQS キュー、または Lambd 関数にメッセージを発行するために必要なアクセス許可を事前に Amazon S3 プリンシパルに付与しておく必要があります。

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

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

Amazon S3 コンソールを使用して、Lambda 関数で Amazon S3 バケットのイベント通知を設定する場合、Amazon S3 コンソールは 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) ポリシーの例を次に示します。

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

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

発行先の SQS キューにアタッチする IAM ポリシーの例を次に示します。

{ "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 条件をポリシーで指定できます。

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

AWS KMS キーポリシー

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

{ "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 でのサーバー側の暗号化の使用の詳細については、以下を参照してください。