Automatice la implementación de aplicaciones anidadas mediante AWS SAM - 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.

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 de código: -sample

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.

POSTy PUT operaciones desde API Gateway hasta funciones Lambda, DynamoDB y Product Service.

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.

Proceso de cuatro pasos que se utiliza AWS SAM CLI con una pila principal y tres CloudFormation pilas secundarias.
  1. Genere e implemente las pilas.

  2. La CloudFormation pila de autenticación contiene Amazon Cognito.

  3. La CloudFormation pila de productos contiene una función Lambda y Amazon Gateway API

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

TareaDescripciónHabilidades 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 aws configure comando y siga las instrucciones.

$aws configure AWS Access Key ID [None]: <your_access_key_id> AWS Secret Access Key [None]: your_secret_access_key Default region name [None]: Default output format [None]:

Para obtener más información sobre cómo configurar sus credenciales, consulte credenciales de autenticación y acceso.

DevOps ingeniero
TareaDescripciónHabilidades requeridas

Clona el repositorio AWS SAM de código.

  1. Introduzca el siguiente comando para clonar el repositorio de pilas de muestras anidadas de AWS para este patrón.

    git clone https://github.com/aws-samples/aws-sam-nested-stack-sample.git
  2. Acceda al directorio clonado ejecutando el siguiente comando.

    cd aws-sam-nested-stack-sample
DevOps ingeniero

Implemente plantillas para iniciar el proyecto.

Ejecute el comando SAM init para iniciar el proyecto. Cuando se le pida que elija una fuente de plantilla, elija Custom Template Location.

DevOps ingeniero
TareaDescripciónHabilidades 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:

  • auth.yaml— Esta plantilla configura los recursos relacionados con la autenticación, como Amazon Cognito y Systems AWS Manager Parameter Store.

  • product-mock.yaml— Esta plantilla implementa recursos relacionados con el producto, como las funciones de Lambda y Amazon Gateway. API

  • shoppingcart-service.yaml— Esta plantilla configura los recursos relacionados con los carritos de compras, como AWS Identity and Access Management ()IAM, las tablas de DynamoDB y las funciones de Lambda.

DevOps ingeniero

Revise la plantilla principal.

Revise la plantilla que invocará las plantillas de aplicación anidadas. En este ejemplo, la plantilla principal es template.yml. Todas las aplicaciones independientes están anidadas en la plantilla principal única template.yml.

DevOps ingeniero

Compila y crea el código AWS SAM de la plantilla.

Con el AWS SAMCLI, ejecute el siguiente comando.

sam build
DevOps ingeniero
TareaDescripciónHabilidades 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.

sam deploy --guided --stack-name shopping-cart-nested-stack --capabilities CAPABILITY_IAM CAPABILITY_AUTO_EXPAND

El comando aparecerá con algunas preguntas. Responda a todas las preguntas con y.

DevOps ingeniero
TareaDescripciónHabilidades 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:

  1. Inicie sesión en la consola AWS de administración y navegue hasta la CloudFormationconsola.

  2. Compruebe que las pilas principal y secundaria estén en la lista.

    En este ejemplo, sam-shopping-cart es la pila principal que llama a las pilas anidadas de Auth, Product y Shopping.

    La pila de productos proporciona el URL enlace Product API Gateway como salida.

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.