Aspectos generales

AWS CloudFormation es un servicio que ofrece a desarrolladores y empresas una manera sencilla de crear una colección de recursos de AWS y de terceros. También ayuda a aprovisionarlos y administrarlos de forma ordenada y predecible.

Los desarrolladores pueden implementar y actualizar la informática, la base de datos y muchos otros recursos en un estilo simple y enunciativo que abstrae la complejidad de las API de recursos específicos. AWS CloudFormation está diseñado para permitir que los ciclos de vida de los recursos se administren de manera repetida, predecible y segura. Al mismo tiempo, permite restauraciones automáticas, administración automatizada del estado y administración de recursos en todas las cuentas y regiones. Las mejoras y las opciones que se han puesto a disposición recientemente permiten múltiples formas de crear recursos, incluido el uso de AWS CDK para codificar en idiomas de nivel superior, la importación de recursos existentes, la detección de cambios en la configuración y un nuevo registro que facilita la creación de tipos personalizados de recursos que heredan muchos beneficios básicos de CloudFormation.

Estos servicios se han diseñado para complementarse entre sí. AWS Elastic Beanstalk proporciona un entorno en el que es posible implementar y ejecutar aplicaciones en la nube fácilmente. Está integrado con herramientas de desarrollo y ofrece una experiencia única para administrar el ciclo de vida de las aplicaciones. Si las cargas de trabajo de su aplicación se pueden administrar como cargas de trabajo de Elastic Beanstalk, puede disfrutar de una experiencia más completa en la creación y la actualización de aplicaciones. Elastic Beanstalk usa CloudFormation en segundo plano para crear y mantener recursos. Si los requisitos de su aplicación exigen un control más personalizado, la funcionalidad adicional de CloudFormation le brinda más opciones para controlar sus cargas de trabajo.

AWS CloudFormation es un mecanismo de aprovisionamiento práctico para una amplia gama de recursos de AWS y de terceros. Admite las necesidades de infraestructura de muchos tipos diferentes de aplicaciones, como aplicaciones empresariales existentes, heredadas o creadas con diversos recursos de AWS y soluciones basadas en contenedores (incluidas aquellas creadas con AWS Elastic Beanstalk).

AWS CloudFormation admite entornos de aplicaciones de Elastic Beanstalk como uno de los tipos de recursos de AWS. Esto le permite, por ejemplo, crear y administrar una aplicación alojada en AWS Elastic Beanstalk junto con una base de datos de RDS para almacenar los datos de la aplicación. También se puede agregar al grupo cualquier otro recurso de AWS compatible.

CloudFormation presenta cuatro conceptos: una plantilla es un archivo de código declarativo JSON o YAML que describe el estado previsto de todos los recursos que necesita para implementar su aplicación. Una pila implementa y administra el grupo de recursos descritos en su plantilla y permite que el estado y las dependencias de esos recursos se administren juntos. Un conjunto de cambios es una vista previa de los cambios que ejecutarán las operaciones de pila para crear, actualizar o eliminar recursos. Un conjunto de pilas es un grupo de pilas que se administran juntas y que pueden replicar un grupo.

Para ver una lista completa de los recursos de AWS compatibles y sus características, visite la página de servicios de AWS compatibles en el historial de versiones de la documentación.

El Registro de AWS CloudFormation y los recursos personalizados de AWS CloudFormation permiten administrar recursos adicionales de AWS y de terceros.

Sí, es posible. CloudFormation no interfiere; usted mantiene el control total de todos los elementos de la infraestructura, a la vez que podrá continuar con el uso de todas las herramientas existentes de AWS y de terceros para administrar los recursos de AWS. Sin embargo, dado que CloudFormation puede permitir reglas adicionales, prácticas recomendadas y controles de cumplimiento, recomendamos que permita que CloudFormation administre los cambios en los recursos. Este enfoque controlado y predecible ayuda a administrar cientos o miles de recursos en la cartera de aplicaciones.

Las plantillas de CloudFormation son archivos de texto con formato JSON o YAML compuestos por cinco tipos de elementos:

