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.
Automatice la implementación de aplicaciones anidadas mediante SAM de AWS
Creado por Dr. Rahul Sharad Gaikwad (AWS), Dmitry Gulin (AWS), Ishwar Chaauthaiwale (AWS) y Tabby Ward (AWS)
Entorno: PoC o piloto | Tecnologías: modernización; sin servidor; DevOps | |
Carga de trabajo: todas las demás cargas de trabajo | Servicios de AWS: Repositorio de aplicaciones sin servidor de AWS |
Resumen
En Amazon Web Services (AWS), el AWS Serverless Application Model (AWS SAM) es un marco de código abierto que proporciona una sintaxis abreviada para expresar funciones, API, bases de datos y asignaciones de orígenes de eventos. Con solo unas pocas líneas para cada recurso, puede definir la aplicación que desee y modelarla mediante YAML. Durante la implementación, SAM transforma y expande la sintaxis de SAM en una CloudFormation sintaxis de AWS que puede usar para crear aplicaciones sin servidor con mayor rapidez.
SAM de AWS simplifica el desarrollo, la implementación y la administración de aplicaciones sin servidor en la plataforma AWS. Proporciona un marco estandarizado, una implementación más rápida, capacidades de pruebas locales, administración de recursos, una integración perfecta con las herramientas de desarrollo y una comunidad de apoyo. Estas características lo convierten en una herramienta valiosa para crear aplicaciones sin servidor de manera eficiente y eficaz.
Este patrón utiliza plantillas SAM de AWS para automatizar la implementación de aplicaciones anidadas. Una aplicación anidada es una aplicación dentro de otra aplicación. Las aplicaciones principales llaman a las aplicaciones secundarias. Se trata de componentes con acoplamiento flexible de una arquitectura sin servidor.
Con aplicaciones anidadas, puede crear rápidamente arquitecturas sin servidor altamente sofisticadas mediante la reutilización de servicios o componentes que se crean y mantienen de forma independiente, pero que se componen con SAM de AWS y Repositorio de aplicaciones sin servidor. Las aplicaciones anidadas le ayudan a crear aplicaciones más potentes, evitar la duplicación del trabajo y garantizar la coherencia y las prácticas recomendadas en todos sus equipos y organizaciones. Para mostrar las aplicaciones anidadas, el patrón implementa un ejemplo de aplicación de carrito de compras sin servidor de AWS
Requisitos previos y limitaciones
Requisitos previos
Una cuenta de AWS activa
Una nube privada virtual (VPC) y subredes existentes
Un entorno de desarrollo integrado, como AWS Cloud9 o Visual Studio Code (para obtener más información, consulte Herramientas para crear en AWS
) Biblioteca de ruedas de Python instalada con pip install wheel, si aún no está instalada
Limitaciones
El número máximo de aplicaciones que se pueden anidar en una aplicación sin servidor es de 200.
El número máximo de parámetros que puede tener una aplicación anidada es 60.
Versiones de producto
Esta solución se basa en la versión 1.21.1 de la interfaz de la línea de comandos de SAM de AWS (CLI de SAM de AWS), pero esta arquitectura debería funcionar con versiones posteriores de la CLI de SAM de AWS.
Arquitectura
Pila de tecnología de destino
Amazon API Gateway
SAM de AWS
Amazon Cognito
Amazon DynamoDB
AWS Lambda
Cola de Amazon Simple Queue Service (Amazon SQS)
Arquitectura de destino
El siguiente diagrama muestra cómo se realizan las solicitudes de los usuarios a los servicios de compras mediante llamadas a las API. La solicitud del usuario, incluida toda la información necesaria, se envía a Amazon API Gateway y al autorizador de Amazon Cognito, que ejecuta los mecanismos de autenticación y autorización de las API.
Cuando se agrega, elimina o actualiza un elemento en DynamoDB, se coloca un evento en DynamoDB Streams, que a su vez inicia una función de Lambda. Para evitar la eliminación inmediata de elementos antiguos como parte de un flujo de trabajo sincrónico, los mensajes se colocan en una cola de SQS, lo que inicia una función de trabajo para eliminarlos.
![Operaciones POST y PUT desde API Gateway hasta funciones Lambda, DynamoDB y Product Service.](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5b454bae-5fd4-405d-a37d-6bafc3fcf889.png)
En esta configuración de solución, la CLI de AWS SAM sirve de interfaz para las CloudFormation pilas de AWS. Las plantillas SAM de AWS implementan automáticamente aplicaciones anidadas. La plantilla SAM principal llama a las plantillas secundarias y la CloudFormation pila principal implementa las pilas secundarias. Cada pila secundaria crea los recursos de AWS que se definen en las CloudFormation plantillas de AWS SAM.
![Proceso de cuatro pasos mediante AWS SAM CLI con una pila principal y tres secundarias CloudFormation .](images/pattern-img/218adecc-b5b8-4193-9012-b5d584e2e128/images/5828026e-72ad-4a3f-a5f2-bffac0f13e42.png)
Genere e implemente las pilas.
La CloudFormation pila de autenticación contiene Amazon Cognito.
La CloudFormation pila de productos contiene una función Lambda y Amazon API Gateway
La CloudFormation pila de compras contiene una función Lambda, Amazon API Gateway, la cola SQS y la base de datos Amazon DynamoDB.
Herramientas
Herramientas
Amazon API Gateway le ayuda a crear, publicar, mantener, supervisar y proteger REST, HTTP y WebSocket API a cualquier escala.
AWS le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.
Amazon Cognito ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web.
Amazon DynamoDB es un servicio de base de datos de NoSQL completamente administrado que ofrece un rendimiento rápido, predecible y escalable.
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.
AWS Serverless Application Model (AWS SAM) es un marco de código abierto que permite crear aplicaciones sin servidor en la nube de AWS.
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.
Código
El código de este patrón está disponible en el repositorio de muestras de GitHub AWS SAM Nested Stack
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instalar la CLI de SAM de AWS. | Para instalar la CLI de SAM de AWS, siga las instrucciones de la documentación de SAM de AWS. | DevOps ingeniero |
Configure las credenciales de AWS. | Para configurar las credenciales de AWS para que la CLI de SAM de AWS pueda realizar llamadas a los servicios de AWS en su nombre, ejecute el comando
Para obtener más información sobre cómo configurar sus credenciales, consulte credenciales de autenticación y acceso. | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Clone el repositorio de código de SAM de AWS. |
| DevOps ingeniero |
Implemente plantillas para iniciar el proyecto. | Ejecute el comando | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Revise las plantillas de aplicaciones SAM de AWS. | Revise las plantillas de las aplicaciones anidadas. En este ejemplo se utilizan las siguientes plantillas de aplicaciones anidadas:
| DevOps ingeniero |
Revise la plantilla principal. | Revise la plantilla que invocará las plantillas de aplicación anidadas. En este ejemplo, la plantilla principal es | DevOps ingeniero |
Compile y cree el código de la plantilla SAM de AWS. | Ejecute el siguiente comando utilizando la CLI de SAM de AWS.
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente las aplicaciones. | Para lanzar el código de plantilla SAM que crea las CloudFormation pilas de aplicaciones anidadas y despliega el código en el entorno de AWS, ejecute el siguiente comando.
El comando aparecerá con algunas preguntas. Responda a todas las preguntas con | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Verifique las pilas. | Para revisar las CloudFormation pilas de AWS y los recursos de AWS que se definieron en las plantillas de AWS SAM, haga lo siguiente:
| DevOps ingeniero |
Recursos relacionados
Referencias
Microservicio de carrito de compras sin servidor
(ejemplo de aplicación de AWS)
Tutoriales y videos
Información adicional
Una vez colocado todo el código, el ejemplo tiene la siguiente estructura de directorios:
sam_stacks: esta carpeta contiene la capa
shared.py
. Una capa es un archivo que contiene bibliotecas, un tiempo de ejecución personalizado u otras dependencias. Con las capas, puede utilizar las bibliotecas en la función sin necesidad de incluirlas en el paquete de implementación.product-mock-service— Esta carpeta contiene todos los archivos y funciones de Lambda relacionados con el producto.
shopping-cart-service— Esta carpeta contiene todas las funciones y archivos de Lambda relacionados con las compras.