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 AWS SAM
Creada por el Dr. Rahul Sharad Gaikwad (AWS), Dmitry Gulin (), Ishwar Chaauthaiwale () y Tabby Ward (AWS) AWS AWS
aws-sam-nested-stackRepositorio | Entorno: PoC o piloto | Tecnologías: modernización; sin servidor; DevOps |
Carga de trabajo: todas las demás cargas de trabajo | AWSservicios: AWS Serverless Application Repository |
Resumen
En Amazon Web Services (AWS), AWS Serverless Application Model (AWSSAM) es un marco de código abierto que proporciona una sintaxis abreviada para expresar funcionesAPIs, bases de datos y mapeos de fuentes de eventos. Con solo unas pocas líneas para cada recurso, puede definir la aplicación que desee y modelarla utilizando. YAML Durante la implementación, SAM transforma y expande la SAM sintaxis en una AWS CloudFormation sintaxis que pueda usar para crear aplicaciones sin servidor con mayor rapidez.
AWSSAMsimplifica 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 AWS SAM plantillas 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.
Al utilizar 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 AWS SAM Serverless Application Repository. 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 utiliza un ejemplo de aplicación de carrito de compras sin servidor. AWS
Requisitos previos y limitaciones
Requisitos previos
Una cuenta activa AWS
Una nube privada virtual existente (VPC) y subredes
Un entorno de desarrollo integrado, como Visual Studio Code (para obtener más información, consulte Herramientas sobre las que basarse 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 línea de AWS SAM comandos (AWSSAMCLI), pero esta arquitectura debería funcionar con versiones posteriores AWS SAMCLI.
Arquitectura
Pila de tecnología de destino
Amazon API Gateway
AWS SAM
Amazon Cognito
Amazon DynamoDB
AWSLambda
cola de Amazon Simple Queue Service (AmazonSQS)
Arquitectura de destino
El siguiente diagrama muestra cómo se realizan las solicitudes de los usuarios a los servicios de compras mediante una llamada. APIs 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 para el. APIs
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 los elementos antiguos como parte de un flujo de trabajo sincrónico, los mensajes se colocan en una SQS cola, lo que inicia una función de trabajo para eliminarlos.
En esta configuración de solución, AWS SAM CLI sirve como interfaz para las pilas. AWS CloudFormation AWSSAMlas plantillas despliegan automáticamente las aplicaciones anidadas. La SAM plantilla principal llama a las plantillas secundarias y la CloudFormation pila principal despliega las pilas secundarias. Cada pila secundaria crea los AWS recursos que se definen en las AWS SAM CloudFormation plantillas.
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 Gateway API
La CloudFormation pila de compras contiene una función Lambda, Amazon API Gateway, la SQS cola y la base de datos Amazon DynamoDB.
Herramientas
Herramientas
Amazon API Gateway le ayuda a crear, publicar, mantener, supervisar y proteger RESTHTTP, y WebSocket APIs a cualquier escala.
AWS CloudFormationle ayuda a configurar AWS los recursos, aprovisionarlos de forma rápida y coherente y administrarlos durante todo su ciclo de vida en todas las AWS cuentas y regiones.
Amazon Cognito ofrece autenticación, autorización y administración de usuarios para aplicaciones móviles y web.
Amazon DynamoDB es un servicio SQL sin base de datos totalmente gestionado que proporciona un rendimiento rápido, predecible y escalable.
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.
AWSEl modelo de aplicaciones sin servidor (AWSSAM) es un marco de código abierto que le ayuda a crear aplicaciones sin servidor en la nube. AWS
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.
Código
El código de este patrón está disponible en el repositorio de muestras de GitHub AWSSAMNested Stack
Epics
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Instalar AWS SAMCLI. | Para instalarlo AWS SAMCLI, consulte las instrucciones de la AWSSAMdocumentación. | DevOps ingeniero |
Configure AWS las credenciales. | Para configurar AWS las credenciales de forma que AWS SAM CLI puedan realizar llamadas a AWS los servicios en su nombre, ejecute el
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 |
---|---|---|
Clona el repositorio AWS SAM de código. |
| DevOps ingeniero |
Implemente plantillas para iniciar el proyecto. | Ejecute el comando | DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Revise las plantillas AWS SAM de la aplicación. | 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 |
Compila y crea el código AWS SAM de la plantilla. | Con el AWS SAMCLI, ejecute el siguiente comando.
| DevOps ingeniero |
Tarea | Descripción | Habilidades requeridas |
---|---|---|
Implemente las aplicaciones. | Para lanzar el código de SAM plantilla que crea las CloudFormation pilas de aplicaciones anidadas y despliega el código en el AWS entorno, 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 AWS CloudFormation pilas y AWS los recursos que se definieron en las AWS SAM plantillas, haga lo siguiente:
| DevOps ingeniero |
Recursos relacionados
Referencias
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.