Uso de conjuntos de cambios con reconocimiento de desviación
Los conjuntos de cambios con reconocimiento de desviación son conjuntos de cambios de CloudFormation mejorados que le permiten identificar y gestionar la desviación de las pilas de forma segura. Las pilas se desvían de la configuración de plantilla esperada cuando los recursos de la pila se modifican fuera de CloudFormation, mediante la Consola de administración de AWS, la AWS CLI o el SDK de los servicios subyacentes. Los conjuntos de cambios con reconocimiento de desviación comparan las plantillas con el estado real de los recursos de la pila y ajustan los recursos desviados a las definiciones de sus plantillas. Cuando la definición de la plantilla de un recurso se actualiza para que coincida con su estado real, los conjuntos de cambios con reconocimiento de desviación restablecen el estado de desviación del recurso sin modificarlo.
Entre las ventajas de utilizar conjuntos de cambios con reconocimiento de desviación se incluyen las siguientes:
-
Obtenga una vista previa de las sobrescrituras de las desviaciones: detecte si una implementación revertirá los cambios críticos fuera de banda realizados durante la respuesta a un incidente.
-
Conciliación sistemática de las desviaciones: alinee de forma segura los recursos desviados con las definiciones de plantillas compatibles, ya sea sobrescribiendo las propiedades desviadas con valores de plantilla o actualizando la plantilla para que coincida con el estado real de los recursos.
-
Capacidades de reversión mejoradas: si una implementación falla, restaure los recursos a su estado real anterior a la implementación, no al estado de la plantilla anterior.
-
Visibilidad completa: compruebe exactamente cómo afectará su implementación a las configuraciones de recursos reales antes de realizar cambios.
Los conjuntos de cambios tradicionales permiten comparar la nueva plantilla con la plantilla anterior de una pila, pero no tienen en cuenta la desviación de la pila. Los conjuntos de cambios con reconocimiento de desviación resuelven este problema al proporcionar una comparación a tres bandas entre:
-
Estado actual: la configuración en tiempo real de sus recursos. CloudFormation leerá la configuración de los recursos de su cuenta en el momento de la creación del conjunto de cambios mediante las API de servicio subyacentes.
-
Estado de implementación anterior: la configuración definida en la plantilla de la última implementación de CloudFormation.
-
Estado deseado: la configuración definida en la nueva plantilla.
Los conjuntos de cambios con reconocimiento de desviación actualizarán el estado real de todos los recursos de la pila para que coincidan con el estado deseado, incluso si un recurso no se ha modificado explícitamente en la plantilla.
Consideraciones
-
Compatibilidad con los tipos de recursos: los conjuntos de cambios con reconocimiento de desviación permiten comparar el estado deseado con el estado real de cientos de tipos de recursos. En el caso de los tipos de recursos no compatibles, los conjuntos de cambios con reconocimiento de desviación recurren a la comparación del estado de implementación anterior con el estado deseado. Para obtener más información, consulte la sección Tipos de recursos admitidos.
-
Propiedades de solo escritura: en el caso de las propiedades que contienen información confidencial (contraseñas, secretos), los conjuntos de cambios con reconocimiento de desviación se comparan con los valores de implementación anteriores en lugar de con los valores reales.
-
Propiedades administradas por AWS: los conjuntos de cambios con reconocimiento de desviación conservan los cambios fuera de banda realizados por los servicios de AWS en las propiedades administradas, como la capacidad deseada de un grupo de Amazon EC2 Auto Scaling. Para obtener más información, consulte la sección de propiedades administradas por AWS.
-
Teclas de etiquetas externas: los conjuntos de cambios con reconocimiento de desviación no eliminan ni modifican las claves de etiquetas que no estén especificadas en la plantilla, lo que evita conflictos con los sistemas de control de acceso basado en atributos (ABAC).
-
Sustitución de recursos desviados: los conjuntos de cambios con reconocimiento de desviación no admiten la conciliación de desviaciones en el caso de propiedades inmutables.
-
Archivos adjuntos entre pilas: algunos tipos de recursos, como
AWS::IAM::Policy, pueden influir en el estado real de otros tipos de recursos, comoAWS::IAM::Role. Los conjuntos de cambios con reconocimiento de desviación gestionan la unión de los recursos dentro de una pila. Si un recurso se modifica adjuntando un recurso secundario de una pila diferente, los conjuntos de cambios con reconocimiento de desviación detectarán la modificación como una desviación y podrán revertir el adjunto. Entre los recursos adjuntables más populares se incluyenAWS::IAM::Policy,AWS::IAM::ManagedPolicy,AWS::EC2::SecurityGroupIngressyAWS::EC2::SecurityGroupEgress.
Propiedades administradas por AWS
Puede configurar propiedades de recursos específicas para la administración activa de AWS. Por ejemplo, puede permitir que Amazon Relational Database Service (Amazon RDS) actualice automáticamente la versión secundaria del motor de una tabla de Amazon RDS. Estos cambios pueden aparecer como una desviación de la pila en CloudFormation. Los conjuntos de cambios con reconocimiento de desviación reconocen que se espera una desviación en el caso de las propiedades administradas por AWS y dejan intacto su valor real si no se ha modificado la propiedad en su plantilla. Los principales ejemplos de propiedades administradas por AWS son:
-
Habilitar la propiedad
AutoMinorVersionUpgradede una tabla de Amazon RDS para permitir las actualizaciones automáticas de la versión del motor. -
Uso del recurso
AWS::ApplicationAutoScaling::ScalableTargetpara habilitar el escalado automático de propiedades como las unidades de capacidad de lectura/escritura de una tabla de Amazon DynamoDB y el recuento deseado de un clúster de Amazon Elastic Container Service. -
Uso de
AWS::AutoScaling::ScalingPolicypara grupos de Amazon EC2 Auto Scaling
Los conjuntos de cambios con reconocimiento de desviación aclaran las propiedades que se identificaron como administradas por AWS. Para obtener más información, consulte la sección AWS CLI.
Uso de conjuntos de cambios con reconocimiento de desviación (consola)
Puede crear y administrar conjuntos de cambios con reconocimiento de desviación a través de la consola de CloudFormation mediante el mismo flujo de trabajo que los conjuntos de cambios tradicionales, con opciones adicionales para los modos de implementación.
Creación de conjuntos de cambios con reconocimiento de desviación
Creación de un conjunto de cambios con reconocimiento de desviación (consola)
Inicie sesión en la Consola de administración de AWS y abra la consola de CloudFormation en https://console.aws.amazon.com/cloudformation
. -
En la página Pias, seleccione la pila en ejecución que desea actualizar.
-
Seleccione Acciones de la pila y, a continuación, elija Crear conjunto de cambios para la pila actual.
-
En la página Crear conjunto de cambios, en Tipo de conjunto de cambios, elija Conjunto de cambios con reconocimiento de desviación.
-
Elija Create change set (Crear conjunto de cambios).
-
En la página de detalles del conjunto de cambios, revise la comparación de tres modos que muestra la implementación real, la implementación anterior y el estado deseado para cada recurso afectado.
-
Si está satisfecho con los cambios, elija Ejecutar conjunto de cambios.
Revisión de conjuntos de cambios con reconocimiento de desviación
Al ver un conjunto de cambios con reconocimiento de desviación en la consola, verá información mejorada en comparación con los conjuntos de cambios tradicionales:
-
Estado de desviación de la pila: indica si la pila se ha desviado desde su última implementación.
-
Comparación de propiedades: muestra una diferencia en JSON entre el estado real y el deseado de un recurso afectado.
-
Indicadores de desviación: marca claramente las propiedades dentro de la diferencia de JSON que se han desviado. Haga clic en Ver desviación para ver el valor de implementación anterior de una propiedad.
-
Indicadores de origen de valor: muestran si los valores anteriores de una propiedad provienen del estado real o de un estado de implementación anterior.
Uso de conjuntos de cambios con reconocimiento de desviación (AWS CLI)
Puede crear y gestionar conjuntos de cambios con reconocimiento de desviación con la AWS CLI mediante la adición del parámetro --deployment-mode REVERT_DRIFT al comando create-change-set.
Creación de conjuntos de cambios con reconocimiento de desviación
Creación de un conjunto de cambios con reconocimiento de desviación
Utilice el comando create-change-set con el parámetro --deployment-mode REVERT_DRIFT para crear un conjunto de cambios con reconocimiento de desviación.
aws cloudformation create-change-set \ --stack-namemy-stack\ --change-set-namemy-drift-aware-changeset\ --template-bodyfile://updated-template.yaml\ --deployment-mode REVERT_DRIFT \ --capabilitiesCAPABILITY_IAM
Revisión de conjuntos de cambios con reconocimiento de desviación
Revisión de los detalles de un conjunto de cambios con reconocimiento de desviación
Utilice el comando describe-change-set para revisar los detalles de un conjunto de cambios con reconocimiento de desviación:
aws cloudformation describe-change-set \ --change-set-namemy-drift-aware-changeset\ --stack-namemy-stack
La respuesta incluye información mejorada para los conjuntos de cambios con reconocimiento de desviación:
-
StackDriftStatus: muestra si la pila se ha desviado (DRIFTED,IN_SYNC,NOT_CHECKEDoUNKNOWN). -
ResourceDriftStatus: muestra el estado de desviación de cada recurso (DELETED,MODIFIED,IN_SYNCoNOT_CHECKED). -
BeforeValueFrom: indica si el valor anterior de una propiedad proviene deACTUAL_STATEoPREVIOUS_DEPLOYMENT_STATE. -
Drift: contiene los detalles de desviación de una propiedad, incluidosPreviousValue,ActualValueyDriftDetectionTimestamp. -
ResourceDriftIgnoredProperties: contiene las propiedades de un recurso para las que el conjunto de cambios no revertirá la desviación y las razones por las que se ignora la desviación.
Para obtener más información, consulte DescribeChangeSet en la referencia de la API de AWS CloudFormation.
Ejecución de conjuntos de cambios con reconocimiento de desviación
Ejecución de un conjunto de cambios con reconocimiento de desviación
Tras revisar el conjunto de cambios, utilice el comando execute-change-set para aplicar los cambios:
aws cloudformation execute-change-set \ --change-set-namemy-drift-aware-changeset\ --stack-namemy-stack
Si se produce un error en la implementación, CloudFormation restablecerá los recursos a su estado anterior a la implementación y conservará los cambios fuera de banda realizados desde la última implementación.
Tipos de recursos admitidos
Los conjuntos de cambios con reconocimiento de desviación permiten una comparación de tres modos del estado real, el estado de la implementación anterior y el estado deseado para todos los tipos de recursos que admiten la detección de desviaciones, excepto los siguientes tipos de recursos:
-
AWS::SageMaker::MlflowTrackingServer -
AWS::Route53Resolver::FirewallRuleGroup -
AWS::MediaLive::Multiplexprogram -
AWS::VpcLattice::ResourceConfiguration -
AWS::S3::StorageLensGroup -
AWS::Bedrock::AgentAlias -
AWS::MSK::Cluster -
AWS::RDS::DBProxy -
AWS::Redshift::ClusterParameterGroup -
AWS::QBusiness::Index -
AWS::NetworkManager::CoreNetwork -
AWS::IAM::OIDCProvider -
AWS::Organizations::ResourcePolicy -
AWS::SNS::TopicInlinePolicy -
AWS::Route53::KeySigningKey -
AWS::DataZone::PolicyGrant -
AWS::Transfer::Certificate -
AWS::SageMaker::ImageVersion -
AWS::Neptune::DBParameterGroup -
AWS::ODB::CloudVmCluster -
AWS::RolesAnywhere::TrustAnchor -
AWS::Evidently::Launch -
AWS::Detective::Graph -
AWS::Maester::DocumentType -
AWS::SageMaker::ModelPackageGroup -
AWS::S3Express::BucketPolicy -
AWS::Panorama::PackageVersion -
AWS::S3Tables::TableBucketPolicy
En el caso de los recursos que no admiten la comparación de tres mods, los conjuntos de cambios con reconocimiento de desviación recurren a una comparación entre el estado anterior de la implementación y el estado deseado.