AWSEncadene los servicios 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.

AWSEncadene los servicios mediante un enfoque sin servidor

Creado por Aniket Braganza () AWS

Entorno: producción

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

AWSservicios: Amazon S3; AmazonSNS; AmazonSQS; AWS Lambda

Resumen

Este patrón demuestra un enfoque escalable y sin servidor para procesar un archivo cargado al encadenar Amazon Simple Storage Service (Amazon S3), Amazon Simple Notification Service (AmazonSNS), Amazon Simple Queue Service (AmazonSQS) y Lambda. AWS El ejemplo del archivo cargado es para fines ilustrativos. Puede utilizar un enfoque sin servidor para completar otras tareas, uniendo la combinación de AWS servicios 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 AWS servicios mediante un enfoque sin servidor. Por ejemplo, puede utilizar un enfoque que combine Lambda con Amazon S3 en lugar de Amazon y SNS 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 evento y ampliar la implementación para incluir varios oyentes en una organización sin servidor y, al mismo tiempo, minimizar la sobrecarga de procesamiento.

Requisitos previos y limitaciones

Requisitos previos 

Versiones de producto

  • AWSCDK2.x

  • Python 3.9

Arquitectura

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

Flujo de trabajo para cargar un archivo a un bucket de S3 mediante servicios 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. SNS El mensaje contiene los detalles del evento de S3.

  3. El mensaje publicado en el SNS tema se inserta en una SQS cola, a la que se suscribe y recibe notificaciones sobre ese tema.

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

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

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

Pila de tecnología

  • Amazon S3

  • Amazon SNS

  • Amazon SQS

  • AWSLambda

Herramientas

AWSservicios

  • 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 (AmazonSNS) le ayuda a coordinar y gestionar el intercambio de mensajes entre editores y clientes, incluidos los servidores web y las direcciones de correo electrónico.

  • Amazon Simple Queue Service (AmazonSQS) proporciona una cola alojada segura, duradera y disponible que le ayuda a integrar y desacoplar sistemas y componentes de software distribuidos.

  • AWSLambda es un servicio informático que le ayuda a ejecutar código sin necesidad de aprovisionar o 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

  • AWSCloud Development Kit (AWSCDK) es la herramienta principal para interactuar con tu AWS CDK aplicación. Ejecuta tu aplicación, examina el modelo de aplicación que has definido y produce e implementa las AWS CloudFormation plantillas generadas por. AWS CDK

  • AWSLa interfaz de línea de comandos (AWSCLI) es una herramienta de código abierto que te ayuda a interactuar con los AWS servicios mediante comandos en el shell 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 to SNS 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 el AWSCDK, ejecute el python3 -m venv .venv comando.

  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 AWS documentación para iniciar el entorno para su AWS CDK despliegue en cada AWS región en la que se vaya a implementar la CloudFormation pila.

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

Desarrollador de aplicaciones, DevOps ingeniero e ingeniero de datos

Implemente la CloudFormation pila.

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

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