授予許可以將事件通知訊息發佈至目標 - 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 佇列)。如需許可的詳細資訊,請參閱下列主題:

目的地 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 帳戶 識別碼。

{ "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 結構並允許部分相符,而不管該萬用字元部分。如需詳細資訊,請參閱 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 使用的詳細資訊,請參閱以下內容: