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
Una cuenta de AWS activa
Acceso programático a la cuenta de AWS. Para obtener más información, consulte:
Requisitos previos de la documentación del AWS Cloud Development Kit (AWS CDK)
Requisitos previos de la documentación de la Interfaz de la línea de comandos de AWS (AWS CLI)
AWS CDK, instalada
CLI de AWS, instalada y configurada
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.](images/pattern-img/8b298cfc-509a-4502-97b2-f1af09914b99/images/f3ca9202-96eb-40cf-85cd-4bb569fcd083.png)
En el diagrama, se muestra el siguiente flujo de trabajo:
Un usuario sube un archivo al bucket de S3.
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.
El mensaje publicado en el tema de SNS se inserta en una cola de SQS, que está suscrita y recibe notificaciones sobre ese tema.
Una función de Lambda sondea la cola de SQS (como fuente de eventos) y espera a que se procesen los mensajes.
Cuando la función de Lambda recibe mensajes de la cola de SQS, los procesa y confirma la recepción de esos mensajes.
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
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clonar el repositorio. | Clone el repositorio | Desarrollador de aplicaciones |
Configurar un entorno virtual. |
| Desarrollador de aplicaciones |
Instale las dependencias. | Ejecute el comando | Desarrollador de aplicaciones |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Realice pruebas unitarias. |
| Desarrollador, ingeniero de pruebas |
Tarea | Descripción | Habilidades 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 | Desarrollador de aplicaciones, DevOps ingeniero, AWS DevOps |
Tarea | Descripción | Habilidades 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 | Desarrollador de aplicaciones |