Automatice la implementación de conjuntos de pilas mediante AWS CodePipeline y AWS CodeBuild - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Automatice la implementación de conjuntos de pilas mediante AWS CodePipeline y AWS CodeBuild

Creado por Thiyagarajan Mani (AWS), Mihir Borkar (AWS) y Raghu Gowda (AWS)

Repositorio de código: automated-code-pipeline-stackset -deployment

Entorno: producción

Tecnologías: DevOps desarrollo y pruebas de software

Servicios de AWS: AWS CodeBuild CodeCommit; AWS CodePipeline; AWS Organizations; AWS CloudFormation

Resumen

En sus procesos de integración continua y entrega continua (CI/CD), es posible que desee implementar aplicaciones automáticamente en todas sus cuentas de AWS existentes y en las cuentas nuevas que añada a su organización en AWS Organizations. Al diseñar una solución de CI/CD para este requisito, la capacidad de administrador de conjuntos de pilas delegado de AWS CloudFormation resulta útil porque habilita una capa de seguridad al restringir el acceso a la cuenta de administración. Sin embargo, AWS CodePipeline utiliza el modelo de permisos gestionados por el servicio para implementar aplicaciones en varias cuentas y regiones. Debe usar la cuenta de administración de AWS Organizations para realizar la implementación con conjuntos de pilas, ya CodePipeline que AWS no admite la función de administrador delegado de conjuntos de pilas.

Este patrón describe cómo puede evitar esta limitación. El patrón utiliza AWS CodeBuild y un script personalizado para automatizar la implementación de conjuntos de pilas con AWS CodePipeline. Automatiza las siguientes actividades de implementación de aplicaciones:

  • Implementación de una aplicación como conjuntos de pilas en unidades organizativas (UO) existentes

  • Ampliación de la implementación de una aplicación a UO y regiones adicionales 

  • Eliminación de una aplicación implementada de todas o determinadas UO o regiones

Requisitos previos y limitaciones

Requisitos previos 

Antes de seguir los pasos de este patrón:

Limitaciones

El código que se suministra con este patrón tiene las siguientes limitaciones: 

  • Puede implementar solo una CloudFormation plantilla para una aplicación; actualmente, no se admite el despliegue de varias plantillas.

  • La personalización de la implementación actual requiere DevOps experiencia.

  • Este patrón no utiliza claves AWS Key Management System (AWS KMS). Sin embargo, puede habilitar esta funcionalidad reconfigurando la CloudFormation plantilla incluida en este patrón.

Arquitectura

Arquitectura de automatización de canalización CI/CD

Esta arquitectura para la canalización de la implementación de CI/CD gestiona lo siguiente:

  • Restringe el acceso directo a la cuenta de administración al delegar la responsabilidad de implementación del conjunto de pilas a una cuenta de CI/CD dedicada como administradora del conjunto de pilas para las implementaciones de aplicaciones.

  • Utiliza el modelo de permisos administrados por servicios para implementar la aplicación automáticamente cada vez que se crea una nueva cuenta y se asigna a una UO.

  • Garantiza la coherencia de las versiones de las aplicaciones en todas las cuentas del entorno.

  • Utiliza varias etapas de aprobación en el repositorio y la canalización para proporcionar capas adicionales de seguridad y control a la aplicación implementada.

  • Supera la limitación actual que suponía utilizar un script de CodePipeline despliegue personalizado para implementar o CodeBuild eliminar automáticamente conjuntos de pilas e instancias de pila. Para ver un ejemplo del control de flujo y la jerarquía de las llamadas a las API implementadas por el script personalizado, consulte la sección de Información adicional.

  • Crea conjuntos de pilas individuales para los entornos de desarrollo, prueba y producción. Además, puede crear conjuntos de pilas que combinen varias UO y regiones en cada etapa. Por ejemplo, puede combinar UO de entorno aislado y de desarrollo en una etapa de implementación de desarrollo.

  • Admite la implementación de aplicaciones en, o la exclusión de, un subconjunto de cuentas o una lista de unidades organizativas.

Automatizar y escalar

Puede usar el código que se proporciona con este patrón para crear un CodeCommit repositorio de AWS y una canalización de código para su aplicación. A continuación, puede implementarlos como conjuntos de pilas en varias cuentas en la unidad organizativa. El código también automatiza componentes como los temas de Amazon Simple Notification Service (Amazon SNS) para notificar a los aprobadores, los roles de AWS Identity and Access Management (IAM) requeridos y la política de control de servicio (SCP) que se aplicará en la cuenta de administración.

