Conceder permisos para publicar mensajes de notificación de eventos en un destino - Amazon Simple Storage Service

Conceder permisos para publicar mensajes de notificación de eventos en un destino

Debe conceder a la entidad principal de Amazon S3 los permisos necesarios para llamar a la API pertinente a fin de publicar mensajes en un tema SNS, una cola SQS o una función de Lambda. Esto permite que Amazon S3 pueda publicar mensajes de notificación de eventos en un destino.

Para solucionar problemas de publicación de mensajes de notificación de eventos en un destino, consulte Solucionar problemas para publicar notificaciones de eventos de Amazon S3 en un tema de Amazon Simple Notification Service.

Concesión de permisos para invocar una función de AWS Lambda

Para publicar mensajes de eventos en AWS Lambda, Amazon S3 invoca una función de Lambda y proporciona el mensaje de evento como un argumento.

Cuando utiliza la consola de Amazon S3 para configurar notificaciones de eventos en un bucket de Amazon S3 para una función de Lambda, la consola configura los permisos necesarios en la función de Lambda. Esto permite que Amazon S3 tenga permisos para invocar la función desde el bucket. Para obtener más información, consulte Habilitación y configuración de notificaciones de eventos mediante la consola de Amazon S3.

También puede conceder permisos a Amazon S3 desde AWS Lambda para invocar su función de Lambda. Para obtener más información, consulte Tutorial: utilizar AWS Lambda con Amazon S3 en la Guía para desarrolladores de AWS Lambda.

Conceder permisos para publicar mensajes en un tema de SNS o una cola de SQS

Debe asociar una política de AWS Identity and Access Management (IAM) al tema de SNS o la cola de SQS de destino a fin de conceder a Amazon S3 permisos para publicar mensajes en el tema de SNS o la cola de SQS.

Para ver un ejemplo de cómo asociar una política a un tema de SNS o una cola de SQS, consulte Explicación: configuración de un bucket para notificaciones (tema de SNS o cola de SQS). Para obtener más información acerca de estos permisos, consulte los siguientes temas:

Política de IAM para un tema de SNS de destino

A continuación, se muestra un ejemplo de una política de AWS Identity and Access Management (IAM) que se asocia al tema de SNS de destino. Para obtener instrucciones sobre cómo utilizar esta política para configurar un tema de Amazon SNS de destino para las notificaciones de eventos, consulte Explicación: configuración de un bucket para notificaciones (tema de SNS o cola de 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" } } } ] }

Política de IAM para una cola de SQS de destino

A continuación se muestra un ejemplo de una política de IAM que se asocia a la cola de SQS de destino. Para obtener instrucciones sobre cómo utilizar esta política para configurar una cola de Amazon SQS de destino para las notificaciones de eventos, consulte Explicación: configuración de un bucket para notificaciones (tema de SNS o cola de SQS).

Para utilizar esta política, debe actualizar el ARN de la cola de Amazon SQS, el nombre del bucket y el ID de la Cuenta de AWS del propietario del bucket.

{ "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" } } } ] }

Tanto para las políticas de IAM de Amazon SNS como de Amazon SQS puede especificar la condición StringLike en la política, en lugar de la condición ArnLike.

Cuando se usa ArnLike, las partes del ARN de partición, servicio, ID de cuenta, tipo de recurso e ID de recurso parcial deben coincidir exactamente con el ARN en el contexto de la solicitud. Solo la región y la ruta del recurso permiten la coincidencia parcial.

Cuando se usa StringLike en lugar de ArnLike, la coincidencia ignora la estructura del ARN y permite la coincidencia parcial, independientemente de la parte marcada como comodín. Para obtener más información, consulte Elementos de la política JSON de IAM en la Guía del usuario de IAM.

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

Política de claves de AWS KMS

Si la cola de SQS o los temas de SNS están cifrados con una clave administrada por el cliente AWS Key Management Service (AWS KMS), debe conceder a la entidad principal del servicio Amazon S3 permiso para trabajar con la cola o los temas cifrados. Para conceder el permiso principal de servicio de Amazon S3, agregue la siguiente declaración a la política de claves para la clave administrada por el cliente.

{ "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": "*" } ] }

Para obtener más información acerca de las políticas de claves de AWS KMS, consulte Uso de las políticas de claves en AWS KMS en la Guía para desarrolladores de AWS Key Management Service.

Para obtener más información acerca del uso del cifrado del lado del servidor con AWS KMS para Amazon SQS y Amazon SNS, consulte lo siguiente: