本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
授予許可以將事件通知訊息發佈至目標
您必須將必要的許可授予 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 佇列)。如需許可的詳細資訊,請參閱下列主題:
-
《Amazon Simple Notification Service 開發人員指南》中的 Amazon SNS 存取控制的範例案例
-
《Amazon Simple Queue Service 開發人員指南》中的 Amazon SQS 中的 Identity and Access Management
目的地 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:*:*:" }, "StringEquals": { "aws:SourceAccount": "
amzn-s3-demo-bucket
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 完全相符。只有區域和資源路徑允許部分相符。
當使用 StringLike
而非 ArnLike
時,比對會忽略 ARN 結構並允許部分相符,而不管該萬用字元部分。如需詳細資訊,請參閱 IAM 使用者指南中的 IAM JSON 政策元素。
"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 搭配使用的詳細資訊,請參閱以下內容:
-
Amazon Simple Notification Service 開發人員指南》中的金鑰管理。
-
Amazon Simple Queue Service 開發人員指南》中的金鑰管理。
-
AWS 運算部落格中的透過 AWS KMS加密發佈到 Amazon SNS 的訊息
。