授予将事件通知消息发布到目标的权限 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

授予将事件通知消息发布到目标的权限

在 Amazon S3 可以将事件通知消息发布到目标之前,您必须授予 Amazon S3 委托人调用相关 API 以将消息发布到 SNS 主题、SQS 队列或 Lambda 函数所需的权限。

授予调用 AWS Lambda 函数的权限

Amazon S3 通过调用 Lambda 函数并提供事件消息作为参数来将事件消息发布到 AWS Lambda。

使用 Amazon S3 控制台在 Amazon S3 存储桶上为 Lambda 函数配置事件通知时,控制台将在 Lambda 函数上设置必要的权限以便 Amazon S3 有权从存储桶调用函数。有关更多信息,请参阅 使用 Amazon S3 控制台启用和配置事件通知

您还可以从 AWS Lambda 向 Amazon S3 授予调用 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) 策略示例。

{ "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 结合使用的更多信息,请参阅以下内容: