授予許可以將事件通知訊息發佈至目標 - Amazon Simple Storage Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

授予許可以將事件通知訊息發佈至目標

您必須授予 Amazon S3 委託人必要的許可,以呼叫相關的 API,將訊息發佈至 SNS 主題、SQS 佇列或 Lambda 函數。這樣 Amazon S3 便可將事件通知訊息發佈至目的地。

若要進行疑難排解,以將事件通知發佈到目的地,請參閱將 Amazon S3 事件通知發佈到 Amazon Simple Notification Service 主題的疑難排解

授予叫用 AWS Lambda 函數的許可

Amazon S3 透過叫 AWS Lambda 用 Lambda 函數並提供事件訊息作為引數,將事件訊息發佈至 。

當您使用 Amazon S3 主控台,在 Amazon S3 儲存貯體上設定 Lambda 函數的事件通知時,該主控台將設定 Lambda 函數的必要許可。這樣 Amazon S3 便可從儲存貯體叫用函數。如需詳細資訊,請參閱使用 Amazon S3 主控台啟用和設定事件通知

您也可以從 授予 Amazon S3 許可 AWS Lambda ,以調用 Lambda 函數。如需詳細資訊,請參閱 AWS Lambda 開發人員指南中的教學課程: AWS Lambda 搭配 Amazon S3 使用

准許將訊息發佈至 SNS 主題或 SQS 佇列

若要授予 Amazon S3 發佈訊息至 SNS 主題或 SQS 佇列的許可,請將 AWS Identity and Access Management (IAM) 政策連接至目的地 SNS 主題或 SQS 佇列。

如需如何將政策連接至 SNS 主題或 SQS 佇列的範例,請參閱 逐步解說:為通知設定儲存貯體 (SNS 主題或 SQS 佇列)。如需許可的詳細資訊,請參閱下列主題:

目標 IAM 主題的 SNS 政策

以下是您連接至目的地 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:*:*:amzn-s3-demo-bucket" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id" } } } ] }

目標 IAM 佇列的 SQS 政策

以下是您連接至目的地 IAM 佇列的 SQS 政策範例。如需如何使用此政策設定事件通知目的地 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 完全相符。只有區域和資源路徑允許部分相符。

使用 StringLike 而非 時ArnLike,比對會忽略 ARN 結構,並允許部分比對,無論萬用字元的部分為何。如需詳細資訊,請參閱 JSONIAM 使用者指南中的 Word 政策元素IAM

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

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

如需將伺服器端加密與 AWS KMS for Amazon SQS 和 Amazon SNS 搭配使用的詳細資訊,請參閱下列內容: