Explicación: configuración de un bucket para notificaciones (tema de SNS o cola de SQS)
Puede recibir notificaciones de Amazon S3 mediante Amazon Simple Notification Service (Amazon SNS) o Amazon Simple Queue Service (Amazon SQS). En este tutorial, agregue una configuración de notificación al bucket mediante un tema de Amazon SNS y una cola de Amazon SQS.
nota
No se admiten colas FIFO (First-In-First-Out) de Amazon Simple Queue Service como destino de la notificación de eventos de Amazon S3. Para enviar una notificación de un evento de Amazon S3 a una cola FIFO de Amazon SQS, puede utilizar Amazon EventBridge. Para obtener más información, consulte Activación de Amazon EventBridge.
Temas
Resumen del tutorial
Esta explicación lo ayuda a hacer lo siguiente:
-
Publique eventos de tipo
s3:ObjectCreated:*
en una cola de Amazon SQS. -
que publique eventos de tipo
s3:ReducedRedundancyLostObject
en un tema de Amazon SNS.
Para obtener información acerca de la configuración de notificación, consulte Uso de Amazon SQS, Amazon SNS y Lambda.
Puede realizar todos estos pasos con la consola sin escribir ningún código. Además, se brindan ejemplos de código con los AWS SDK para Java y .NET, con el fin de ayudarlo a agregar configuraciones de notificación mediante programación.
El procedimiento incluye los pasos siguientes:
-
Cree una cola de Amazon SQS.
Con la consola de Amazon SQS, cree una cola de SQS. Puede acceder a cualquier mensaje que Amazon S3 envía a la cola mediante programación. Sin embargo, para esta explicación, va a verificar los mensajes de notificación en la consola.
Debe asociar una política de acceso a la cola para otorgarle permiso a Amazon S3 para publicar mensajes.
-
Cree un tema de Amazon SNS.
Con la consola de Amazon SNS, cree un tema SNS y suscríbase al tema. De esta forma, cualquier evento que se publique en él se le entregará a usted. Debe especificar el correo electrónico como protocolo de comunicación. Después de crear un tema, Amazon SNS envía un correo electrónico. Utilice el enlace del correo electrónico para confirmar la suscripción al tema.
Debe asociar una política de acceso al tema para otorgarle a Amazon S3 permiso para publicar mensajes.
-
Añada una configuración de notificación a un bucket.
Paso 1: Crear una cola de Amazon SQS
Siga los pasos para crear y suscribirse a una cola de Amazon Simple Queue Service (Amazon SQS)
-
Con la consola de Amazon SQS, cree una cola. Para obtener instrucciones, consulte Getting Started with Amazon SQS en la Amazon Simple Queue Service Developer Guide.
-
Sustituya la política de acceso asociada a la cola por la siguiente política.
-
En la consola de Amazon SQS, en la lista de colas, elija el nombre de la cola.
-
En la pestaña Access policy (Política de acceso), elija Edit (Editar).
-
Sustituya la política de acceso asociada a la cola. En ella, proporcione el ARN de Amazon SQS, el nombre del bucket de origen y el ID de cuenta 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": "
SQS-queue-ARN
", "Condition": { "ArnLike": { "aws:SourceArn": "arn:aws:s3:*:*:awsexamplebucket1
" }, "StringEquals": { "aws:SourceAccount": "bucket-owner-account-id
" } } } ] } -
Elija Guardar.
-
-
(Opcional) Si la cola de Amazon SQS o el tema de Amazon SNS tienen habilitado el cifrado del lado del servidor con AWS Key Management Service (AWS KMS), agregue la siguiente política a la clave administrada por el cliente de cifrado simétrica.
Debe agregar la política a una clave administrada por el cliente porque no puede modificar la clave administrada por AWS para Amazon SQS o Amazon SNS.
{ "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 del uso de SSE para Amazon SQS y Amazon SNS con AWS KMS, consulte lo siguiente:
-
Key management (Administración de claves) en la Guía para desarrolladores de Amazon Simple Notification Service.
-
Key management (Administración de claves) en la Guía para desarrolladores de Amazon Simple Queue Service.
-
-
Anote el ARN de la cola.
La cola SQS que creó es otro recurso de la Cuenta de AWS. Tiene un nombre de recurso de Amazon (ARN) único. Necesitará este ARN en el siguiente paso. El ARN tiene el siguiente formato:
arn:aws:sqs:
aws-region
:account-id
:queue-name
Paso 2: Crear un tema sobre Amazon SNS
Siga los pasos para crear y suscribirse a un tema de Amazon SNS.
-
Con la consola de Amazon SNS, cree un tema. Para obtener instrucciones, consulte el tema Creación de un Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.
-
Suscríbase al tema. Para este ejercicio, utilice el correo electrónico como el protocolo de comunicación. Para obtener instrucciones, consulte el tema Suscribirse a un Amazon SNS en la Guía para desarrolladores de Amazon Simple Notification Service.
Recibirá un correo electrónico donde deberá confirmar su suscripción al tema. Confirme la suscripción.
-
Sustituya la política de acceso asociada al tema por la siguiente política. En ella, proporcione el ARN del tema de SNS, el nombre del bucket y el ID de cuenta del propietario del bucket.
{ "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
" } } } ] } -
Apunte el ARN del tema.
El tema de SNS que creó es otro recurso de su Cuenta de AWS y tiene un ARN único. Necesitará este ARN en el siguiente paso. El ARN tendrá el siguiente formato:
arn:aws:sns:
aws-region
:account-id
:topic-name
Paso 3: Agregar una configuración de notificación al bucket
Puede habilitar las notificaciones del bucket con la consola de Amazon S3 o mediante programación con los AWS SDK. Seleccione cualquiera de las opciones para configurar las notificaciones en su bucket. En esta sección se brindan ejemplos de códigos en los que se utilizan los AWS SDK para Java y .NET.
Opción A: habilitar notificaciones en un bucket mediante la consola
Mediante la consola de Amazon S3, agregue una configuración de notificación al solicitar a Amazon S3 que realice lo siguiente:
-
Publicar eventos del tipo Todos los objeto crean eventos en su cola de Amazon SQS.
-
Publicar eventos del tipo Objeto perdido en RRS para su tema de Amazon SNS.
Después de guardar la configuración de notificación, Amazon S3 publica un mensaje de prueba que usted recibe por correo electrónico.
Para obtener instrucciones, consulte Habilitación y configuración de notificaciones de eventos mediante la consola de Amazon S3.
Opción B: habilitar notificaciones en un bucket mediante los AWS SDK
Paso 4: Probar la configuración
Ahora puede cargar un objeto en el bucket y verificar la notificación de eventos en la consola de Amazon SQS para probar la configuración. Para obtener instrucciones, consulte Receiving a Message en la sección "Getting Started" de Amazon Simple Queue Service Developer Guide.