Herramientas

Servicios de AWS

  • AWS le CloudFormation ayuda a configurar los recursos de AWS, aprovisionarlos de forma rápida y coherente y gestionarlos durante todo su ciclo de vida en todas las cuentas y regiones de AWS.

  • AWS CodeBuild es un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación.

  • AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.

  • AWS CodeDeploy automatiza las implementaciones en Amazon Elastic Compute Cloud (Amazon EC2) o en instancias locales, funciones de AWS Lambda o servicios de Amazon Elastic Container Service (Amazon ECS).

  • AWS le CodePipeline ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar cambios de software de forma continua.

  • AWS Organizations es un servicio de administración de cuentas que le permite agrupar varias cuentas de AWS en una organización que usted crea y administra de manera centralizada.

  • Amazon Simple Notification Service (Amazon SNS) le permite coordinar y administrar el intercambio de mensajes entre publicadores y clientes, incluidos los servidores web y las direcciones de correo electrónico.

Repositorio de código

El código de este patrón está disponible en el repositorio GitHub automated-code-pipeline-stackset-deployment. Para ver la estructura de carpetas y otros detalles, consulte el archivo readme del repositorio.

Prácticas recomendadas

Este patrón restringe el acceso directo a la cuenta de administración al implementar la aplicación en la UO. Agregar varias etapas de aprobación al proceso de canalización y repositorio ayuda a proporcionar seguridad y gobierno adicionales a las aplicaciones y los componentes que se implementan mediante este enfoque.

Epics

TareaDescripciónHabilidades requeridas

Habilitar todas las características en la cuenta de administración.

Habilitar todas las características de la cuenta de administración de su organización siguiendo las instrucciones de la documentación de AWS Organizations.

Administrador de AWS, administrador de plataformas

Crear una cuenta CI/CD.

En AWS Organizations, en su organización, crear una cuenta de CI/CD dedicada y asignar a un equipo la propiedad y el control del acceso a la cuenta.

Administrador de AWS

Agregar un administrador delegado.

En la cuenta de administración, registrar la cuenta de CI/CD que creó en el paso anterior como administrador delegado del conjunto de pilas. Para obtener instrucciones, consulte la CloudFormation documentación de AWS.

Administrador de AWS, administrador de plataformas
TareaDescripciónHabilidades requeridas

Clone el repositorio de código.

  1. Clone el repositorio de código proporcionado con este patrón en su computadora:

    git clone https://github.com/aws-samples/automated-code-pipeline-stackset-deployment.git
  2. Revisar el archivo readme para entender la estructura de directorios y otros detalles.

AWS DevOps

Cree temas de SNS.

Puede usar la sns-template.yaml plantilla que se proporciona en el GitHub repositorio para crear temas de SNS y configurar las suscripciones para las solicitudes de aprobación.

  1. En la consola de AWS, inicie sesión en la cuenta de CI/CD.

  2. Abre la CloudFormation consola en https://console.aws.amazon.com/cloudformation.

  3. Cree una pila nueva con nuevos recursos (opción estándar).

  4. En Especificar plantilla, elija Cargar un archivo de plantilla, Elegir archivo y, a continuación, seleccione el sns-template.yaml archivo de la templates carpeta del GitHub repositorio clonado. Elija Next (Siguiente).

  5. Proporcione un nombre significativo para la pila de aplicaciones.

  6. Especifique un prefijo para los recursos.

  7. Seleccione Next (Siguiente), Next (Siguiente) y Submit (Enviar).

  8. Cuando la pila se haya creado correctamente, seleccione la pestaña Outputs (Salidas) y anote los nombres de recursos de Amazon (ARN) de los temas de SNS para las solicitudes de incorporación de datos, el entorno de pruebas y el entorno de producción. Utilizará esta información en los pasos siguientes.

AWS DevOps

Crear roles de IAM para los componentes de CI/CD.

