Infraestructura como código (IaC) - AWS Serverless Application Model

Infraestructura como código (IaC)

Con la infraestructura como Código (IaC), puede automatizar la implementación y la administración de los recursos de AWS, como las aplicaciones sin servidor. La IaC permite definir la infraestructura mediante código, lo que facilita la creación de versiones, el uso compartido y la replicación de las implementaciones. Este enfoque ayuda a realizar lo siguiente:

  • Acelerar el ciclo de desarrollo

  • Facilitar la administración de la configuración

  • Mejorar la fiabilidad y coherencia de las implementaciones

Herramientas de IaC para aplicaciones sin servidor de AWS

AWS ofrece numerosas herramientas de IaC para permitir la creación, implementación y administración de los recursos en la nube. En esta sección se explica cómo AWS SAM se integra en este ecosistema y cómo funciona con otras herramientas de IaC de AWS.

AWS CloudFormation

Con CloudFormation, es posible modelar y aprovisionar toda la infraestructura de AWS con plantillas YAML o JSON. CloudFormation gestiona la creación, actualización y eliminación de recursos de forma automática. Al implementar aplicaciones de AWS SAM, CloudFormation procesa las plantillas transformadas para crear y administrar recursos.

AWS Serverless Application Model (AWS SAM)

AWS SAM permite crear aplicaciones sin servidor con una sintaxis simplificada para definir recursos sin servidor. Puede usar plantillas de AWS SAM para aprovisionar funciones de Lambda, API, bases de datos y orígenes de eventos mediante una sintaxis YAML concisa. AWS SAM transforma estas plantillas en plantillas de CloudFormation durante la implementación.

nota

Si bien AWS SAM se especializa en aplicaciones sin servidor, puede usar cualquier tipo de recurso de CloudFormation en las plantillas de AWS SAM. Esto confiere flexibilidad para incluir recursos sin servidor cuando sea necesario.

AWS Cloud Development Kit (AWS CDK)

Con AWS CDK, se puede definir la infraestructura sin servidor mediante lenguajes de programación conocidos como TypeScript, Python, Java, C#/.Net o Go. Puede utilizar constructos de programación, como bucles y condiciones, para definir la infraestructura. AWS CDK genera plantillas para la implementación de CloudFormation. Ahora puede utilizar la CLI de AWS SAM para probar y depurar aplicaciones creadas con AWS CDK. Para obtener más información, consulte Probar aplicaciones de CDK de manera local.

Comparación de herramientas de IaC para aplicaciones sin servidor

Para elegir una herramienta de IaC para sus aplicaciones sin servidor, es importante tener presente las preferencias de su equipo, los requisitos del proyecto y los flujos de trabajo existentes. La siguiente tabla compara las características clave de las herramientas de IaC de AWS para el desarrollo sin servidor:

Herramienta

Uso principal

Lo mejor para

Funciona con AWS SAM

Cuándo elegir

CloudFormation

Administrar una infraestructura compleja de AWS

Aplicaciones que requieren un control detallado de los recursos de AWS

Las plantillas de AWS SAM se transforman en plantillas de CloudFormation durante la implementación

Para un control detallado sobre recursos que no están sin servidor

AWS SAM

Desarrollo de aplicaciones sin servidor

Equipos que crean aplicaciones sin servidor con Lambda

Funcionalidad nativa

Cuando se centra principalmente en arquitecturas sin servidor con funciones de Lambda, API Gateway, API y otros recursos sin servidor

AWS CDK

Definición de infraestructura mediante lenguajes de programación

Equipos que prefieran los lenguajes tipados y el enfoque basado en el código

Genera plantillas de AWS SAM y utiliza la CLI de AWS SAM para realizar pruebas

Cuando necesite una definición de infraestructura programática o una lógica de configuración de recursos compleja

nota

Si bien esta guía se centra en las herramientas de IaC nativas de AWS, Terraform es otra popular solución de IaC que se puede utilizar para definir aplicaciones sin servidor. La CLI de AWS SAM admite las pruebas locales de las funciones de Lambda definidas en Terraform. Para obtener más información, consulte Compatibilidad de la CLI de AWS SAM con Terraform.

Más información