Encadene los servicios de AWS mediante un enfoque sin servidor - 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.

Encadene los servicios de AWS mediante un enfoque sin servidor

Creado por Aniket Braganza (AWS)

Entorno: producción

Tecnologías: sin servidor;;;; Modernización CloudNative; Infraestructura DevelopmentAndTesting DevOps

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

Resumen

Este patrón muestra un enfoque escalable y sin servidor para procesar un archivo cargado mediante la unión de Amazon Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (Amazon SNS), Amazon Simple Queue Service (Amazon SQS) y Amazon AWS Lambda. El ejemplo del archivo cargado es para fines ilustrativos. Puede utilizar un enfoque sin servidor para completar otras tareas al encadenar la combinación de servicios de AWS necesaria para cumplir sus objetivos empresariales. El enfoque sin servidor emplea un flujo de trabajo asíncrono que se basa en notificaciones basadas en eventos, un almacenamiento flexible y la informática de Función como servicio (FaaS) para procesar las solicitudes. Puede utilizar el enfoque sin servidor para escalar y satisfacer la demanda y, al mismo tiempo, minimizar los costos.

Nota: Existen varias opciones para encadenar los servicios de AWS mediante un enfoque sin servidor. Por ejemplo, puede utilizar un enfoque que combine Lambda con Amazon S3 en lugar de Amazon SNS y Amazon SQS. Sin embargo, este patrón utiliza Amazon SNS y Amazon SQS porque este enfoque permite añadir varios puntos de integración al proceso de invocación de Lambda durante una notificación de eventos y ampliar la implementación para incluir varios oyentes en una orquestación sin servidor y, al mismo tiempo, minimizar la sobrecarga de procesamiento.

Requisitos previos y limitaciones

Requisitos previos 

Versiones de producto

  • AWS CDK 2.x

  • Python 3.9

Arquitectura

El siguiente diagrama ilustra cómo los servicios de AWS encadenados pueden permitir a un usuario cargar un archivo en un bucket de S3 para su procesamiento.

Flujo de trabajo para cargar un archivo en un bucket de S3 mediante servicios de AWS encadenados.

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

  1. Un usuario sube un archivo al bucket de S3.

  2. La carga inicia un evento de S3 que publica un mensaje en un tema de SNS. El mensaje contiene los detalles del evento de S3.

  3. El mensaje publicado en el tema de SNS se inserta en una cola de SQS, que está suscrita y recibe notificaciones sobre ese tema.

  4. Una función de Lambda sondea la cola de SQS (como fuente de eventos) y espera a que se procesen los mensajes.

  5. Cuando la función de Lambda recibe mensajes de la cola de SQS, los procesa y confirma la recepción de esos mensajes.

  6. Si Lambda no procesa un mensaje, ese mensaje se devuelve a la cola de SQS y, finalmente, se transfiere a una cola de mensajes fallidos de SQS.

Pila de tecnología

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWS Lambda

Herramientas

Servicios de AWS

  • Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento de objetos basado en la nube que le ayuda a almacenar, proteger y recuperar cualquier cantidad de datos.

  • Amazon Simple Notification Service (Amazon SNS) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.

  • 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.

  • AWS Lambda es un servicio de computación que ayuda a ejecutar código sin necesidad de aprovisionar ni administrar servidores. Ejecuta el código solo cuando es necesario y amplía la capacidad de manera automática, por lo que solo pagará por el tiempo de procesamiento que utilice.

Otras herramientas

  • El AWS Cloud Development Kit (AWS CDK) es la herramienta principal para interactuar con su aplicación de AWS CDK. Ejecuta su aplicación, interroga el modelo de aplicación que ha definido y produce e implementa las CloudFormation plantillas de AWS generadas por la CDK de AWS.

  • La interfaz de la línea de comandos de AWS (AWS CLI) es una herramienta de código abierto que le permite interactuar con los servicios de AWS mediante comandos en su intérprete de comandos de línea de comandos.

  • Python es un lenguaje de programación de uso general interpretado de alto nivel.

Código

El código de este patrón está disponible en el repositorio GitHub Chaining S3 to SNS to SQS to Lambda.

Epics

TareaDescripciónHabilidades requeridas

Clonar el repositorio.

Clone el repositorio y navegue hasta la carpeta python/s3-sns-sqs-lambda-chain.

Desarrollador de aplicaciones

Configurar un entorno virtual.

  1. En la AWS CDK, ejecute el comando python3 -m venv .venv.

  2. Ejecute el comando source .venv/bin/activate en macOS o .venv\Scripts\activate.bat en Windows.

Desarrollador de aplicaciones

Instale las dependencias.

Ejecute el comando pip install -r requirements.txt.

Desarrollador de aplicaciones
TareaDescripciónHabilidades requeridas

Realice pruebas unitarias.

  1. Ejecute el comando pip install -r requirements-dev.txt.

  2. (Opcional) Ejecute el cdk synth --no-staging > template.yml comando para generar la CloudFormation pila. Importante: puede inspeccionar la pila, pero evite generar recursos y artefactos por etapas.

  3. Ejecute el comando pytest para ejecutar todas las pruebas unitarias.

  4. (Opcional) Ejecute el comando pytest tests/unit/<test_filename> para ejecutar las pruebas de un archivo específico.

Desarrollador, ingeniero de pruebas
TareaDescripciónHabilidades requeridas

Configure el entorno de arranque.

Siga las instrucciones de Bootstrapping de la documentación de AWS para iniciar el entorno para la implementación de la CDK de AWS en cada región de AWS en la que se implementará la CloudFormation pila.

Nota: Este paso requiere que disponga de credenciales con acceso programático.

Desarrollador de aplicaciones, ingeniero e ingeniero de datos DevOps

Implemente la CloudFormation pila.

Ejecute el comando cdk deploy para crear e implementar la pila en la cuenta de AWS.

Desarrollador de aplicaciones, DevOps ingeniero, AWS DevOps
TareaDescripciónHabilidades requeridas

Elimine la CloudFormation pila y elimine los recursos asociados.

Para eliminar la CloudFormation pila que se creó y eliminar todos los recursos asociados, ejecute el comando run cdk destroy.

Desarrollador de aplicaciones