Puede utilizar la cicd-role-template.yaml plantilla que se proporciona en el GitHub repositorio para crear las funciones y políticas de IAM requeridas por los componentes de la CI/CD.

  1. En la consola de AWS, inicie sesión en la cuenta de CI/CD.

  2. Abra la CloudFormation consola en https://console.aws.amazon.com/cloudformation.

  3. Cree una pila nueva con nuevos recursos (opción estándar).

  4. En Especificar plantilla, elija Cargar un archivo de plantilla, Elegir archivo y, a continuación, seleccione el cicd-role-template.yaml archivo de la templates carpeta del GitHub repositorio clonado. Elija Next (Siguiente).

  5. Proporcione un nombre significativo para la pila de aplicaciones.

  6. Introduzca los valores de los siguientes parámetros:

    • El ARN para la política de límite de permisos. Puede obtener este ARN en la sección Detalles de la política de su política de límites de permisos en la consola de IAM.

    • El ARN del tema de aprobación de producción SNS que anotó anteriormente.

    • El ARN del tema de aprobación de la prueba SNS que anotó anteriormente.

    • Un prefijo para los recursos creados por la plantilla.

  7. Seleccione Next (Siguiente), Next (Siguiente) y Submit (Enviar).

  8. Cuando la pila se haya creado correctamente, seleccione la pestaña Outputs (Salidas) y anote los ARN de los roles de IAM que se crearon. Utilizará esta información en los pasos siguientes.

AWS DevOps

Cree un CodeCommit repositorio y una canalización de código para su aplicación.

Puedes usar la cicd-pipeline-template.yaml plantilla que se proporciona en el GitHub repositorio para crear un CodeCommit repositorio y una canalización de código para tu aplicación.

  1. En la consola de AWS, inicie sesión en la cuenta de CI/CD.

  2. Abre la CloudFormation consola en https://console.aws.amazon.com/cloudformation.

  3. Cree una pila nueva con nuevos recursos (opción estándar).

  4. En Especificar plantilla, elija Cargar un archivo de plantilla, Elegir archivo y, a continuación, seleccione el cicd-pipeline-template.yaml archivo de la templates carpeta del GitHub repositorio clonado. Elija Next (Siguiente).

  5. Proporcione un nombre significativo para la pila de aplicaciones.

  6. Introduzca los valores de los siguientes parámetros:

    • AppRepositoryName— El nombre del CodeCommit repositorio que se creará para la aplicación.

    • AppRepositoryDescription— Una breve descripción del CodeCommit repositorio que se creará para la aplicación.

    • ApplicationName— El nombre de la aplicación. Esta cadena se utiliza como nombre del CodeCommit repositorio y como prefijo de la canalización de CI/CD.

    • CloudWatchEventRoleARN: el ARN del rol de CloudWatch evento de la tarea anterior.

    • CodeBuildProjectRoleARN: el ARN del rol del CodeBuild proyecto de la tarea anterior.

    • CodePipelineRoleARN: el ARN del CodePipeline rol de la tarea anterior.

    • DeploymentConfigBucket— El nombre del bucket de Amazon Simple Storage Service (Amazon S3) donde se almacenarán los archivos de configuración de despliegue y el archivo.zip del script.

    • DeploymentConfigKey— La ruta y el nombre del archivo.zip (clave Amazon S3).

    • PRApprovalSNSARN: el ARN del tema de SNS para las notificaciones de solicitudes de extracción.

    • ProdApprovalSNSARN: el ARN del tema SNS para las aprobaciones de producción.

    • TESTApprovalSNSARN: el ARN del tema de SNS para las aprobaciones de pruebas.

    • TemplateBucket— El nombre del depósito de S3 de la cuenta de CI/CD donde se almacenará la plantilla de creación de canalizaciones de CI/CD.

  7. Seleccione Next (Siguiente), Next (Siguiente) y Submit (Enviar).

  8. Cuando la pila se completa correctamente, se crea un CodeCommit repositorio con el nombre especificado y una estructura de directorios predeterminada, archivos de configuración de despliegue, scripts y una canalización de código para el repositorio.

AWS DevOps
TareaDescripciónHabilidades requeridas

Clonar el repositorio de la aplicación.

La plantilla de canalización de CI/CD que utilizó anteriormente crea un repositorio de aplicaciones y una canalización de código de muestra. Para clonar y verificar el repositorio:

  1. Inicie sesión en la cuenta de CI/CD.

  2. Busque el repositorio de la aplicación y la canalización de CI/CD que creó en la epopeya anterior.

  3. Copie la URL del repositorio y use el comando git clone para clonar el repositorio en su máquina local.

  4. Compruebe que la estructura del directorio y los archivos coincidan con lo siguiente:

    root |- deploy_configs | |- deployment_config.json |- parameters | |- template-parameter-dev.json | |- template-parameter-test.json | |- template-parameter-prod.json |- templates | |- template.yml |- buildspec.yml

    donde la deploy_configs carpeta contiene el archivo de configuración de despliegue y las parameters carpetas templates y incluyen los archivos predeterminados que sustituirá por sus propios archivos de CloudFormation plantillas y parámetros.

    Importante: No personalice la estructura de carpetas.

  5. Cree una rama de características.

