Suscripción de una función de Lambda a las notificaciones de eventos de buckets de S3 en diferentes regiones de AWS - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Suscripción de una función de Lambda a las notificaciones de eventos de buckets de S3 en diferentes regiones de AWS

Creada por Suresh Konathala, Andrew Preston y Arindom Sarkar

Entorno: producción

Tecnologías: Análisis

Servicios de AWS: AWS Lambda; Amazon S3; Amazon SNS; Amazon SQS

Resumen

Notificaciones de eventos de Amazon Simple Storage Service (Amazon S3) publica notificaciones de determinados eventos en su bucket de S3 (por ejemplo, eventos creados por objetos, eventos de eliminación de objetos o eventos de restauración de objetos). Puede usar una función de AWS Lambda para procesar estas notificaciones de acuerdo con los requisitos de su aplicación. Sin embargo, la función de Lambda no puede suscribirse directamente a las notificaciones de los buckets de S3 alojados en distintas regiones de AWS.

El enfoque de este patrón implementa un escenario de distribución ramificada para procesar las notificaciones de Amazon S3 procedentes de buckets de S3 entre regiones mediante un tema del Amazon Simple Notification Service (Amazon SNS) para cada región. Estos temas de SNS regional envían las notificaciones de eventos de Amazon S3 a una cola de Amazon Simple Queue Service (Amazon SQS) en una región central que también contiene la función de Lambda. La función de Lambda se suscribe a esta cola de SQS y procesa las notificaciones de eventos de acuerdo con los requisitos de su organización.

Requisitos previos y limitaciones

Requisitos previos

  • Una cuenta de AWS activa.

  • Buckets de S3 existentes en varias regiones, incluida una región central para alojar la cola de Amazon SQS y la función de Lambda.

  • Interfaz de la línea de comandos de AWS (AWS CLI) instalada y configurada. Para obtener más información, consulte Instalar, actualizar y desinstalar la CLI de AWS en la documentación de la CLI de AWS. 

  • Familiaridad con el escenario de distribución ramificada en Amazon SNS. Para obtener más información al respecto, consulte Escenarios comunes de Amazon SNS en la documentación de Amazon SNS.

Arquitectura

El siguiente diagrama muestra la arquitectura para el enfoque de este patrón. 

Workflow utiliza Amazon SNS, S3 y SQS para procesar las notificaciones de eventos de buckets S3 entre regiones.

En el diagrama, se muestra el siguiente flujo de trabajo:

  1. Amazon S3 envía notificaciones de eventos sobre buckets de S3 (por ejemplo, objetos creados, objetos retirados o objetos restaurados) a un tema de SNS de la misma región.

  2. El tema de SNS publica el evento en una cola de SQS en la región central.

  3. La cola SQS está configurada como el origen de eventos de la función de Lambda y almacena en búfer los mensajes de eventos de la función de Lambda. 

  4. La función de Lambda sondea la cola de SQS en busca de mensajes y procesa las notificaciones de eventos de Amazon S3 según los requisitos de la aplicación.

Pila de tecnología

  • Lambda

  • Amazon SNS

  • Amazon SQS

  • Amazon S3

Herramientas

  • AWS CLI: la interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto para interactuar con los servicios de AWS mediante comandos en el intérprete de comandos de línea de comandos. Con una configuración mínima, puede ejecutar comandos de la CLI de AWS que implementan una funcionalidad equivalente a la proporcionada por la consola de administración de AWS basada en navegador desde un símbolo del sistema.

  • AWS CloudFormation: AWS le CloudFormation ayuda a modelar y configurar sus recursos de AWS, a aprovisionarlos de forma rápida y coherente y a gestionarlos durante todo su ciclo de vida. Facilita poder usar una plantilla para describir los recursos y sus dependencias, y lanzarlos y configurarlos juntos como una pila, en lugar de administrarlos de forma individual. Puede administrar y aprovisionar pilas en varias cuentas y regiones de AWS.

  • AWS Lambda: AWS Lambda es un servicio de computación que permite ejecutar código sin aprovisionar ni administrar servidores. Lambda ejecuta su código solo cuando es necesario y escala de manera automática, desde unas pocas solicitudes por día hasta miles por segundo. Solo pagará por el tiempo de computación que consuma, no se aplican cargos cuando el código no se está ejecutando.

  • Amazon SNS: Amazon Simple Notification Service (Amazon SNS) coordina y gestiona la entrega o el envío de mensajes entre publicadores y clientes, incluyendo los servidores web y las direcciones de correo electrónico. Los suscriptores reciben todos los mensajes publicados de los temas a los que están suscritos y todos los suscriptores de un tema reciben los mismos mensajes.

  • Amazon SQS: Amazon Simple Queue Service (Amazon SQS) ofrece una cola alojada segura, duradera y disponible que le permite integrar y desacoplar sistemas y componentes de software distribuidos. Amazon SQS admite tanto las colas estándar como las colas FIFO.

Epics

TareaDescripciónHabilidades requeridas

Cree una cola de SQS con un desencadenador Lambda.

Inicie sesión en la consola de administración de AWS y siga las instrucciones del tutorial Uso de Lambda con Amazon SQS de la documentación de AWS Lambda para crear los siguientes recursos en su región central:

  • Un rol de ejecución de Lambda

  • Una función de Lambda para procesar los eventos de Amazon S3

  • Una cola de SQS

Nota: Asegúrese de configurar la cola de SQS como origen de eventos de la función de Lambda.

AWS DevOps, arquitecto de nube
TareaDescripciónHabilidades requeridas

Cree un tema de SNS para recibir notificaciones de eventos de Amazon S3.

Cree un tema de SNS en una región de la que desee recibir notificaciones de eventos de Amazon S3. Para obtener más información al respecto, consulte Creación de un tema SNS en la documentación de Amazon SNS. 

Importante: asegúrese de registrar el nombre de recurso de Amazon (ARN) de su tema de SNS. 

AWS DevOps, arquitecto de nube

Suscriba el tema SNS a la cola SQS central.

Suscriba su tema de SNS a la cola de SQS alojada en su región central. Para obtener más información al respecto, consulte Suscripción a un tema SNS en la documentación de Amazon SNS.

AWS DevOps, arquitecto de nube

Actualice la política de acceso del tema SNS.

  1. Abra la consola de Amazon SNS, seleccione Temas y, a continuación, elija el tema SNS que creó anteriormente.

  2. Seleccione Editar y, a continuación, amplíe la sección Política de acceso (opcional).

  3. Adjunte la siguiente política de acceso a su tema de SNS para conceder permisos de sns:publish a Amazon S3 y, a continuación, seleccione Guardar:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "0", "Effect": "Allow", "Principal": { "Service": "s3.amazonaws.com" }, "Action": "sns:Publish", "Resource": "arn:aws:sns:us-west-2::s3Events-SNSTopic-us-west-2" } ] }
AWS DevOps, arquitecto de nube

Configure las notificaciones para cada bucket de S3 de la región.

Configure las notificaciones de eventos para cada bucket de S3 de la región. Para obtener más información al respecto, consulte Activación y configuración de las notificaciones de eventos mediante la consola de Amazon S3 en la documentación de Amazon S3.

Nota: En la sección Destino, elija el tema de SNS y especifique el ARN del tema de SNS que creó anteriormente.

AWS DevOps, arquitecto de nube

Repita esta épica en todas las regiones requeridas.

Importante: repita las tareas de esta épica para cada región de la que desee recibir notificaciones de eventos de Amazon S3, incluida la región central.

AWS DevOps, arquitecto de nube

Recursos relacionados