1. Una lista opcional de parámetros de plantilla (valores de entrada suministrados en el momento de creación de la pila)
2. Una lista opcional de valores de salida (p. ej., la dirección URL completa de una aplicación web)
3. Una lista opcional de tablas de datos utilizadas para buscar valores de configuración estáticos (p. ej., nombres de AMI)
4. La lista de recursos de AWS y sus valores de configuración
5. Un número de versión de formato de archivo de plantilla

Los parámetros de las plantillas se utilizan para personalizar aspectos de la plantilla en el tiempo de ejecución, cuando la pila está compilada. Por ejemplo, el tamaño de la base de datos de Amazon RDS, los tipos de instancias de Amazon EC2, los números de puerto de servidor web y la base de datos pueden transmitirse a AWS CloudFormation en el momento de creación de una pila. Cada parámetro puede tener un valor y una descripción predeterminados, y se puede marcar como “NoEcho” para ocultar el valor real que haya especificado en la pantalla y en los registros de eventos de AWS CloudFormation. Al crear una pila de AWS CloudFormation, la consola de administración de AWS se sintetizará automáticamente y presentará un formato de diálogo emergente el que podrá editar los valores de los parámetros.

Los valores de salida son una forma cómoda de presentar los recursos clave de una pila (por ejemplo, la dirección de un balanceador de carga de Elastic Load Balancing o una base de datos de Amazon RDS) al usuario a través de la consola de administración de AWS o de las herramientas de línea de comandos. Puede utilizar funciones sencillas para concatenar los literales de cadena y el valor de los atributos asociados a los recursos de AWS reales. Una plantilla también puede aprovechar los tipos de recursos del Registro, sus tipos privados personalizados, sus macros y la recuperación de parámetros de configuración de AWS Secrets Manager y AWS System Manager Parameter Store.

Puede asignar nombres lógicos a los recursos de AWS en una plantilla. Cuando se crea una pila, AWS CloudFormation vincula el nombre lógico con el nombre del recurso real de AWS correspondiente. Los nombres de recursos reales son una combinación del nombre de recurso lógico y de la pila. Esto permite la creación de varias pilas a partir de una plantilla sin miedo a que exista confrontación de nombres entre los recursos de AWS.

Aunque AWS CloudFormation permite nombrar algunos recursos, como los buckets de Amazon S3, no se puede dar un nombre a todos. Cuando asigna nombres a los recursos, se restringe la capacidad de reutilización de las plantillas y pueden provocarse conflictos de nombre si una actualización sustituye un recurso. Para reducir al mínimo estos problemas, CloudFormation evalúa cada caso particular para admitir que se asignen nombres a los recursos.

Sí. AWS CloudFormation proporciona un conjunto de scripts para el proceso de arranque de las aplicaciones que le permiten instalar paquetes, archivos y servicios en sus instancias EC2, con la simple descripción en la plantilla de CloudFormation. Para obtener información más detallada e instrucciones prácticas, consulte Proceso de arranque de aplicaciones a través de AWS CloudFormation.

CloudFormation también se puede integrar con Systems Manager para guiar y mantener las instalaciones de software con los documentos de automatización de Systems Manager.

Sí. AWS CloudFormation se puede utilizar para dar arranque tanto al software Chef Server como Chef Client en sus instancias EC2. Para obtener información más detallada e instrucciones prácticas, consulte Integración de AWS CloudFormation con Chef.

Sí. AWS CloudFormation se puede utilizar para dar arranque tanto al software Puppet Master como Puppet Client en sus instancias EC2. Para obtener información más detallada e instrucciones, consulte el artículo Integración de AWS CloudFormation con Puppet.

Sí. CloudFormation puede arrancar su motor Terraform en sus instancias EC2 y puede utilizar los proveedores de recursos de Terraform para crear recursos en pilas, aprovechando la administración del estado de las pilas, las dependencias, la estabilización y la restauración.

Sí. Los recursos de Amazon EC2 que admiten la característica de etiquetado también se pueden etiquetar en una plantilla de AWS. Los valores de etiqueta pueden hacer referencia a parámetros de plantilla, otros nombres de recurso, valores de atributos de recurso (por ejemplo, direcciones) o valores calculados mediante funciones sencillas (por ejemplo, una lista concatenada de cadenas). CloudFormation etiqueta automáticamente los volúmenes de Amazon EBS y las instancias de Amazon EC2 con el nombre de la pila de CloudFormation de la que forman parte.

