Prácticas recomendadas de CloudFormation
Las prácticas recomendadas son recomendaciones que pueden ayudarle a utilizar CloudFormation de forma más eficaz y a adoptar prácticas seguras a lo largo de todo su flujo de trabajo. Aprenda a planificar y organizar pilas, crear plantillas que describen los recursos y las aplicaciones de software que se ejecutan en ellas, y a administrar sus pilas y sus recursos. Las siguientes prácticas recomendadas se basan en experiencias reales de clientes de CloudFormation actuales.
- Planificación y organización
- Creación de plantillas
- Gestión de pilas
-
-
Administración de todos los recursos de pila a través de CloudFormation
-
Uso de AWS CloudTrail para registrar llamadas a CloudFormation
-
Utilice revisiones de código y controles de revisión para administrar las plantillas
-
Configure activadores de reversión para la recuperación automática
-
Implemente estrategias efectivas de refactorización de pilas
-
Utilice CloudFormation Hooks para la administración del ciclo de vida
-
- Herramientas de creación
- Seguridad y conformidad
Reduzca el bucle de retroalimentación para mejorar la velocidad de entrega
Adopte prácticas y herramientas que le ayuden a acortar el bucle de retroalimentación de la infraestructura que describe con las plantillas de CloudFormation. Esto incluye realizar análisis y pruebas iniciales de las plantillas en su estación de trabajo. Cuando lo haga, tendrá la oportunidad de descubrir posibles problemas de sintaxis y configuración incluso antes de enviar sus contribuciones a un repositorio de código fuente. El descubrimiento temprano de estos problemas ayuda a evitar que lleguen a los entornos del ciclo de vida formal, como el desarrollo, el control de calidad y la producción. Este enfoque de pruebas tempranas y respuestas rápidas a errores le ofrece las ventajas de reducir el tiempo de espera para volver a trabajar, reducir las posibles áreas de impacto y aumentar su nivel de confianza a la hora de realizar operaciones de aprovisionamiento satisfactorias.
Las opciones de herramientas que lo ayudarán a desarrollar prácticas para responder rápido a los errores incluyen las herramientas de línea de comandos AWS CloudFormation Lintercfn-lint) y TaskCatcfn-lint le permite validar sus plantillas de CloudFormation con la especificación de recursos de AWS CloudFormation. Esto incluye comprobar los valores válidos de las propiedades de los recursos, así como las prácticas recomendadas. Los complementos para cfn-lint están disponibles para varios editores de códigocfn-lint en la configuración de su repositorio de código fuente, de modo que pueda realizar la validación de la plantilla cuando confirme sus contribuciones. Para obtener más información, consulte Validación previa a la confirmación de plantillas de AWS CloudFormation de Git con cfn-lintcfn-lint, puede usar TaskCat para probar sus plantillas al crear pilas mediante programación en las Regiones de AWS que elija. TaskCat también genera un informe con calificaciones de aprobación/reprobación para cada región que elija.
Para ver un tutorial práctico y paso a paso sobre cómo utilizar ambas herramientas para acortar el bucle de retroalimentación, siga el Laboratorio de lint y pruebas
Organice sus pilas por ciclo de vida y titularidad
Utilice el ciclo de vida y la titularidad de sus recursos de AWS para ayudarlo a decidir qué recursos deberían ir en cada pila. Inicialmente, se pueden incluir todos los recursos en una sola pila, pero a medida que la pila crece en escala y su ámbito se amplía, administrar una sola pila puede ser tedioso y consumir mucho tiempo. Al agrupar los recursos con titularidad y ciclos de vida comunes, los propietarios pueden realizar cambios a su conjunto de recursos usando su propio proceso y programación sin que eso afecte a otros recursos.
Por ejemplo, imagine un equipo de desarrolladores e ingenieros que posee un sitio web alojado en instancias de Amazon EC2 Auto Scaling detrás de un equilibrador de carga. Dado que el sitio web tiene su propio ciclo de vida y lo mantiene su propio equipo, puede crear una pila para el sitio web y sus recursos. Ahora imagine que el sitio web también usa bases de datos de back-end, donde las bases de datos se encuentran en una pila aparte, bajo la titularidad y el mantenimiento de los administradores de bases de datos. Siempre que el equipo del sitio web o de la base de datos tengan que actualizar sus recursos, pueden hacerlo sin afectar a sus pilas mutuamente. Si todos los recursos estuvieran en una sola pila, coordinar y comunicar actualizaciones puede ser difícil.
Si desea obtener instrucciones adicionales sobre cómo organizar pilas, puede utilizar dos marcos de trabajo comunes: una arquitectura de varias capas y arquitectura orientada a servicios (SOA, por sus siglas en inglés).
Una arquitectura multicapa organiza pilas en varias capas horizontales apiladas unas sobre otras, y cada capa depende de la capa directamente inferior. Puede tener una o más pilas en cada capa, pero dentro de cada una, las pilas deberían tener recursos de AWS con ciclos de vida y titularidad similares.
Con una arquitectura orientada a los servicios, puede organizar grandes problemas empresariales en partes controlables. Cada una de estas partes es un servicio con una finalidad claramente definida y que representa una unidad autónoma de funcionalidad. Puede asignar estos servicios a una pila, de modo que cada pila tiene su propio ciclo de vida y propietarios. Estos servicios (pilas) pueden conectarse para que puedan interactuar.
Utilice referencias entre pilas para devolver el valor de una salida exportada por otra pila
Al organizar recursos de AWS en función del ciclo de vida y la titularidad, es posible que desee crear una pila que utiliza los recursos que están en otra pila. Puede codificar valores de forma predeterminada o usar parámetros de entrada para transferir ID y nombres de recursos. Sin embargo, con estos métodos las plantillas pueden ser difíciles de reutilizar o puede aumentar la sobrecarga para ejecutar una pila. En su lugar, utilice referencias entre pilas para devolver el valor de una salida exportada por otra pila para que otras pilas puedan utilizarlas. Las pilas pueden utilizar los recursos exportados llamándolos con la función Fn::ImportValue.
Por ejemplo, podría tener una pila de red que incluya una VPC, un grupo de seguridad y una subred. Le interesan todas las aplicaciones web públicas para utilizar estos recursos. Al exportar los recursos, permite que los usen todas los pilas con aplicaciones web públicas. Para obtener más información, consulte Obtención de salidas exportadas de una pila implementada de CloudFormation.
Utilice StackSets de AWS CloudFormation para implementaciones en varias cuentas y regiones
StackSets de AWS CloudFormation amplía la funcionalidad de las pilas al permitirle crear, actualizar o eliminar pilas de varias cuentas y regiones con una sola operación. Utilice los StackSets para implementar componentes de infraestructura comunes, controles de cumplimiento o servicios compartidos en toda su organización.
Cuando utilice StackSets, implemente permisos administrados por el servicio con AWS Organizations para simplificar la administración de permisos. Este enfoque permite implementar los StackSets en las cuentas de la organización sin necesidad de configurar manualmente las funciones de IAM en cada cuenta.
Para obtener más información, consulte Conceptos de StackSets.
Verifique las cuotas de todos los tipos de recursos
Antes de lanzar una pila, asegúrese de que puede crear todos los recursos que desee sin llegar a los límites de su cuenta de AWS. En caso de llegar a un límite, CloudFormation no creará la pila de forma satisfactoria hasta que aumente su cuota o elimine recursos adicionales. Cada servicio puede tener varios límites que se deben tener en cuenta antes de lanzar una pila. Por ejemplo, de forma predeterminada, únicamente puede lanzar 2000 pilas de CloudFormation por región en su Cuenta de AWS. Para obtener más información acerca de los límites predeterminados, consulte AWS Service Quotas en la Referencia general de AWS.
Reutilice plantillas para replicar pilas en varios entornos
Después de configurar pilas y recursos, puede volver a utilizar las plantillas para replicar su infraestructura en varios entornos. Por ejemplo, puede crear entornos para desarrollo, pruebas y producción y así probar los cambios antes de implementarlos en la producción. Para que las plantillas sean reutilizables, utilice las secciones de parámetros, mapeos y condiciones para poder personalizar las pilas al crearlas. Por ejemplo, en el caso de los entornos de desarrollo, puede especificar un tipo de instancia de menor costo que la de su entorno de producción, pero el resto de configuraciones y valores seguirá igual. Para obtener más información acerca de los parámetros, mappings y condiciones, consulte Secciones de la plantilla de CloudFormation.
Uso de módulos para reutilizar configuraciones de recursos
A medida que crece su infraestructura, pueden surgir patrones comunes donde usted declara los mismos componentes en cada plantilla. Losmódulos son una forma de empaquetar configuraciones de recursos para su inclusión en plantillas de pila, de forma transparente, administrable y repetible. Los módulos pueden encapsular configuraciones de servicios comunes y prácticas recomendadas como componentes esenciales modulares y personalizables para que pueda incluirlos en las plantillas de pila.
Estos bloques de construcción pueden destinarse a un único recurso, como las prácticas recomendadas para definir una instancia de Amazon Elastic Compute Cloud (Amazon EC2), o pueden servir para varios recursos, con el fin de definir patrones comunes de arquitectura de aplicaciones. Estos bloques de creación pueden anidarse en otros módulos, por lo que puede apilar prácticas recomendadas en bloques de creación de nivel superior. Los módulos de CloudFormation están disponibles en el registro de CloudFormation para que pueda usarlos como un recurso nativo. Cuando utiliza un módulo de CloudFormation, la plantilla del módulo se expande en la plantilla consumidora, lo que le permite acceder a los recursos dentro del módulo mediante Ref o Fn::GetAtt. Para obtener más información, consulte Creación de configuraciones de recursos reutilizables que se puedan incluir en las plantillas con los módulos de CloudFormation.
Adopción de prácticas de infraestructura como código
Trate sus plantillas de CloudFormation como código al implementar las prácticas de infraestructura como código (IaC). Almacene sus plantillas en sistemas de control de versiones, implemente revisiones de código y utilice pruebas automatizadas para validar los cambios. Este enfoque garantiza la coherencia, mejora la colaboración y proporciona un registro de auditoría de los cambios en la infraestructura.
Considere la posibilidad de implementar canalizaciones de CI/CD para el código de infraestructura a fin de automatizar las pruebas y la implementación de las plantillas de CloudFormation. Herramientas como AWS CodePipeline, AWS CodeBuild, y AWS CodeDeploy se pueden utilizar para crear flujos de trabajo automatizados para las implementaciones de su infraestructura.
Para obtener más información sobre la implementación de las prácticas recomendadas de IaC, consulte Uso de AWS CloudFormation como herramienta de IaC.
Para obtener más información sobre el uso de la entrega continua con CloudFormation, consulte Entrega continua con CodePipeline.
No integre credenciales en sus plantillas
En lugar de incrustar información confidencial en sus plantillas de CloudFormation, le recomendamos que utilice referencias dinámicas en su plantilla de pila.
Las referencias dinámicas son una forma eficaz y coherente de hacer referencia a valores externos almacenados y administrados en otros servicios, como AWS Systems Manager Parameter Store o AWS Secrets Manager. Cuando se utiliza una referencia dinámica, CloudFormation recupera el valor de la referencia especificada cuando es necesario durante las operaciones de pila y de conjunto de cambios, y pasa el valor al recurso correspondiente. Sin embargo, CloudFormation no almacena nunca el valor de referencia real. Para obtener más información, consulte Uso de referencias dinámicas para especificar valores de plantillas.
AWS Secrets Manager ayuda a cifrar, almacenar y recuperar de forma segura las credenciales de sus bases de datos y otros servicios. AWS Systems Manager Parameter Store proporciona un almacenamiento seguro y jerárquico para administrar los datos de configuración.
Para obtener más información sobre cómo definir parámetros de plantillas, consulte Sintaxis de Parameters de la plantilla de CloudFormation.
Uso de tipos de parámetros específicos de AWS
Si la plantilla requiere entradas para unos valores específicos de AWS existentes, como los ID de Amazon Virtual Private Cloud existentes o el nombre de un par de claves de Amazon EC2, use los tipos de parámetros específicos de AWS. Por ejemplo, puede especificar un parámetro como tipo AWS::EC2::KeyPair::KeyName, que adopta un nombre de par de claves existente que está en su Cuenta de AWS y en la región en la que se crea la pila. CloudFormation puede validar rápidamente los tipos de parámetros específicos de AWS antes de crear la pila. Además, si usa la consola de CloudFormation, mostrará una lista desplegable de valores válidos, lo que elimina la necesidad de buscar o memorizar los ID de VPC o nombres de pares de claves correctos. Para obtener más información, consulte Definición de recursos existentes en tiempo de ejecución con tipos de parámetros proporcionados por CloudFormation.
Uso de limitaciones de los parámetros
Con limitaciones, puede describir los valores de entrada permitidos para que CloudFormation capture los valores no válidos antes de crear una pila. Puede establecer limitaciones como una longitud mínima, longitud máxima y patrones permitidos. Por ejemplo, puede establecer limitaciones en un valor de nombre de usuario de la base de datos, por lo que debe tener una longitud mínima de ocho caracteres y contener únicamente caracteres alfanuméricos. Para obtener más información, consulte Sintaxis de Parameters de la plantilla de CloudFormation.
Utilice pseudoparámetros para promover la portabilidad
Puede utilizar pseudoparámetros en las plantillas como argumentos para funciones intrínsecas, como Ref y Fn::Sub. Los pseudoparámetros son parámetros predefinidos por CloudFormation. No los declara en su plantilla. El uso de pseudoparámetros en las funciones intrínsecas aumenta la portabilidad de las plantillas de pilas entre regiones y cuentas.
Por ejemplo, imagine que desea crear una plantilla en la que, para una propiedad de recurso determinada, necesita especificar el nombre de recurso de Amazon (ARN) de otro recurso existente. En este caso, el recurso existente es un recurso del almacén de parámetros de AWS Systems Manager con el siguiente ARN: arn:aws:ssm:us-east-1:123456789012:parameter/MySampleParameter. Deberá adaptar el formato del ARN a su partición, región e ID de cuenta de AWS de destino. En lugar de realizar una codificación rígida de estos valores, puede usar los pseudoparámetros AWS::Partition, AWS::Region y AWS::AccountId para que su plantilla sea más portátil. En este caso, el siguiente ejemplo muestra cómo concatenar elementos de un ARN con CloudFormation: !Sub
'arn:${AWS::Partition}:ssm:${AWS::Region}:${AWS::AccountId}:parameter/MySampleParameter.
Para otro ejemplo, suponga que desea compartir recursos o configuraciones entre varias pilas. En este ejemplo, suponga que ha creado una subred para la VPC y, a continuación, ha exportado su ID para usarlo con otras pilas de la misma Cuenta de AWS y región. En otra pila, hace referencia al valor exportado del ID de subred al describir una instancia de Amazon EC2. Para ver un ejemplo detallado del uso del campo de salida Export y la función intrínseca Fn::ImportValue, consulte Consulta de las salidas de recursos en otra pila de CloudFormation.
Las exportaciones de pilas deben ser únicas por cuenta y por región. Por lo tanto, en este caso, puede usar el pseudoparámetro AWS::StackName para crear un prefijo para la exportación. Dado que los nombres de las pilas también deben ser únicos por cuenta y por región, el uso de este pseudoparámetro como prefijo aumenta la posibilidad de tener un nombre de exportación único y, al mismo tiempo, promueve un enfoque reutilizable en todas las pilas desde las que se exportan los valores. Otra alternativa es utilizar un prefijo de su elección.
Use AWS::CloudFormation::Init para implementar aplicaciones de software en las instancias de Amazon EC2
Al lanzar las pilas, puede instalar y configurar las aplicaciones de software en instancias de Amazon EC2 mediante el script auxiliar cfn-init y el recurso AWS::CloudFormation::Init. Al utilizar AWS::CloudFormation::Init, puede describir las configuraciones que desee en lugar de unos pasos de procedimientos de scripts. También puede actualizar configuraciones sin volver a crear instancias. Y si algo no funciona con la configuración, CloudFormation genera registros que puede utilizar para investigar problemas.
En la plantilla, especifique los estados de instalación y configuración en el recurso AWS::CloudFormation::Init. Para obtener una explicación detallada que muestra cómo utilizar cfn-init y AWS::CloudFormation::Init, consulte Implementación de aplicaciones en Amazon EC2.
Utilice los scripts auxiliares más recientes
Los scripts auxiliares de CloudFormation se actualizan periódicamente. Asegúrese de incluir el siguiente comando en la propiedad UserData de la plantilla antes de llamar a los scripts auxiliares para garantizar que las instancias lanzadas reciban los últimos scripts auxliar:
yum install -y aws-cfn-bootstrap
Para obtener más información acerca de cómo obtener los scripts auxiliares más recientes, consulte Referencia de scripts auxiliares de CloudFormation en la Guía de referencia de plantillas de AWS CloudFormation.
Validar plantillas antes de usarlas
Antes de utilizar una plantilla para crear o actualizar una pila, puede usar CloudFormation para validarla. Validar una plantilla puede ayudarle a identificar errores de sintaxis y algunos de semántica, como las dependencias circulares, antes de que CloudFormation cree recursos. Si usa la consola de CloudFormation, esta valida automáticamente la plantilla después de especificar parámetros de entrada. Para la AWS CLI o la API de CloudFormation, use el comando validate-template de la CLI o la operación ValidateTemplate de API.
Durante la validación, CloudFormation comprueba primero si la plantilla es un JSON válido. Si no lo es, CloudFormation comprueba si la plantilla es un YAML válido. Si ambas comprobaciones fallan, CloudFormation devuelve un error de validación de plantilla.
Validar plantillas para la conformidad de políticas de organización
También puede validar su plantilla para comprobar el cumplimiento de las directrices de la política de la organización. AWS CloudFormation Guard (cfn-guard) es una herramienta de interfaz de línea de comandos (CLI) de código abierto que proporciona un lenguaje de políticas como código para definir reglas que pueden comprobar las configuraciones de recursos obligatorias y prohibidas. A continuación, le permite validar sus plantillas en función de esas reglas. Por ejemplo, los administradores pueden crear reglas para asegurarse de que los usuarios siempre creen buckets de Amazon S3 cifrados.
Puede utilizar cfn-guard localmente, mientras edita plantillas o automáticamente como parte de una canalización CI/CD para parar la implementación de recursos no conformes.
Además, cfn-guard incluye una característica, rulegen, que permite extraer reglas de plantillas de CloudFormation compatibles existentes.
Para obtener más información, consulte el repositorio cfn-guard
Uso de YAML o JSON para la creación de plantillas
CloudFormation admite los formatos YAML y JSON para las plantillas. Cada uno tiene sus ventajas, y la elección depende de sus necesidades específicas:
Utilice YAML cuando
-
Prioriza la legibilidad y la capacidad de mantenimiento humanas
-
Quiere incluir comentarios para documentar su plantilla
-
Está trabajando en plantillas complejas con estructuras anidadas
-
Quiere utilizar características específicas de YAML, como anclajes y alias, para reducir la repetición
Utilice JSON cuando:
-
Necesita integrarse con herramientas o sistemas que prefieran JSON
-
Está trabajando con la generación o manipulación de plantillas programáticas
-
Necesita una validación de datos estricta
Por lo general, se recomienda usar YAML para la creación manual de plantillas debido a su legibilidad y compatibilidad con los comentarios. Resulta especialmente útil para plantillas complejas en las que la estructura basada en indentaciones ayuda a visualizar las jerarquías de recursos. JSON puede resultar ventajoso en los flujos de trabajo automatizados o cuando se trabaja con API que requieren la entrada de JSON. También es beneficioso cuando se necesita garantizar el estricto cumplimiento de una estructura específica. Independientemente del formato que elija, céntrese en crear plantillas bien estructuradas, documentadas y fáciles de mantener. Si utiliza YAML, aproveche sus características, como los anclajes y los alias, para reducir la repetición y mejorar la capacidad de mantenimiento.
Implemente una estrategia de etiquetado integral
Implemente una estrategia de etiquetado coherente para todos los recursos creados por sus plantillas de CloudFormation. Las etiquetas ayudan a organizar los recursos, asignar los costos, controlar el acceso y automatizar. Considere la posibilidad de incluir etiquetas para el entorno, el propietario, el centro de costos, la aplicación y el propósito.
Utilice la propiedad Tags del recurso AWS::CloudFormation::Stack para aplicar etiquetas a todos los recursos compatibles de una pila. También puede utilizar la propiedad TagSpecifications disponible en muchos tipos de recursos para aplicar etiquetas durante la creación del recurso.
Para obtener más información sobre el etiquetado, consulte Etiquetar recursos.
Aproveche las macros de plantillas para realizar transformaciones avanzadas
Los macros de CloudFormation le permiten realizar procesamientos personalizados en las plantillas, desde acciones simples como operaciones de búsqueda y reemplazo hasta transformaciones complejas que generan recursos adicionales. Utilice macros para ampliar las capacidades de las plantillas de CloudFormation e implementar patrones reutilizables en toda la organización.
El AWS Serverless Application Model es un ejemplo de macro que simplifica el desarrollo de aplicaciones sin servidor. Considere la posibilidad de crear macros personalizadas para los patrones y requisitos específicos de la organización.
Para obtener más información sobre el uso de macros en las plantillas, consulte Descripción general de las macros de CloudFormation.
Administración de todos los recursos de pila a través de CloudFormation
Después de lanzar una pila, use la consola
Para obtener más información sobre derivación, consulte ¿Qué es una desviación?.
Para obtener más información sobre la actualización de pilas, consulte Actualización de una pila.
Cree conjuntos de cambios antes de actualizar las pilas
Los conjuntos de cambios permiten ver cómo afectarían los cambios propuestos a una pila a los recursos que ya estén en ejecución, antes de implementarlos. CloudFormation no hace ningún cambio en la pila hasta que se ejecuta el conjunto de cambios, lo que le permite decidir si desea continuar con los cambios propuestos o crear otro conjunto de cambios.
Utilice conjuntos de cambio para comprobar cómo podrían afectar los cambios a los recursos en ejecución, especialmente para recursos de vital importancia. Por ejemplo, si cambia el nombre de una instancia de base de datos de Amazon RDS, CloudFormation creará una nueva base de datos y eliminará la antigua; se perderán los datos de la base antigua salvo que ya tenga una copia de seguridad. Si genera un conjunto de cambios, verá que el cambio sustituirá a la base de datos. Esto puede ayudarle a planificar antes de actualizar la pila. Para obtener más información, consulte Actualización de pilas de CloudFormation con conjuntos de cambios.
Utilice políticas de pila para proteger los recursos.
Las políticas de pila ayudan a proteger los recursos de pila vitales de actualizaciones involuntarias que podrían interrumpir o incluso sustituir los recursos. Una política de pilas es un documento de JSON que describe qué acciones de actualización pueden realizarse en unos recursos designados. Especifique una política de pilas cada vez que cree una pila que tenga recursos de vital importancia.
Durante una actualización de pilas, debe especificar de forma explícita los recursos protegidos que desea actualizar; de lo contrario, no se producen cambios en los recursos protegidos. Para obtener más información, consulte Impida actualizaciones en los recursos de la pila.
Uso de AWS CloudTrail para registrar llamadas a CloudFormation
AWS CloudTrail realiza un seguimiento a cualquier persona que realice llamadas a la API de CloudFormation en su Cuenta de AWS. Las llamadas a la API se registran cuando se utiliza la API de CloudFormation, la consola de CloudFormation, una consola de backend o comandos de la AWS CLI de CloudFormation. Active el registro y especifique un bucket de Amazon S3 para almacenar los registros. De ese modo, si lo necesita, puede auditar quién ha hecho cada llamada a CloudFormation en su cuenta.
Para obtener más información, consulte Registro de llamadas a la API de AWS CloudFormation con AWS CloudTrail.
Utilice revisiones de código y controles de revisión para administrar las plantillas
Sus plantillas de pila describen la configuración de los recursos de AWS, como los valores de las propiedades. Para revisar los cambios y mantener una historia exacta de los recursos, utilice revisiones de código y controles de revisión. Estos métodos pueden ayudarle a realizar un seguimiento de los cambios entre diferentes versiones de las plantillas, que pueden ayudarle a realizar un seguimiento de los cambios en los recursos de la pila. Además, al mantener un historial, siempre puede devolver la pila a una versión concreta de la plantilla.
Actualice sus instancias de Amazon EC2 regularmente
En todas sus instancias de Windows de Amazon EC2 y las instancias de Linux de Amazon EC2 creadas con CloudFormation ejecute el comando yum update con regularidad para actualizar el paquete RPM. Esto garantiza la obtención de las últimas correcciones y actualizaciones de seguridad.
Utilice la detección de desviaciones regularmente.
Utilice con regularidad la característica de detección de desviaciones de CloudFormation para identificar los recursos que se han modificado fuera de la administración de CloudFormation. Detectar y resolver las desviaciones ayuda a mantener la integridad de la infraestructura como enfoque de código y garantiza que las plantillas reflejen con precisión el estado de los recursos implementados.
Considere la posibilidad de implementar la detección automática de desviaciones como parte de sus procedimientos operativos. Puede utilizar las características AWS Lambda activadas por las reglas de Amazon EventBridge para comprobar periódicamente si hay desviaciones y notificar a su equipo cuando se detecten discrepancias.
Para obtener más información sobre las desviaciones, consulte Detectar cambios de configuración no administrados en pilas y recursos con detección de derivación.
Configure activadores de reversión para la recuperación automática
Utilice activadores de reversión para especificar las alarmas de Amazon CloudWatch que CloudFormation debe supervisar durante las operaciones de creación y actualización de las pilas. Si alguna de las alarmas especificadas entra en el estado ALARM, CloudFormation revierte automáticamente toda la operación de la pila, lo que ayuda a garantizar que la infraestructura permanezca en un estado estable.
Configure activadores de reversión para métricas críticas, como las tasas de error de las aplicaciones, la utilización de los recursos del sistema o las métricas empresariales personalizadas que indiquen el estado de su aplicación e infraestructura.
Para obtener más información sobre los activadores de reversión, consulte Reversión de su pila ante una brecha de alarma.
Implemente estrategias efectivas de refactorización de pilas
A medida que su infraestructura evolucione, es posible que necesite refactorizar sus pilas de CloudFormation para mejorar la capacidad de mantenimiento, reducir la complejidad o adaptarse a los requisitos cambiantes. La refactorización de las pilas implica reestructurar las plantillas y los recursos y, al mismo tiempo, preservar su comportamiento y funcionalidad externos. La refactorización de pilas es beneficiosa si se utiliza con CloudFormation de las siguientes maneras:
-
División de pilas monolíticas: desglose de pilas grandes y complejas en pilas más pequeñas y manejables, organizadas por ciclo de vida o propiedad
-
Consolidación de los recursos relacionados: combinación de recursos relacionados de varias pilas en una sola pila cohesiva para simplificar la administración
-
Extracción de componentes reutilizables: traslado de los patrones comunes a módulos o pilas anidadas para promover la reutilización y la coherencia
-
Mejora de la organización de los recursos: reestructuración de los recursos dentro de una pila para reflejar mejor sus relaciones y dependencias
Para obtener más información sobre la refactorización de las pilas de CloudFormation, consulte Refactorización de pilas.
Utilice CloudFormation Hooks para la administración del ciclo de vida
CloudFormation Hooks proporciona código que inspecciona de forma proactiva la configuración de los recursos de AWS antes del aprovisionamiento y realiza comprobaciones de validación complejas. Los Hooks comprueban si sus recursos, pilas y conjuntos de cambios cumplen con las necesidades de seguridad, operativas y de optimización de costos de su organización. Proporcionan advertencias antes del aprovisionamiento de un recurso o fallan en la operación y la detienen por completo, en función de cómo se haya configurado. Las infracciones y las advertencias se registran en Amazon CloudWatch para proporcionar visibilidad de las implementaciones no conformes.
Para obtener más información sobre estas prácticas recomendadas para Hooks, consulte los conceptos de Hooks de AWS CloudFormation.
Para obtener más información sobre lo que Hooks puede hacer por sus recursos de CloudFormation, consulte ¿Qué son los Hooks de AWS CloudFormation?
Utilice el generador IaC para crear plantillas a partir de recursos existentes.
El generador de la IaC (infraestructura como código) de CloudFormation le ayuda a crear plantillas de CloudFormation a partir de sus recursos de AWS existentes. Esta capacidad es particularmente útil cuando necesita replicar la infraestructura existente, documentar los recursos creados manualmente o poner recursos que antes no se administraban bajo la administración de CloudFormation. El generador de la IaC es útil para crear sus plantillas de CloudFormation de las siguientes maneras:
-
Creación acelerada de plantillas: genere plantillas a partir de los recursos existentes en lugar de escribirlas desde cero
-
Infraestructura coherente: asegúrese de que los nuevos entornos coincidan con los existentes utilizando las plantillas generadas como punto de partida
-
Migración a la infraestructura como código: incorpore gradualmente los recursos creados manualmente a la administración de CloudFormation
-
Documentación: cree un registro de su infraestructura existente en forma de plantilla
Para obtener más información sobre el generador de la IaC, consulte Generación de plantillas de los recursos existentes con el generador de la IaC.
Uso de AWS Infrastructure Composer para el diseño visual de plantillas
AWS Infrastructure Composer es una herramienta de diseño visual que le ayuda a crear, visualizar y modificar plantillas de CloudFormation mediante una interfaz de arrastrar y soltar. Puede ser particularmente beneficioso cuando utiliza CloudFormation de las siguientes maneras:
-
Planificación de la arquitectura: diseñe y valide las arquitecturas de infraestructura antes de la implementación
-
Modernización de plantillas: visualice las plantillas existentes para comprender su estructura e identificar oportunidades de mejora
-
Capacitación e incorporación: ayude a los nuevos miembros del equipo a entender los conceptos de CloudFormation y las relaciones de servicio de AWS mediante el aprendizaje visual
-
Comunicación con las partes interesadas: presente los diseños de infraestructura a las partes interesadas no técnicas mediante representaciones visuales claras
-
Revisiones de conformidad: utilice diagramas visuales para facilitar las revisiones de seguridad y conformidad de los diseños de su infraestructura
-
Revisiones de conformidad: utilice diagramas visuales para facilitar las revisiones de seguridad y conformidad de los diseños de su infraestructura
Para obtener más información acerca de Infrastructure Composer, consulte ¿Qué es AWS Infrastructure Composer?.
Considere utilizar AWS Cloud Development Kit (AWS CDK) para infraestructuras complejas
Para requisitos de infraestructura complejos, considere utilizar el CDK para definir sus recursos en la nube utilizando lenguajes de programación familiares como TypeScript, Python, Java y .NET. AWS CDK genera plantillas de CloudFormation a partir de su código, lo que le permite aprovechar todas las capacidades de CloudFormation mientras utiliza las abstracciones y construcciones de programación de su lenguaje preferido.
AWS CDK proporciona constructos de alto nivel que resumen las prácticas recomendadas y simplifican la definición de patrones de infraestructura comunes. Esto puede reducir significativamente la cantidad de código necesaria para definir su infraestructura y, al mismo tiempo, garantizar el cumplimiento de las prácticas recomendadas.
Para más información sobre CDK, consulte AWS Cloud Development Kit (AWS CDK).
Utilice IAM para controlar el acceso
IAM es un servicio de AWS que puede utilizar para administrar los usuarios y sus permisos en AWS. Puede utilizar IAM con CloudFormation para especificar qué acciones de CloudFormation pueden realizar los usuarios, como ver plantillas de pila, crear pilas o eliminar pilas. Además, cualquiera que administre pilas de CloudFormation necesitará permisos para acceder a los recursos de dichas pilas. Por ejemplo, si los usuarios desean usar CloudFormation para lanzar, actualizar o terminar instancias Amazon EC2, deben tener permiso para llamar a las acciones de Amazon EC2 pertinentes.
En la mayoría de los casos, los usuarios requieren acceso completo para administrar todos los recursos de una plantilla. CloudFormation realiza llamadas para crear, modificar y eliminar esos recursos en su nombre. Para separar los permisos entre el usuario y el servicio de CloudFormation, utilice un rol de servicio. CloudFormation utiliza la política del rol de servicio para realizar llamadas en lugar de la política del usuario. Para obtener más información, consulte Rol de servicio AWS CloudFormation.
Aplicación del principio de privilegios mínimos
Al configurar los roles de IAM para los roles de servicio de CloudFormation o para los recursos creados por las plantillas, aplique siempre el principio de privilegios mínimos. Otorgue únicamente los permisos necesarios para la funcionalidad prevista y evite utilizar permisos comodín siempre que sea posible.
Utilice IAM Access Analyzer para revisar los permisos concedidos a sus roles de servicio de CloudFormation e identificar los permisos no utilizados que se pueden eliminar. Revise y actualice regularmente las políticas de IAM para garantizar que permanezcan alineadas con sus requisitos de seguridad.
Proteja los parámetros confidenciales
Para información confidencial, como contraseñas, claves de API y otros secretos, utilice Parameter Store AWS Systems Manager o AWS Secrets Manager en lugar de incrustarlos directamente en sus plantillas. Utilice referencias dinámicas en sus plantillas para recuperar estos valores de forma segura durante las operaciones de apilado.
Cuando utilice parámetros en sus plantillas, establezca la propiedad NoEcho en true para los parámetros confidenciales para evitar que sus valores se muestren en la consola, en las respuestas de la API o en la salida de la CLI. Tenga en cuenta que NoEcho no impide que se registre el valor si se transfiere a otros servicios o recursos que puedan registrarlo.
Para obtener más información sobre el uso de Parameter Store AWS Systems Manager con CloudFormation, consulte Obtener un valor de texto sin formato de Parameter Store AWS Systems Manager.
Para obtener más información sobre el uso de la propiedad NoEcho, consulte la Sintaxis de los parámetros de la plantilla de CloudFormation.
Para obtener más información sobre el uso de AWS Secrets Manager con CloudFormation, consulte Crear secretos AWS Secrets Manager en AWS CloudFormation.
Implementación de la política como código con AWS CloudFormation Guard
AWS CloudFormation Guard (cfn-guard) es una herramienta de código abierto de política como código que le permite definir y aplicar reglas para sus plantillas de CloudFormation. Utilice cfn-guard para asegurarse de que sus plantillas cumplan con las políticas organizativas, las prácticas recomendadas de seguridad y los requisitos de gobernanza.
Integre cfn-guard en sus procesos de CI/CD para validar automáticamente las plantillas según las normas de sus políticas antes de su implementación. Esto ayuda a evitar que se implementen recursos que no cumplan con las normas en su entorno y proporciona a los desarrolladores información temprana sobre las infracciones de las políticas.
Para obtener más información acerca de Guard, consulte ¿Qué es AWS CloudFormation Guard?