Reutilización del código y los recursos mediante aplicaciones anidadas en AWS SAM - AWS Serverless Application Model

Reutilización del código y los recursos mediante aplicaciones anidadas en AWS SAM

Una aplicación sin servidor puede incluir una o más aplicaciones anidadas. Una aplicación anidada forma parte de una aplicación más grande y se puede empaquetar e implementar como un artefacto independiente o como un componente de una aplicación más grande. Las aplicaciones anidadas permiten convertir el código de uso frecuente en su propia aplicación, que luego se puede reutilizar en una aplicación sin servidor más grande o en varias aplicaciones sin servidor.

A medida que crecen las arquitecturas sin servidor, suelen surgir patrones comunes en los que los mismos componentes se definen en varias plantillas de aplicaciones. Las aplicaciones anidadas le permiten reutilizar el código, la funcionalidad, los recursos y las configuraciones comunes en plantillas de AWS SAM independientes, lo que le permite mantener el código de un solo origen. Esto reduce la duplicación de códigos y configuraciones. Además, este enfoque modular agiliza el desarrollo, mejora la organización del código y facilita la coherencia entre las aplicaciones sin servidor. Con las aplicaciones anidadas, puede concentrarse más en la lógica empresarial exclusiva de tu aplicación.

Para definir una aplicación anidada en tu aplicación sin servidor, utilice el tipo de recurso AWS::Serverless::Application.

Puede definir aplicaciones anidadas a partir de las dos fuentes siguientes:

  • Una aplicación de AWS Serverless Application Repository: usted puede definir aplicaciones anidadas mediante las aplicaciones que están disponibles para su cuenta en el AWS Serverless Application Repository. Pueden ser aplicaciones privadas de su cuenta, aplicaciones que se comparten de forma privada con su cuenta o aplicaciones que se comparten públicamente en el AWS Serverless Application Repository. Para obtener más información sobre los distintos niveles de permisos de implementación, consulta los Permisos de implementación de aplicaciones y la Publicación de aplicaciones en la Guía para desarrolladores AWS Serverless Application Repository.

  • Una aplicación local: usted puede definir aplicaciones anidadas mediante aplicaciones almacenadas en el sistema de archivos local.

Consulte las siguientes secciones para obtener información detallada sobre cómo usar AWS SAM para definir estos dos tipos de aplicaciones anidadas en una aplicación sin servidor.

nota

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.

Definir una aplicación anidada desde el AWS Serverless Application Repository

Usted puede definir aplicaciones anidadas mediante las aplicaciones que están disponibles en el AWS Serverless Application Repository. También puede almacenar y distribuir aplicaciones que contengan aplicaciones anidadas mediante el AWS Serverless Application Repository. Para revisar los detalles de una aplicación anidada en el AWS Serverless Application Repository, puede usar el SDK de AWS, la AWS CLI o la consola Lambda.

Para definir una aplicación alojada en AWS Serverless Application Repository la plantilla AWS SAM de tu aplicación sin servidor, utilice el botón Copiar como recurso SAM de la página de detalles de cada aplicación de AWS Serverless Application Repository. Para ello, sigue estos pasos:

  1. Asegúrese de que ha iniciado sesión en Consola de administración de AWS.

  2. Busque la aplicación que desa anidar en AWS Serverless Application Repository siguiendo los pasos de la sección Exploración, búsqueda e implementación de aplicaciones de la Guía para desarrolladores de AWS Serverless Application Repository.

  3. Seleccione el botón Copiar como recurso SAM. La sección de plantillas SAM de la aplicación que está viendo ahora está en su portapapeles.

  4. Pegue la sección de la plantilla SAM en la sección de Resources: del archivo de plantilla SAM de la aplicación que desee incluir en esta aplicación.

A continuación se muestra un ejemplo de una sección de plantillas SAM para una aplicación anidada que está alojada en el AWS Serverless Application Repository:

Transform: AWS::Serverless-2016-10-31 Resources: applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ApplicationId: arn:aws:serverlessrepo:us-east-1:123456789012:applications/application-alias-name SemanticVersion: 1.0.0 Parameters: # Optional parameter that can have default value overridden # ParameterName1: 15 # Uncomment to override default value # Required parameter that needs value to be provided ParameterName2: YOUR_VALUE

Si no hay ninguna configuración de parámetros obligatoria, puede omitir la sección Parameters: de la plantilla.

importante

Las aplicaciones que contienen aplicaciones anidadas alojadas en el AWS Serverless Application Repository heredan las restricciones de uso compartido de las aplicaciones anidadas.

Por ejemplo, supongamos que una aplicación se comparte públicamente, pero contiene una aplicación anidada que solo se comparte privadamente con la cuenta de AWS que creó la aplicación principal. En este caso, si su cuenta de AWS no tiene permiso para implementasr la aplicación anidada, no podrá implementasr la aplicación principal. Para más información sobre los permisos para implementasr aplicaciones, consulta Permisos de implementación de aplicaciones y Publicación de aplicaciones en la Guía del desarrollador de AWS Serverless Application Repository.

Definir una aplicación anidada desde el sistema de archivos local

Usted puede definir aplicaciones anidadas mediante aplicaciones almacenadas en el sistema de archivos local. Para ello, especifica la ruta al archivo de plantillas de AWS SAM que está almacenado en el sistema de archivos local.

A continuación se muestra un ejemplo de una sección de plantillas SAM para una aplicación local anidada:

Transform: AWS::Serverless-2016-10-31 Resources: applicationaliasname: Type: AWS::Serverless::Application Properties: Location: ../my-other-app/template.yaml Parameters: # Optional parameter that can have default value overridden # ParameterName1: 15 # Uncomment to override default value # Required parameter that needs value to be provided ParameterName2: YOUR_VALUE

Si no hay ninguna configuración de parámetros, puede omitir la sección Parameters: de la plantilla.

Implementar aplicaciones anidadas

Puede implementar tu aplicación anidada mediante el comando sam deploy de la AWS SAM CLI. Para obtener más información, consulta Implementación de la aplicación y los recursos con AWS SAM.

nota

Cuando implementa una aplicación que contiene aplicaciones anidadas, debe reconocer que contiene aplicaciones anidadas. Esto se realiza pasando CAPABILITY_AUTO_EXPAND a la API CreateCloudFormationChangeSet o usando el comando aws serverlessrepo create-cloud-formation-change-set de la AWS CLI.

Para obtener más información sobre cómo reconocer las aplicaciones anidadas, consulta Reconocimiento de los Roles de IAM, las políticas de recursos y las aplicaciones anidadas al implementasr aplicaciones en la Guía para desarrolladores de AWS Serverless Application Repository.