Sí. Puede utilizar funciones simples para concatenar los literales de cadena y los valores de atributo de los recursos de AWS, y pasarlos a los campos de datos de usuario en su plantilla. Consulte nuestras plantillas de muestra para obtener más información sobre estas funciones fáciles de usar.

De manera predeterminada, se activa la función “automatic rollback on error” (restauración automática cuando se produce un error). Esto le indicará a CloudFormation que solo debe crear o actualizar todos los recursos en su pila si todas las operaciones individuales tienen éxito. Si no es así, CloudFormation revierte la pila a la última configuración estable conocida. Resulta útil, por ejemplo, cuando supera accidentalmente su límite predeterminado de direcciones IP elásticas o no tiene acceso a una AMI de EC2 que intenta ejecutar. Esta característica permite confiar en el hecho de que las pilas se crean en su totalidad o no se crean, lo que simplifica la administración del sistema y las soluciones en capas creadas encima de CloudFormation.

Sí. Una de las opciones que ofrece CloudFormation es un recurso WaitCondition que actúa como barrera y bloquea la creación de otros recursos hasta que se reciba una señal de finalización de una fuente externa, como su aplicación o el sistema de administración. Otras opciones incluyen la creación de lógica personalizada con funciones de AWS Lambda.

Sí. CloudFormation permite definir políticas de eliminación para los recursos de una plantilla. Puede especificar que se creen instantáneas para volúmenes de Amazon EBS o instancias de base de datos de Amazon RDS antes de su eliminación. También puede especificar que un recurso se conserve y no se elimine cuando se elimine la pila. Esto es útil para conservar los buckets de Amazon S3 cuando se elimine la pila.

Sí. CloudFormation admite la creación de VPC, subredes, gateways, tablas de rutas y ACL de red, así como de recursos, como IP elásticas, instancias de Amazon EC2, grupos de seguridad de EC2, grupos de Auto Scaling, balanceadores de carga elásticos, instancias de bases de datos de Amazon RDS y grupos de seguridad de Amazon RDS en una VPC.

Sí. Puede utilizar CloudFormation para modificar y actualizar los recursos de sus pilas existentes de manera controlada y previsible. Mediante el uso de plantillas para administrar los cambios de su pila, tiene la posibilidad de aplicar el control de la versión de su infraestructura de AWS de la misma forma que controla la versión del software que se ejecute en ella.

Sí. Con la importación de recursos, puede incorporar un recurso existente a la administración de AWS CloudFormation mediante la importación de recurso.

Introducción

Para registrarse en CloudFormation, haga clic en “Crear cuenta gratuita” en la página del producto de CloudFormation. Después de registrarse, consulte la documentación sobre CloudFormation, la cual incluye la Guía de introducción.

El registro en CloudFormation requiere que tenga un número de teléfono y una dirección de email válidos guardados en AWS por si alguna vez debemos contactarlo. Para verificar el número de teléfono solo necesita unos minutos: recibirá una llamada telefónica automática durante el proceso de registro y deberá especificar un número de PIN con el teclado telefónico.

La mejor manera de comenzar a utilizar CloudFormation es consultando la Guía de introducción, que forma parte de nuestra documentación técnica. En unos pocos minutos, podrá implementar y utilizar una de las plantillas de muestra que ilustran cómo crear la infraestructura necesaria para ejecutar aplicaciones, como WordPress. Existen varias otras fuentes de capacitación en CloudFormation, desde proveedores de planes de estudios de terceros hasta tutoriales y artículos en la web. Para obtener más información, consulte Recursos de CloudFormation.

Sí, CloudFormation incluye plantillas de muestra que puede utilizar para poner a prueba la oferta y analizar su funcionalidad. Nuestras plantillas de muestra ilustran cómo interconectar y utilizar varios recursos de AWS de forma sincronizada, conforme a las prácticas recomendadas para redundancia de varias zonas de disponibilidad, escalabilidad y alarmas. Para comenzar, todo lo que debe hacer es ir a la consola de administración de AWS, hacer clic en “Crear una pila” y seguir los pasos para seleccionar y lanzar uno de los ejemplos. Luego de haber creado la pila, selecciónela en la consola y revise las pestañas Plantilla y Parámetro para observar los detalles del archivo de plantilla que se utilizó para crear la pila correspondiente. Las plantillas de ejemplo también están disponibles en GitHub.