Desarrollador de aplicaciones, ingeniero de datos

Agregar artefactos de aplicaciones.

Actualice el repositorio de aplicaciones mediante una CloudFormation plantilla.

Nota: Esta solución admite el despliegue de una sola CloudFormation plantilla.

  1. Cree una CloudFormation plantilla para implementar los cambios en el código de la aplicación y asígnele un nombre<application-name>.yaml.

  2. Sustituya el template.yml archivo de la templates carpeta del repositorio de aplicaciones por la CloudFormation plantilla que creó en el paso 1.

  3. Prepare los archivos de parámetros para cada entorno (desarrollo, pruebas y producción). 

  4. Asigne un nombre a los archivos de parámetros con el formato <cloudformation-template-name>-parameter-<environment-name>.json.

  5. Sustituya los archivos de parámetros predeterminados de la carpeta parameters por los archivos del paso 4.

Desarrollador de aplicaciones, ingeniero de datos

Actualizar el archivo de configuración de implementación.

Actualice el archivo deployment_config.json:

  1. En el repositorio de aplicaciones, navegue hasta la carpeta deploy_configs.

  2. Abra el archivo deployment_config.json:

    { "deployment_action": "<deploy/delete>", "stack_set_name": "<stack set name>", "stack_set_desciption": "<stack set description>", "deployment_targets": { "dev": { "org_units": ["list of OUs"], "regions": ["list of regions"], "filter_accounts": ["list of accounts"], "filter_type": "<DIFFERENCE/INTERSECTION/UNION>" }, "test": { "org_units": ["list of OUs"], "regions": ["list of regions"], "filter_accounts": ["list of accounts"], "filter_type": "<DIFFERENCE/INTERSECTION/UNION>" }, "prod": { "org_units": ["list of OUs"], "regions": ["list of regions"], "filter_accounts": ["list of accounts"], "filter_type": "<DIFFERENCE/INTERSECTION/UNION>" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "<True/False>", "retain_stacks_on_account_removal": "<True/False>", "region_deployment_concurrency": "<SEQUENTIAL/PARALLEL>" }
  3. Actualice los valores de acción de implementación, el nombre del conjunto de pilas, la descripción del conjunto de pilas y los objetivos de implementación.

    Por ejemplo, puede configurar deployment_action como delete para que elimine el conjunto de pilas completo y sus instancias de pila asociadas. Se utiliza deploy para crear un conjunto de pilas nuevo, actualizar un conjunto de pilas existente o añadir o eliminar instancias de pila para unidades organizativas o regiones adicionales. Para obtener más ejemplos, consulte la sección Additional information (Información adicional).

Este patrón crea conjuntos de pilas individuales para cada entorno añadiendo el nombre del entorno al nombre del conjunto de pilas que se proporciona en el archivo de configuración de implementación.

Desarrollador de aplicaciones, ingeniero de datos

Confirme los cambios e implemente el conjunto de pilas.

Confirme los cambios que especificó en la plantilla de la aplicación y fusione e implemente el conjunto de pilas en varios entornos paso a paso:

  1. Guarde todos sus archivos y confirme los cambios en la rama de características de su repositorio de aplicaciones local.

  2. Inserte la rama de características en el repositorio remoto.

  3. Cree una solicitud de extracción para combinar los cambios en la rama principal.

    Cuando la solicitud de extracción haya sido aprobada y los cambios se hayan fusionado con la rama principal, se iniciará la canalización de CI/CD.

  4. Cuando la etapa de desarrollo y despliegue se haya completado correctamente, consulte la pestaña Administrado por el servicio de la CloudFormation consola. StackSets

    Verá un nuevo conjunto de pilas con el sufijo dev.

  5. Compruebe los CodeBuild registros de la etapa de despliegue de desarrollo para ver si hay algún problema.

  6. Implemente el conjunto de pilas en los entornos de prueba y producción solicitando a sus responsables de aprobación que aprueben las implementaciones de esas etapas y repitiendo los pasos 5 y 6. Los conjuntos de pilas para los entornos de prueba y producción tienen los sufijos test y prod.

Desarrollador de aplicaciones, ingeniero de datos

Solución de problemas

ProblemaSolución

La implementación falla y muestra la excepción:

Cambie el nombre del archivo de parámetros de la plantilla a <application name>-parameter-<evn>.json; no se permiten los nombres predeterminados

Los archivos CloudFormation de parámetros de la plantilla deben seguir la convención de nomenclatura especificada. Actualice los nombres de archivo de parámetros e inténtelo de nuevo.

La implementación falla y muestra la excepción:

Cambie el nombre de la CloudFormation plantilla a .yml; las plantillas predeterminadas.yml o template.yaml no están permitidas <application name>

El nombre de la plantilla debe seguir la convención de nomenclatura especificada. CloudFormation Actualice el nombre del archivo e inténtelo de nuevo.

La implementación falla y muestra la excepción:

No se ha encontrado CloudFormation una plantilla válida ni su archivo de parámetros para el entorno {environment name}

Compruebe las convenciones de nomenclatura de archivos de la CloudFormation plantilla y su archivo de parámetros para el entorno especificado.

La implementación falla y muestra la excepción:

Acción de implementación no válida proporcionada en el archivo de configuración de implementación. Las opciones válidas son «implementar» y «eliminar».

Usted especificó un valor no válido para el parámetro deployment_action en el archivo de configuración de implementación. El parámetro tiene dos valores válidos: deploy ydelete. Utilice deploy para crear y actualizar los conjuntos de pilas y sus instancias de pila asociadas. Utilice delete solo cuando desee eliminar el conjunto de pilas completo y las instancias de pila asociadas.

Recursos relacionados

Información adicional

Diagrama de flujo

El siguiente diagrama de flujo muestra el control de flujo y la jerarquía de las llamadas a la API implementadas por el script personalizado para automatizar la implementación de conjuntos de pilas.

Control de flujo y llamadas a la API implementados por un script de Python

Archivos de configuración de implementación de muestra

Crear un nuevo conjunto de pila

El siguiente archivo de configuración de implementación crea un nuevo conjunto de pilas llamado sample-stack-set en la región de AWS us-east-1 en tres unidades organizativas.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Implementación de un conjunto de pilas existente en otra UO

Si implementa la configuración que se muestra en el ejemplo anterior y desea implementar el conjunto de pilas en una UO adicional llamada dev-org-unit-2 en el entorno de desarrollo, el archivo de configuración de implementación podría tener el siguiente aspecto.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Implementación de un conjunto de pilas existente en otra región de AWS

Si implementa la configuración que se muestra en el ejemplo anterior y desea implementar el conjunto de pilas en una región de AWS adicional (us-east-2) en el entorno de desarrollo de dos UO (dev-org-unit-1 y dev-org-unit-2), el archivo de configuración de implementación podría tener el siguiente aspecto.

Nota: Los recursos de la CloudFormation plantilla deben ser válidos y específicos de la región.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-1", "us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Eliminar una instancia de pila de una UO o una región de AWS

Supongamos que se ha implementado la configuración de implementación que se muestra en el ejemplo anterior. El siguiente archivo de configuración elimina las instancias de pila de ambas regiones de la UOdev-org-unit-2.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1", "us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

El siguiente archivo de configuración elimina la instancia de pila de la región de AWS us-east-1 para ambas UO del entorno de desarrollo.    

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Eliminar todo el conjunto de pilas

El siguiente archivo de configuración de implementación elimina el conjunto de pilas completo y todas sus instancias de pila asociadas.

{ "deployment_action": “delete”, "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1", "dev-org-unit-2"], "regions": ["us-east-2"], "filter_accounts": [], "filter_type": "" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

 Excluir una cuenta de la implementación

 El siguiente archivo de configuración de implementación excluye de la implementación la cuenta 111122223333, que forma parte de la UO dev-org-unit-1.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": ["111122223333"], "filter_type": "DIFFERENCE" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }

Implementación de la aplicación en un subconjunto de cuentas de una UO

El siguiente archivo de configuración de implementación implementa la aplicación solo en tres cuentas (111122223333, 444455556666 y 777788889999) de la UO dev-org-unit-1.

{ "deployment_action": "deploy", "stack_set_name": "sample-stack-set", "stack_set_desciption": "this is a sample stack set", "deployment_targets": { "dev": { "org_units": ["dev-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": ["111122223333", "444455556666", "777788889999"], "filter_type": "INTERSECTION" }, "test": { "org_units": ["test-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" }, "prod": { "org_units": ["prod-org-unit-1"], "regions": ["us-east-1"], "filter_accounts": [], "filter_type": "" } }, "cft_capabilities": ["CAPABILITY_IAM", "CAPABILITY_NAMED_IAM"], "auto_deployement": "True", "retain_stacks_on_account_removal": "True", "region_deployment_concurrency": "PARALLEL" }