Registro de AWS CloudFormation

El Registro de AWS CloudFormation es un servicio administrado que permite registrar, usar y descubrir los tipos de recursos de AWS y de terceros. Los tipos de recursos de terceros deben estar registrados antes de que puedan ser usados para proporcionar recursos con plantillas de AWS CloudFormation. Consulte el artículo Uso del registro de AWS CloudFormation en nuestra documentación para obtener detalles.

Un proveedor de recursos es un conjunto de tipos de recursos con especificaciones y controladores que controlan el ciclo de vida de los recursos subyacentes mediante operaciones de creación, lectura, actualización, eliminación y enumeración. Puede usar los proveedores de recursos para modelar y aprovisionar los recursos con CloudFormation. Por ejemplo, AWS::EC2::Instance es un tipo de recurso desde el proveedor de Amazon EC2. Puede usar este tipo para modelar y aprovisionar una instancia de Amazon EC2 con CloudFormation. Cuando usa el Registro de CloudFormation puede construir y usar los proveedores de recursos para modelar y aprovisionar recursos de terceros como la monitorización de SaaS, la productividad de equipo o los recursos de administración de código de origen.

La diferencia entre los proveedores de recursos de AWS y de terceros es su origen. Los proveedores de recurso de AWS se construyen y mantienen por Amazon y AWS para administrar recursos y servicios de AWS. Por ejemplo, tres proveedores de recursos de AWS lo ayudan a administrar recursos de Amazon DynamoDB, AWS Lambda y Amazon EC2. Estos proveedores contiene tipos de recursos como AWS::DynamoDB::Table, AWS::Lambda::Function, y AWS::EC2::Instance. Para una referencia completa, diríjase a su documentación.

Los proveedores de recurso de terceros se construyen por otra empresa, organización o comunidad de desarrolladores. Pueden ayudarlo a administrar recursos de AWS y de otros proveedores, como los recursos de aplicaciones de AWS y los servicios de software SaaS que no son de AWS, como herramientas de monitorización, productividad del equipo, administración de incidentes o control de versiones.

Un esquema de recursos define un tipo de recurso en un formato estructurado y consistente. Este esquema también se usa para validar la definición de un tipo de recurso. El esquema incluye todos los parámetros y los atributos admitidos para un tipo de recurso dado, así como también los permisos requeridos para crear el recurso con la menor cantidad de privilegios posible.

Use la CLI de AWS CloudFormation para crear proveedores de recursos. Comienza por definir un esquema declarativo simple para sus recursos, el cual incluye permisos requeridos y relaciones con otros recursos. Luego, usa la CLI de CloudFormation para generar el andamiaje para los controladores del ciclo de vida de los recursos (crear, leer, actualizar, eliminar y enumerar) junto con los apéndices de prueba para las pruebas de unidad e integración.

Puede usar la CLI de AWS CloudFormation de código abierto o llamar directamente a RegisterType y las API de registro relacionadas que están disponibles a través de AWS SDK y AWS CLI. Para obtener más detalles, consulte el artículo Uso del registro de AWS CloudFormation en nuestra documentación. Los proveedores de recursos de AWS están disponibles listos para usar y no requieren ningún paso de registro adicional antes de su uso.

Registro público de AWS CloudFormation

El registro de CloudFormation lanzado en noviembre de 2019 consistía en un listado privado que permitía a los clientes ampliar CloudFormation para su uso privado. El registro público amplía el registro de CloudFormation y agrega una ubicación central, pública y con capacidad de búsqueda para compartir, encontrar, consumir y administrar tipos de recursos y módulos <>, lo que hace mucho más fácil configurar y administrar la infraestructura y las aplicaciones de manera coherente tanto para AWS como para productos de terceros.

Sí. En el registro público de CloudFormation, se tiene acceso a contenido seleccionado de editores verificados. En primer lugar, verificamos la identidad de cada editor mediante AWS Marketplace o terceros como GitHub y Bitbucket.

El registro público de CloudFormation es un nuevo catálogo de extensiones administrado y con capacidad de búsqueda que contiene tipos de recursos (lógica de aprovisionamiento) y módulos publicados por los socios de la red de socios de AWS (APN) y la comunidad de desarrolladores. Con el registro público de CloudFormation, ahora cualquiera puede publicar tipos de recursos y módulos en el registro. Los clientes pueden descubrir y utilizar fácilmente estos tipos de recursos y módulos publicados, lo que les elimina la necesidad de crearlos y darles mantenimiento.

Un tipo de recurso es un paquete de código que contiene una lógica de aprovisionamiento que permite administrar el ciclo de vida de un recurso, como una instancia Amazon EC2 o una tabla de Amazon DynamoDB, desde su creación hasta su eliminación, lo que abstrae las complejas interacciones de la API. Los tipos de recursos contienen un esquema que define la forma y las propiedades de un recurso, así como la lógica necesaria para aprovisionar un recurso, actualizarlo, eliminarlo y describirlo. Un ejemplo de tipo de recurso de terceros en el registro público de CloudFormation es un monitor de Datadog, un proyecto de MongoDB Atlas o un usuario de Atlassian Opsgenie, entre otros.

Los módulos son bloques de creación que se pueden reutilizar en varias plantillas de CloudFormation y se utilizan como un recurso nativo de CloudFormation. Estos bloques de creación pueden ser para un solo recurso, como prácticas recomendadas para definir una instancia de Amazon Elastic Compute Cloud (Amazon EC2) o pueden ser para múltiples recursos, para definir patrones comunes de arquitectura de aplicaciones.

Puede consultar este enlace para desarrollar y agregar su propio recurso o módulo al registro de AWS CloudFormation. Puede optar por publicarlo de forma privada o en el registro público.

Facturación

No se aplica ningún cargo adicional por usar AWS CloudFormation con proveedores de recursos en los siguientes espacios de nombres: AWS::*, Alexa::* y Custom::*. En caso que deba pagar por los recursos de AWS, (como instancias Amazon EC2, balanceadores de carga de Elastic Load Balancing, etc.), creados con la utilización de AWS CloudFormation de la misma forma que si los creara manualmente. Solo paga por lo que consume y a medida que lo utilice. No hay tarifas mínimas ni compromisos iniciales obligatorios.

Cuando utiliza proveedores de recursos con AWS CloudFormation fuera de los espacios de nombres mencionados anteriormente, incurre en cargos por operación del controlador. Las operaciones del controlador son acciones de creación, actualización, eliminación, lectura o enumeración en un recurso. Para más información, consulte nuestra página de precios.

Sí. Los cargos correspondientes a los recursos de AWS creados durante la creación de instancias a partir de una plantilla se aplicarán independientemente de que se haya creado de manera correcta la pila en su totalidad.

Límites y restricciones

Para obtener más información sobre el número máximo de pilas de AWS CloudFormation que se pueden crear, consulte Pilas en Cuotas de AWS CloudFormation. Si desea un límite más alto, complete la solicitud que se incluye aquí y recibirá nuestra respuesta en un plazo de dos días laborables.

Para obtener más información, consulte Descripción de la plantilla en cuotas de AWS CloudFormation y Parámetros, Recursos y Salidas en la documentación de AWS.

Para obtener más información sobre el número de parámetros y resultados que puede especificar en una plantilla, consulte las secciones de Parámetros y Salidas de Cuotas de AWS CloudFormation.

Para obtener más información sobre el número de recursos que puede declarar en una plantilla, consulte Recursos en Cuotas de AWS CloudFormation. La creación de plantillas y pilas más pequeñas y la modularización de su aplicación entre múltiples pilas es la práctica recomendada para minimizar el radio de alcance de los cambios de sus recursos y para solucionar problemas con múltiples dependencias de recursos de manera más rápida, dado que, con grupos de recursos más pequeños, habrá menos dependencias complejas que con los grupos más grandes.

Regiones y puntos de enlace

Los puntos de conexión de cada región se encuentran disponibles en los puntos de conexión de AWS CloudFormation en la documentación técnica.

Consulte Productos y servicios regionales para obtener más información sobre la disponibilidad por región de CloudFormation.