

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.

# Personalización de la zona de aterrizaje de AWS Control Tower
<a name="customize-landing-zone"></a>

Algunos aspectos de la zona de aterrizaje de AWS Control Tower se pueden configurar en la consola, como la selección de regiones y los controles opcionales. Otros cambios pueden realizarse fuera de la consola con automatización.

Por ejemplo, puede crear personalizaciones más amplias de su zona de aterrizaje con la función *Customizations for AWS Control Tower*, un marco de personalización de GitOps estilo que funciona con AWS CloudFormation plantillas y eventos del ciclo de vida de AWS Control Tower.

# Personalización desde la consola de AWS Control Tower
<a name="console-customize"></a>

Para realizar estas personalizaciones en la zona de aterrizaje, siga los pasos que se indican en la consola de AWS Control Tower.

**Selección de nombres personalizados durante la configuración**
+ Puede seleccionar los nombres de las unidades organizativas (OU) de nivel superior durante la configuración. [Puede cambiarle el nombre OUs en cualquier momento a través de la AWS Organizations consola, pero hacer cambios OUs en su nombre AWS Organizations puede provocar una desviación reparable.](drift.md)
+ Puede seleccionar los nombres de las cuentas compartidas de **Auditoría** y **Archivo de registro**, pero no puede cambiarlos después de la configuración (se trata de una selección única).

**Sugerencia**  
Recuerde que cambiar el nombre de una OU AWS Organizations no actualiza el producto aprovisionado correspondiente en Account Factory. Para actualizar automáticamente el producto aprovisionado (y evitar desviaciones), debe realizar la operación de la OU a través de AWS Control Tower, lo que incluye crear, eliminar o volver a registrar una OU.

**Seleccione regiones AWS**
+ Puedes personalizar tu landing zone seleccionando AWS regiones específicas para su gobierno. Siga los pasos que se indican en la consola de AWS Control Tower.
+ Puedes seleccionar y deseleccionar AWS regiones para su gobierno al actualizar tu landing zone.
+ Puede configurar el control de denegación regional como **Habilitado o **No habilitado****, y controlar el acceso de los usuarios a la mayoría de los AWS servicios en las regiones no gobernadas AWS .

Para obtener información sobre las Regiones de AWS limitaciones de implementación de cFCT, consulte. [Limitaciones de control](control-limitations.md)

**Personalización mediante la adición de controles opcionales**
+ Los controles altamente recomendados y opcionales son optativos, lo que significa que puede personalizar el nivel de cumplimiento de la zona de aterrizaje eligiendo cuáles habilitar. Los [controles opcionales](https://docs.aws.amazon.com//controltower/latest/userguide/optional-controls.html) no están habilitados de forma predeterminada. 
+ Los [controles de residencia de datos](https://docs.aws.amazon.com//controltower/latest/userguide/data-residency-controls.html) opcionales le permiten personalizar las regiones en las que almacena y permite el acceso a los datos.
+ Los controles opcionales que forman parte del estándar CSPM de Security Hub integrado le permiten escanear el entorno de la Torre de Control de AWS para comprobar si hay riesgos de seguridad.
+ Los controles proactivos opcionales le permiten comprobar sus CloudFormation recursos antes de aprovisionarlos para asegurarse de que los nuevos recursos cumplen con los objetivos de control de su entorno.

**Personaliza tus rutas AWS CloudTrail**
+ Al actualizar su landing zone a la versión 3.0 o posterior, puede optar por participar o excluirse de las CloudTrail rutas a nivel de organización gestionadas por AWS Control Tower. Puede cambiar esta selección cada vez que actualice la zona de aterrizaje. AWS Control Tower crea un registro de seguimiento por organización en la cuenta de administración y dicho registro pasa a estado activo o inactivo, en función de lo que elija. La zona de aterrizaje 3.0 no admite CloudTrail rutas a nivel de cuenta; sin embargo, si las necesita, puede configurar y administrar las suyas propias. Los registros de seguimiento duplicados pueden suponer un coste adicional.

**Creación de cuentas de miembro personalizadas en la consola**
+ Puede crear cuentas de miembro de AWS Control Tower personalizadas y actualizar las cuentas de miembro ya existentes para añadir personalizaciones desde la consola de AWS Control Tower. Para obtener más información, consulte [Personalización de cuentas con la personalización del generador de cuentas (AFC)](af-customization-page.md).

# Automatización de las personalizaciones fuera de la consola de AWS Control Tower
<a name="automate-customizations"></a>

Algunas personalizaciones no están disponibles a través de la consola de AWS Control Tower, pero se pueden implementar de otras formas. Por ejemplo:
+ Puede personalizar las cuentas durante el aprovisionamiento, siguiendo un flujo de trabajo GitOps similar, con [*Account Factory for Terraform (AFT)*](taf-account-provisioning.md).

  AFT se implementa con un módulo Terraform, disponible en el [repositorio de AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main).
+ Puede personalizar la zona de aterrizaje de la Torre de Control de AWS con [*Customizations for AWS Control Tower*](cfct-overview.md) (cFCT), un paquete de funciones que se basa en AWS CloudFormation plantillas y políticas de control de servicios ()SCPs. Puede implementar las plantillas y políticas personalizadas en cuentas y unidades organizativas individuales (OUs) de su organización.

  El código fuente de cFCT está disponible en un [GitHub repositorio](https://github.com/aws-solutions/aws-control-tower-customizations).
+ Puede personalizar la zona de aterrizaje de AWS Control Tower con el acelerador de zonas de aterrizaje (LZA) en AWS. La solución LZA está diseñada para alinearse con las AWS mejores prácticas y ajustarse a varios marcos de cumplimiento globales. Le recomendamos que implemente AWS Control Tower como zona de aterrizaje básica y que, a continuación, mejore las capacidades de la zona de aterrizaje con LZA, según sea necesario. Para obtener más información, consulte [AWS Control Tower y Landing Zone Accelerator.](https://docs.aws.amazon.com//controltower/latest/userguide/about-lza.html)

# AWS Control Tower y acelerador de zonas de aterrizaje
<a name="about-lza"></a>

En esta sección se describen las ventajas de trabajar de forma conjunta con AWS Control Tower y la solución **Acelerador de zonas de aterrizaje** (LZA).

*Puede personalizar la zona de aterrizaje de AWS Control Tower con el acelerador de zonas de aterrizaje (LZA) en AWS.*

LZA es una solución que implementa un conjunto fundamental de capacidades diseñadas para alinearse con las AWS mejores prácticas y con varios marcos de cumplimiento globales, para ayudarlo a administrar y gobernar un entorno de múltiples cuentas. LZA se ha creado con el AWS Cloud Development Kit (CDK).

LZA configura automáticamente un entorno de nube adecuado para alojar cargas de trabajo seguras. Esta solución se puede implementar en todos los dispositivos Regiones de AWS para ayudarle a mantener la coherencia de las operaciones y la gobernanza. La solución LZA está diseñada para alinearse con las AWS mejores prácticas y ajustarse a varios marcos de cumplimiento globales. 

Le recomendamos que implemente AWS Control Tower como zona de aterrizaje básica y, a continuación, mejore las capacidades de la zona de aterrizaje con LZA, según sea necesario. La combinación de LZA y AWS Control Tower proporciona una solución integral y sin código que le ayuda a administrar y gobernar un entorno con varias cuentas y está diseñada para admitir cargas de trabajo altamente reguladas y requisitos de conformidad complejos. De forma conjunta, AWS Control Tower y el Acelerador de zonas de aterrizaje le ayudan a establecer la preparación de la plataforma, incluidas las capacidades de seguridad, cumplimiento y operativas.

[El código fuente de LZA está disponible en un repositorio. GitHub ](https://github.com/awslabs/landing-zone-accelerator-on-aws)

Para obtener más información sobre cómo combinar LZA y AWS Control Tower, consulte [la guía de implementación de LZA](https://docs.aws.amazon.com//solutions/latest/landing-zone-accelerator-on-aws/prerequisites.html).

## Ventajas de las personalizaciones de AWS Control Tower (CfCT)
<a name="benefits-of-cfct"></a>

El paquete de funciones que denominamos *Personalizaciones de AWS Control Tower* (CfCT) le ayuda a crear personalizaciones más amplias para la zona de aterrizaje que las que puede crear en la consola de AWS Control Tower. Ofrece un proceso automatizado y GitOps estilizado. Puede remodelar la zona de aterrizaje para cumplir con los requisitos empresariales.

Este proceso de *infrastructure-as-code*personalización integra las AWS CloudFormation plantillas con las políticas de control de AWS servicios (SCPs) y los [eventos del ciclo](lifecycle-events.md) de vida de AWS Control Tower, de modo que las implementaciones de recursos permanezcan sincronizadas con su landing zone. Por ejemplo, cuando crea una nueva cuenta con el generador de cuentas, los recursos asociados a la cuenta y a la OU se pueden implementar automáticamente.

**nota**  
A diferencia de Account Factory y AFT, cFCT no está diseñado específicamente para crear nuevas cuentas, sino para personalizar las cuentas y OUs en tu landing zone mediante el despliegue de los recursos que tú especifiques.

**nota**  
La unidad organizativa (OU) de destino configurada en cFCT debe estar AWSControl TowerBaseline habilitada en AWS Control Tower. Para obtener más información AWSControlTowerBaseline, consulte:[Tipos de referencia que se aplican a nivel de unidad organizativa](types-of-baselines.md#ou-baseline-types).

**Ventajas**
+ **Amplíe un AWS entorno personalizado y seguro**: puede ampliar su entorno de AWS Control Tower multicuenta con mayor rapidez e incorporar las AWS mejores prácticas en un flujo de trabajo de personalización repetible.
+ **Cree una instancia de sus requisitos**: puede personalizar la zona de aterrizaje de AWS Control Tower para adaptarla a las necesidades de su empresa, con las AWS CloudFormation plantillas y las políticas de control de servicios que expresan sus intenciones políticas.
+ **Automatice aún más con los eventos de ciclo de vida de AWS Control Tower**: los eventos del ciclo de vida le permiten implementar recursos en función de la finalización de una serie de eventos anteriores. Puede confiar en que un evento del ciclo de vida le ayudará a implementar recursos en las cuentas y OUs de forma automática.
+ **Amplíe la arquitectura de red**: puede implementar arquitecturas de red personalizadas que mejoren y protejan la conectividad, como una puerta de enlace de tránsito.

## Ejemplos de CfCT adicionales
<a name="cfct-examples"></a>
+ En la entrada del blog sobre AWS arquitectura titulada [Implemente un DNS coherente con *las personalizaciones de Service Catalog y AWS Control Tower*, se ofrece un ejemplo de uso de redes con personalizaciones para AWS Control Tower (cFCT) y AWS Control Tower](https://aws.amazon.com/blogs//architecture/deploy-consistent-dns-with-aws-service-catalog-and-aws-control-tower-customizations/).
+ Un ejemplo específico [relacionado con cFCT y Amazon GuardDuty](https://github.com/aws-samples/aws-security-reference-architecture-examples/tree/main/aws_sra_examples/solutions/guardduty/guardduty_org/customizations_for_aws_control_tower) está disponible GitHub en el [`aws-samples`repositorio](https://github.com/aws-samples/aws-security-reference-architecture-examples).
+ Hay disponibles ejemplos de código adicionales sobre CfCT como parte de la arquitectura de referencia de seguridad de AWS , en el [repositorio `aws-samples`](https://github.com/aws-samples/aws-security-reference-architecture-examples). Muchos de estos ejemplos contienen archivos `manifest.yaml` de ejemplo en un directorio denominado `customizations_for_aws_control_tower`.

Para obtener más información sobre la arquitectura AWS de referencia de seguridad, consulte las páginas de [orientación AWS prescriptiva](https://docs.aws.amazon.com//prescriptive-guidance/latest/security-reference-architecture/welcome.html).

# Información general sobre Personalizaciones de AWS Control Tower (CfCT)
<a name="cfct-overview"></a>

*Las personalizaciones de AWS Control Tower* (cFCT) le ayudan a personalizar la zona de aterrizaje de AWS Control Tower y a seguir las prácticas AWS recomendadas. Las personalizaciones se implementan con AWS CloudFormation plantillas y políticas de control de servicios (). SCPs

Esta capacidad de CfCT se integra con los eventos del ciclo de vida de AWS Control Tower, de modo que sus implementaciones de recursos permanecen sincronizadas con su zona de aterrizaje. Por ejemplo, cuando se crea una nueva cuenta a través del generador de cuentas, todos los recursos asociados a la cuenta se implementan automáticamente. Puedes implementar las plantillas y políticas personalizadas en cuentas individuales y unidades organizativas (OUs) de tu organización.

**nota**  
La unidad organizativa (OU) de destino configurada en cFCT debe estar AWSControl TowerBaseline habilitada en AWS Control Tower. Para obtener más información AWSControlTowerBaseline, consulte:[Tipos de referencia que se aplican a nivel de unidad organizativa](types-of-baselines.md#ou-baseline-types).

 En el siguiente vídeo se describen las prácticas recomendadas para implementar una canalización de CfCT escalable y las personalizaciones de CfCT habituales. 

[![AWS Videos](http://img.youtube.com/vi/https://www.youtube.com/embed/fDtxiBW_J8I/0.jpg)](http://www.youtube.com/watch?v=https://www.youtube.com/embed/fDtxiBW_J8I)


En la siguiente sección se incluyen consideraciones referidas a la arquitectura y los pasos de configuración para implementar Personalizaciones de AWS Control Tower (CfCT). Incluye un enlace a la [AWS CloudFormation](https://aws.amazon.com/cloudformation)plantilla que lanza, configura y ejecuta los AWS servicios necesarios, de acuerdo con las AWS mejores prácticas de seguridad y disponibilidad.

*Este tema está destinado a arquitectos de infraestructuras de TI y desarrolladores que tengan experiencia práctica en la arquitectura de la nube de AWS .*

Para obtener información sobre las actualizaciones y los cambios más recientes en las personalizaciones de AWS Control Tower (cFCT), consulte el archivo [ChangeLog.md](https://github.com/aws-solutions/aws-control-tower-customizations/blob/master/CHANGELOG.md) del repositorio. GitHub 

# Información general de la arquitectura
<a name="architecture"></a>

Al implementar cFCT, se crea el siguiente entorno en la AWS nube, con un bucket de Amazon S3 como fuente de configuración.

![\[Diagrama de la arquitectura de Personalizaciones de AWS Control Tower\]](http://docs.aws.amazon.com/es_es/controltower/latest/userguide/images/customizations-for-aws-control-tower-architecture-diagram.png)


cFCT incluye una AWS CloudFormation plantilla que puede implementar en su cuenta de administración de AWS Control Tower. La plantilla lanza todos los componentes necesarios para crear los flujos de trabajo, de forma que pueda personalizar su zona de aterrizaje de AWS Control Tower.

**Nota**  
CfCT debe implementarse en la región de origen de AWS Control Tower y en la cuenta de administración de AWS Control Tower, ya que ahí es donde se implementa la zona de aterrizaje de AWS Control Tower. Para obtener información acerca de la configuración de una zona de aterrizaje de AWS Control Tower, consulte [Introducción a AWS Control Tower](getting-started-with-control-tower.md).

A medida que se implementa CfCT, este empaqueta y carga los recursos personalizados en el origen de la canalización del código por medio de [Amazon Simple Storage Service](https://aws.amazon.com/s3/) (Amazon S3). El proceso de carga invoca automáticamente la máquina de estado de las políticas de control de servicios (SCPs) y la máquina de [AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)estados para implementarlas a nivel de unidad organizativa o para implementar instancias apiladas a nivel de unidad organizativa o de cuenta. SCPs 

**Nota**  
De forma predeterminada, CfCT crea un bucket de Amazon S3 para almacenar el origen de la canalización. Si tiene un AWS CodeCommit repositorio existente, puede cambiar la ubicación a un [CodeCommit](https://aws.amazon.com/codecommit/)repositorio. Para obtener más información, consulte [[Set up Amazon S3 as the configuration source](cfct-s3-source.md)](cfct-s3-source.md).

**CfCT implementa dos flujos de trabajo:**
+ un flujo de trabajo de [AWS CodePipeline](https://aws.amazon.com/codepipeline/)
+ y un flujo de trabajo de eventos del ciclo de vida de AWS Control Tower. 

**El AWS CodePipeline flujo de trabajo**

El AWS CodePipeline flujo de trabajo configura AWS CodePipeline, [AWS CodeBuild](https://aws.amazon.com/codebuild/)proyecta y organiza [AWS Step Functions](https://aws.amazon.com/step-functions/)la administración de AWS CloudFormation StackSets y SCPs dentro de su organización. 

Al cargar el paquete de configuración, CfCT invoca la canalización de código para ejecutar tres etapas.
+ **Fase de compilación**: valida el contenido del paquete de configuración mediante AWS CodeBuild.
+ **SCP Stage**: invoca la máquina de estados de la política de control del servicio, que llama a la AWS Organizations API para crearla. SCPs
+ **CloudFormation Etapa**: invoca la máquina de estados del conjunto de pilas para implementar los recursos especificados en la lista de cuentas o OUs que hayas proporcionado en [el](the-manifest-file.md) archivo de manifiesto.

En cada etapa, la canalización de códigos invoca las funciones de conjunto de pilas y pasos SCP, que despliegan conjuntos de pilas personalizados en las cuentas individuales de destino o en toda una unidad organizativa. SCPs 

**Nota**  
Para obtener información detallada sobre la personalización del paquete de configuración, consulte [Guía de personalización de CfCT](cfct-customizations-dev-guide.md).

**El flujo de trabajo del eventos de ciclo de vida de AWS Control Tower**

Cuando se crea una cuenta nueva en AWS Control Tower, un [evento del ciclo](lifecycle-events.md) de vida puede invocar el AWS CodePipeline flujo de trabajo. Puede personalizar el paquete de configuración a través de este flujo de trabajo, que consiste en una regla de EventBridge eventos de [Amazon](https://aws.amazon.com/eventbridge/), una cola de primera entrada, primera salida (FIFO) de Amazon [Simple Queue Service](https://aws.amazon.com/sqs/) (Amazon SQS) y una función. [AWS Lambda](https://aws.amazon.com/lambda/)

Cuando la regla de EventBridge eventos de Amazon detecta un evento del ciclo de vida coincidente, pasa el evento a la cola FIFO de Amazon SQS, invoca la AWS Lambda función e invoca la canalización de código para realizar un despliegue descendente de conjuntos de pilas y. SCPs

# Costo
<a name="cost"></a>

El coste de ejecutar cFCT depende del número de AWS CodePipeline ejecuciones, la duración de las AWS CodeBuild ejecuciones, el número y la duración de AWS Lambda las funciones y el número de EventBridge eventos de Amazon publicados. Por ejemplo, si ejecuta 100 compilaciones en un mes con **build.general1.small** y cada compilación se ejecuta durante cinco minutos, el coste aproximado de ejecutar CfCT es de **3 USD al mes**. Para obtener toda la información, consulte la página web de precios por cada servicio de AWS que esté ejecutando.

El depósito de Amazon Simple Storage Service (Amazon S3) AWS CodeCommit y los recursos del repositorio basado en Git se conservan después de eliminar la plantilla para proteger la información de configuración. Según la opción que seleccione, se le cobrará en función de la cantidad de datos almacenados en el bucket de Amazon S3 y del número de solicitudes de Git (no se aplica a los recursos de Amazon S3). Consulte el precio de [Amazon S3](https://aws.amazon.com/s3/pricing/) y [AWS CodeCommit](https://aws.amazon.com/codecommit/pricing/) para obtener información más detallada.

# Servicios de componentes
<a name="components"></a>

 Los siguientes AWS servicios son componentes de *las personalizaciones de AWS Control Tower* (cFCT). 

## AWS CodeCommit
<a name="comp-aws-codecommit"></a>

Si tiene un AWS CodeCommit repositorio existente, puede configurarlo como fuente para su canalización, como alternativa a Amazon S3.

En función de lo que introduzcas en la CloudFormation plantilla, cFct puede crear un [AWS CodeCommit](https://aws.amazon.com/codecommit/)repositorio con la misma configuración de ejemplo que se explica en la sección Amazon Simple Storage Service.

Para clonar el AWS CodeCommit repositorio cFCT en su ordenador local, debe crear credenciales que le den acceso temporal al repositorio, tal y como se explica en la Guía del [AWS CodeCommit usuario](https://docs.aws.amazon.com//codecommit/latest/userguide/temporary-access.html#temporary-access-configure-credentials). Para obtener información sobre la compatibilidad de las versiones, consulte [Setting up for AWS CodeCommit](https://docs.aws.amazon.com//console/codecommit/connect-tc-alert-np).

**nota**  
Si aún no lo usa CodeCommit, su única opción es configurar el bucket de Amazon S3 como ubicación de almacenamiento para su paquete de configuración. CodeCommit no está disponible si está implementando cFCT por primera vez.

## AWS CodePipeline
<a name="comp-aws-codepipeline"></a>

AWS CodePipeline valida, prueba e implementa los cambios en función de las actualizaciones del paquete de configuración, que realizará en el depósito predeterminado de Amazon S3 o en el AWS CodeCommit repositorio. Para obtener más información sobre el control de origen de la configuración, consulte [Using Amazon S3 as the Configuration Source](cfct-s3-source.md). La canalización incluye etapas para validar y administrar los archivos y plantillas de configuración, las cuentas principales, las políticas de control de AWS Organizations servicios y AWS CloudFormation StackSets. Para obtener más información acerca de las fases de la canalización, consulte [Guía de personalización de CfCT](cfct-customizations-dev-guide.md)

## AWS Key Management Service
<a name="comp-aws-kms"></a>

CfCT crea una clave de cifrado `CustomControlTowerKMSKey` de [AWS Key Management Service](https://aws.amazon.com/kms/) (AWS KMS). Esta clave se utiliza para cifrar los objetos del bucket de configuración de Amazon S3, la cola de Amazon SQS y los parámetros confidenciales del Almacén de parámetros de AWS Systems Manager. De forma predeterminada, solo los roles aprovisionados por CfCT tienen permiso para realizar operaciones de cifrado o descifrado con esta clave. Para acceder al archivo de configuración, a la cola FIFO o a los valores `SecureString` del almacén de parámetros, se deben añadir administradores a la política `CustomControlTowerKMSKey`. La rotación automática de claves no está habilitada de forma predeterminada.

## AWS Lambda
<a name="comp-aws-lambda"></a>

CfCT utiliza AWS Lambda funciones para invocar los componentes de la instalación durante la instalación e implementación iniciales AWS CloudFormation StackSets o AWS Organizations SCPs durante un evento del ciclo de vida de la Torre de Control de AWS.

## Amazon Simple Notification Service
<a name="comp-amazon-sns"></a>

 CfCT puede publicar notificaciones, como la aprobación de canalizaciones, sobre temas de [Amazon Simple Notification Service](https://aws.amazon.com/sns/) (Amazon SNS) durante el flujo de trabajo. Amazon SNS solo se lanza cuando elige recibir notificaciones de aprobación de canalizaciones. 

## Amazon Simple Storage Service
<a name="comp-amazon-s3"></a>

 Cuando se implementa CfCT, se crea un bucket de Amazon Simple Storage Service (Amazon S3) con un nombre único: 

 **Ejemplo: El nombre del bucket de Amazon S3** 

 `custom-control-tower-configuration-accountID-region` 

 El bucket contiene un archivo de configuración de ejemplo llamado `_custom-control-tower-configuration.zip` 

Observe el guion bajo inicial en el nombre del archivo.

 Este archivo zip proporciona un manifiesto de ejemplo y las plantillas de ejemplo relacionadas que describen la estructura de carpetas necesaria. Estos ejemplos le ayudarán a desarrollar un paquete de configuración para personalizar la zona de aterrizaje de AWS Control Tower. El ejemplo de manifiesto identifica las configuraciones necesarias para los conjuntos de pilas y las políticas de control de servicios (SCPs) que necesitará al implementar las personalizaciones.

Puede usar este paquete de configuración de ejemplo como modelo para desarrollar y cargar su paquete personalizado, que activará automáticamente la canalización de configuración de CfCT.

Para obtener información sobre cómo personalizar el archivo de configuración, consulte [Guía de personalización de CfCT](cfct-customizations-dev-guide.md).

## Amazon Simple Queue Service
<a name="comp-amazon-sqs"></a>

cFCT utiliza una cola FIFO del Amazon Simple Queue Service (Amazon SQS) para capturar los eventos del ciclo de vida de Amazon. EventBridge Activa una AWS Lambda función, que invoca para implementar o. AWS CodePipeline AWS CloudFormation StackSets SCPs Para obtener más información al respecto SCPs, consulte [AWS Organizations](https://aws.amazon.com/organizations/).

## AWS Step Functions
<a name="comp-aws-step-functions"></a>

 CfCT crea Step Functions para organizar las implementaciones de personalización. Step Functions traduce los archivos de configuración para implementar las personalizaciones según sea necesario en los distintos entornos. 

## AWS Almacén de parámetros de Systems Manager
<a name="comp-aws-sm-parameter-store"></a>

El [Almacén de parámetros de AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html) almacena los parámetros de configuración de CfCT. Estos parámetros le permiten integrar plantillas de configuración relacionadas. Por ejemplo, puede configurar cada cuenta para que registre AWS CloudTrail los datos en un bucket centralizado de Amazon S3. Además, el Almacén de parámetros de Systems Manager proporciona una ubicación centralizada donde los administradores pueden ver las entradas y los parámetros de CfCT.

# Consideraciones sobre la implementación
<a name="cfct-considerations"></a>

Asegúrese de lanzar *Personalizaciones de AWS Control Tower* (CfCT) en la misma cuenta y región en las que está implementada la zona de aterrizaje de AWS Control Tower; es decir, debe implementarlas en la cuenta de administración de AWS Control Tower de su región de origen de AWS Control Tower. De forma predeterminada, CfCT crea y ejecuta el paquete de configuración de la zona de aterrizaje mediante la configuración de una canalización de configuración en esa cuenta y región.

## Preparación para la implementación
<a name="deploy-custom-aws-ct-deploy"></a>

Dispone de algunas opciones a la hora de preparar la CloudFormation plantilla para la implementación inicial. Puede elegir el origen de configuración y permitir la aprobación manual de las implementaciones de canalización. En las siguientes secciones se explican más estas opciones.

### Elección del origen de la configuración
<a name="deploy-config-source"></a>

De forma predeterminada, la plantilla crea un bucket de Amazon Simple Storage Service (Amazon S3) para almacenar el paquete de configuración de ejemplo en un archivo `.zip` denominado `_custom-control-tower-configuration.zip`. El bucket de Amazon S3 está controlado por versiones y puede actualizar el paquete de configuración según sea necesario. Para obtener información sobre la actualización del paquete de configuración, consulte [Uso de Amazon S3 como origen de configuración](cfct-s3-source.md).

**Recuerde eliminar el guion bajo**  
El nombre del paquete de configuración de ejemplo comienza con un carácter de subrayado (\$1), por lo que no AWS CodePipeline se inicia automáticamente. Cuando haya terminado de personalizar el paquete de configuración, asegúrese de cargar el `custom-control-tower-configuration.zip` sin el guion bajo (\$1) para poder iniciar la implementación en AWS CodePipeline.

Si ya tiene un repositorio de AWS CodeCommit Git, puede cambiar la ubicación de almacenamiento del paquete de configuración del bucket de Amazon S3 a un repositorio de AWS CodeCommit Git. Para ello, selecciona la `CodeCommit` opción en el CloudFormation parámetro.

**¿Comprimir o no comprimir?**  
Cuando utilice el bucket de S3 predeterminado, asegúrese de que el paquete de configuración esté disponible como un archivo `.zip`. Si utiliza el repositorio de AWS CodeCommit , asegúrese de colocar el paquete de configuración en el repositorio sin comprimir los archivos. Para obtener información sobre cómo crear y almacenar el paquete de configuración en AWS CodeCommitél, consulte[Guía de personalización de CfCT](cfct-customizations-dev-guide.md).

Puede utilizar el paquete de configuración de ejemplo para crear su propio origen de configuración personalizado. Cuando tenga todo listo para implementar sus configuraciones personalizadas, cargue manualmente el paquete de configuración, ya sea en el bucket de Amazon S3 o en el repositorio de AWS CodeCommit . La canalización comienza automáticamente al cargar el archivo de configuración.

### Elección de los parámetros de aprobación de la configuración de la canalización
<a name="deploy-pipeline-config-parameters"></a>

La AWS CloudFormation plantilla ofrece la opción de aprobar manualmente la implementación de los cambios de configuración. De forma predeterminada, la aprobación manual no está habilitada. Para obtener más información, consulte [Paso 1. Lance la pila](step1.md).

Cuando la aprobación manual está habilitada, la canalización de la configuración valida las personalizaciones realizadas en el manifiesto de archivo y las plantillas de AWS Control Tower y, a continuación, detiene el proceso hasta que se concede la aprobación manual. Tras la aprobación, la implementación pasa a ejecutar las demás etapas de la canalización, según sea necesario, para implementar la funcionalidad de *Personalizaciones de AWS Control Tower* (CfCT).

Puede utilizar el parámetro de aprobación manual para impedir que se ejecuten las personalizaciones de la configuración de AWS Control Tower, rechazando el primer intento de ejecución a través de la canalización. Este parámetro también le permite validar manualmente las personalizaciones de los cambios de configuración de AWS Control Tower, como un control final antes de la implementación.

## Actualización de Personalizaciones de AWS Control Tower
<a name="update"></a>

Si ya ha implementado cFCT anteriormente, debe actualizar la CloudFormation pila para obtener la versión más reciente del marco cFCT. Para obtener más información, consulte [Actualizar la pila](update-stack.md).

# Plantilla y código de origen
<a name="cfct-template"></a>

 Personalizaciones de AWS Control Tower (CfCT) se implementa en su cuenta de administración después de lanzar la plantilla de AWS CloudFormation. Puede descargar [la plantilla](  https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/customizations-for-aws-control-tower.template) desde GitHub y luego lanzarla desde [AWS CloudFormation](https://console.aws.amazon.com/cloudformation/home?region=us-east-1). 

 La plantilla **customizations-for-aws-control-tower.template** implementa lo siguiente: 
+  Un proyecto de AWS CodeBuild 
+  Un proyecto de AWS CodePipeline 
+  Una regla de Amazon EventBridge 
+  Funciones de AWS Lambda 
+  Una cola de Amazon Simple Queue Service 
+  Un bucket de Amazon Simple Storage Service con un ejemplo de paquete de configuración 
+  AWS Step Functions 

**nota**  
 Puede personalizar la plantilla en función de sus requisitos específicos. 

## Repositorio de código fuente
<a name="cfct-source-code"></a>

Puede visitar nuestro [repositorio de GitHub](https://github.com/aws-solutions/aws-control-tower-customizations) para descargar las plantillas y los scripts de CfCT, así como para compartir las personalizaciones de su zona de aterrizaje con otros usuarios.

# Implementación automatizada
<a name="deployment"></a>

Antes de lanzar la implementación automatizada, revise las [consideraciones](cfct-considerations.md). Siga las instrucciones paso a paso de esta sección para configurar e implementar la solución en su cuenta de administración de AWS Control Tower.

**Tiempo de implementación:** aproximadamente 15 minutos

## Requisitos previos
<a name="prerequisites"></a>

CfCT debe implementarse en su cuenta de administración de AWS Control Tower y en la región de origen de AWS Control Tower. Si no tiene configurada una zona de aterrizaje, consulte [Introducción a AWS Control Tower](getting-started-with-control-tower.md).

## Pasos de implementación
<a name="what-we-cover"></a>

El procedimiento para implementar CfCT consta de dos pasos principales. Para obtener instrucciones detalladas, siga los enlaces de cada paso.

[Paso 1. Lanzar la pila](step1.md)
+ Lance la plantilla de CloudFormation en su cuenta de administración.
+ Revise los parámetros de la plantilla y ajústelos si es necesario.

[Paso 2. Crear un paquete personalizado](step2.md)
+ Cree un paquete de configuración personalizado.

**importante**  
Para descargar la plantilla de AWS CloudFormation correcta e iniciar CfCT, siga el enlace de GitHub que aparece en esta sección. No siga los enlaces anteriores a ningún bucket de S3 especificado anteriormente.

# Paso 1. Lanzar la pila
<a name="step1"></a>

La plantilla de CloudFormation de esta sección implementa *Personalizaciones de AWS Control Tower* (CfCT) en su cuenta.

**Nota**  
Es responsable del coste de los servicios de AWS utilizados durante la ejecución de CfCT. Para obtener más información, consulta [Costo](cost.md).

1. Para iniciar *Personalizaciones de AWS Control Tower*, [descargue la plantilla de GitHub](  https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/customizations-for-aws-control-tower.template) y continuación, láncela desde [AWS CloudFormation](https://console.aws.amazon.com/cloudformation/home?region=us-east-1).

1. La plantilla se lanza en la región Este de EE. UU. (Norte de Virginia) de forma predeterminada. Para lanzar CfCT en una Región de AWS diferente, utilice el Selector de regiones de la barra de navegación de la consola.
**nota**  
CfCT debe lanzarse en la misma región y cuenta en las que implementó la zona de aterrizaje de AWS Control Tower, que es su región de origen.

1. En la página **Crear pila**, verifique que la URL de la plantilla correcta aparezca en el cuadro de texto **URL** y seleccione **Siguiente**.

1. En la página **Especificar los detalles de la pila**, especifique un nombre para la pila CfCT.

1. En **Parámetros**, revise los siguientes parámetros y modifíquelos en la plantilla según sea necesario.    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/controltower/latest/userguide/step1.html)

1. Elija **Siguiente**.

1. En la página **Configurar opciones de pila**, elija **Siguiente**.

1. En la página **Revisar**, revise y confirme la configuración. Asegúrese de marcar la casilla que reconoce que la plantilla puede crear recursos de AWS Identity and Access Management (IAM).

1. Elija **Create stack** (Crear pila) para implementar la pila.

   Puede ver el estado de la pila en la consola de CloudFormation en la columna **Estado**. Debería aparecer el estado **CREATE\$1COMPLETE** en aproximadamente 15 minutos.

# Paso 2. Crear un paquete personalizado
<a name="step2"></a>

Con la pila lanzada, puede añadir personalizaciones a las políticas de control de servicios (SCP) y de zona de aterrizaje de AWS Control Tower mediante la personalización del paquete de configuración incluido. Para obtener instrucciones detalladas sobre cómo crear un paquete personalizado, consulte la [Guía de personalización de CfCT](cfct-customizations-dev-guide.md).

**Nota**  
La canalización no se ejecuta sin cargar el paquete de configuración personalizado.

# Actualización de la pila
<a name="update-stack"></a>

 Si ya implementó *Personalizaciones de AWS Control Tower* (CfCT), siga el procedimiento para actualizar la pila de AWS CloudFormation a la versión más reciente del marco de CfCT. 

**importante**  
 Antes de completar el siguiente procedimiento, debe cargar la [plantilla más reciente de GitHub](  https://github.com/aws-solutions/aws-control-tower-customizations/blob/main/customizations-for-aws-control-tower.template) en un bucket de Amazon Simple Storage Service (Amazon S3). Para obtener instrucciones sobre cómo empezar a trabajar con Amazon S3, consulte [Introducción a Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/GetStartedWithS3.html) en la *Guía del usuario de Amazon Simple Storage Service*. 

1.  Inicie sesión en la [consola de AWS CloudFormation](https://console.aws.amazon.com/cloudformation). 

1.  Seleccione su pila de CloudFormation existente en **Personalizaciones de AWS Control Tower** (CfCT) y, a continuación, **Actualizar**. 

1.  En **Requisito previo: preparar la plantilla**, seleccione **Reemplazar la plantilla actual**. 

1.  En **Especificar plantilla**, haga lo siguiente: 

   1.  En **Origen de la plantilla**, seleccione **Reemplazar la plantilla actual**. 

   1.  En **URL de Amazon S3**, introduzca la URL de la plantilla que cargó previamente de GitHub a Amazon S3 y, a continuación, seleccione **Siguiente**. 

   1.  Verifique que la URL de la plantilla es correcta. Elija **Siguiente** y después elija de nuevo **Siguiente**. 

1. En **Parámetros**, revise los parámetros de la plantilla y modifíquelos según sea necesario. Consulte el [Paso 1. Lanzar la pila](step1.md) para obtener detalles sobre los parámetros.

1. Elija **Siguiente**.

1. En la página **Configurar opciones de pila**, elija **Siguiente**.

1. En la página **Revisar**, revise y confirme la configuración. Asegúrese de marcar la casilla que reconoce que la plantilla puede crear recursos de AWS Identity and Access Management (IAM).

1. Seleccione **Ver conjunto de cambios** y verifique los cambios.

1. Seleccione **Crear pila** para implementar la pila.

   Puede ver el estado de la pila en la consola de AWS CloudFormation en la columna **Estado**. Debe recibir el estado de **UPDATE\$1COMPLETE** en aproximadamente 15 minutos.

# Eliminación de un conjunto de pilas
<a name="cfct-delete-stack"></a>

Puede eliminar un conjunto de pilas si ha habilitado la eliminación del conjunto de pilas en el archivo de manifiesto. De forma predeterminada, el parámetro `enable_stack_set_deletion` está definido como `false`. En esta configuración, no se realiza ninguna acción para eliminar el conjunto de pilas asociado cuando se elimina un recurso del archivo de manifiesto de CfCT.

Si cambia el valor de `enable_stack_set_deletion` a `true` en el archivo de manifiesto, CfCT elimina el conjunto de pilas y todos sus recursos al eliminar un recurso asociado del archivo de manifiesto.

Esta capacidad se admite en la **v2** del archivo de manifiesto.

**importante**  
Al establecer inicialmente el valor de `enable_stack_set_deletion` en `true`, la próxima vez que invoque CfCT, se prepararán para eliminarse **TODOS** los recursos que comiencen por el prefijo `CustomControlTower-`, que tengan la etiqueta de clave `Key:AWS_Solutions, Value: CustomControlTowerStackSet` asociada y que no estén declarados en el archivo de manifiesto.

A continuación, se muestra un ejemplo de cómo configurar este parámetro en un archivo `manifest.yaml`:

```
version: 2021-03-15
region: us-east-1
enable_stack_set_deletion: true   #New opt-in functionality


resources: 
  - name: demo_resource_1
    resource_file: s3://demo_bucket/resource.template
    deployment_targets:
      accounts:
        - 012345678912
    deploy_method: stack_set
    ...
    regions:
    - us-east-1
    - us-west-2

  - name: demo_resource_2
    resource_file: s3://demo_bucket/resource.template
    deployment_targets:
      accounts:
        - 012345678912
    deploy_method: stack_set
    ...
    regions: 
    - us-east-1
    - eu-north-1
```

# Configuración de Amazon S3 como origen de configuración
<a name="cfct-s3-source"></a>

Cuando configura *Personalizaciones de AWS Control Tower*, almacena un archivo de configuración inicial, denominado `_custom-control-tower-configuration.zip`, en un bucket de Amazon Simple Storage Service (Amazon S3), llamado `custom-control-tower-configuration-account-ID-region`.

**Nota**  
Si decide descargar y modificar este archivo, recuerde comprimir los cambios, guardar como un nuevo archivo llamado `custom-control-tower-configuration.zip` y luego volver a cargarlos en el mismo bucket de Amazon S3.  
El bucket de Amazon S3 es el origen predeterminado de la canalización. Cuando se haya establecido la configuración predeterminada, al cargar un archivo zip de configuración sin el prefijo de guion bajo en el nombre del archivo en el bucket de S3, se iniciará la canalización automáticamente.

El archivo zip está protegido mediante el [cifrado del servidor](https://docs.aws.amazon.com/AmazonS3/latest/dev/UsingKMSEncryption.html) (SSE) con AWS Key Management Service (AWS KMS) y se [deniega el uso](https://docs.aws.amazon.com/kms/latest/developerguide/determining-access.html) de la clave KMS. Para acceder al archivo zip, debe actualizar la política de claves de KMS para especificar los roles a los que se debe conceder acceso. El rol puede ser un rol de administrador, un rol de usuario o ambos. Siga este procedimiento:

1. Vaya a la [consola de AWS Key Management Service](https://console.aws.amazon.com/kms/home).

1. En **Claves administradas por el cliente**, seleccione **CustomControlTowerKMSKey**.

1. Seleccione la pestaña **Política de claves**. Luego, elija **Editar**.

1. En la página **Editar la política de claves**, busque la sección **Permitir el uso de la clave** en el código y añada uno de los siguientes permisos:
   + Para añadir un rol de administración:

     `arn:aws:iam::<account-ID>:role/<administrator-role>`
   + Para añadir un usuario:

     `arn:aws:iam::<account-ID>:user/<username>`

1. Seleccione **Save Changes (Guardar cambios)**.

1. Vaya a la [consola de Amazon S3](https://console.aws.amazon.com/s3/home), busque el bucket de S3 que contiene el archivo zip de configuración y seleccione Descargar.

1. Realice los cambios de configuración necesarios en el archivo de manifiesto y en los archivos de plantilla. Para obtener información sobre la personalización de los archivos de manifiesto y plantilla, consulte [Guía de personalización de CfCT](cfct-customizations-dev-guide.md).

1. Cargue sus cambios:

   1. Comprima los archivos de configuración modificados y asigne un nombre el archivo: `custom-control-tower-configuration.zip`.

   1. Cargue el archivo en Amazon S3 mediante SSE con la clave maestra AWS KMS: `CustomControlTowerKMSKey`.

# Configurar GitHub como fuente de configuración
<a name="cfct-github-configuration-source"></a>

En esta sección, se explica cómo implementar personalizaciones para AWS Control Tower (cFCT) GitHub como fuente. El proceso incluye tres pasos principales:
+ Prepare un repositorio GitHub 
+ Crea la conexión GitHub de código
+ Despliegue la CloudFormation pila

## Prepara un GitHub repositorio
<a name="prepare-github-cfct-source"></a>

 Crea un repositorio dentro de tu GitHub cuenta, el nombre predeterminado que se usa en la plantilla es`custom-control-tower-configuration`. Considere la posibilidad de hacer que el repositorio de destino sea *privado*. Definirá sus personalizaciones en un archivo de `yaml` llamado `manifest.yaml` en la [carpeta de implementación](https://github.com/aws-solutions/aws-control-tower-customizations/tree/main/deployment) del repositorio de CfCT.

La [https://docs.aws.amazon.com//controltower/latest/userguide/cfct-customizations-dev-guide.html](https://docs.aws.amazon.com//controltower/latest/userguide/cfct-customizations-dev-guide.html) proporciona una instrucciones detalladas sobre cómo crear un `manifest.yaml` y configurar sus personalizaciones. 

## Crea la GitHub conexión
<a name="create-github-cfct-connection"></a>

Desde la instancia **Herramientas para desarrolladores: conexiones** para GitHub, siga estos pasos:

1. Seleccione **Crear conexión** y elija GitHub como proveedor

1. Selecciona **Crear una conexión a una GitHub aplicación** y, en el campo **Nombre de la conexión**, escribe **GitHub cFCT** o cualquier nombre que elijas

1. Selecciona **Conectar a GitHub** y, a continuación, selecciona **Instalar una nueva aplicación**

1. Selecciona el GitHub usuario o la organización de tu repositorio

1. En **Acceso al repositorio**, seleccione **Seleccionar solo repositorios** y luego seleccione el repositorio que ha creado anteriormente y **Guardar** el trabajo.

1. Anote el ARN de Code Connections: lo necesitará al implementar la CloudFormation pila.

## Despliega la pila CloudFormation
<a name="deploy-github-cfct-stack"></a>
+ Descargue el archivo `custom-control-tower-initiation.template` del repositorio.
+ Cree una CloudFormation pila nueva con el `custom-control-tower-initiation.template` archivo.
+ En **AWS CodePipeline Fuente**, elija **GitHub (mediante Code Connection)**.
+ En **GitHub Configuración**, especifique estos campos: 
  + En **ARN de la Conexión de código**, proporcione el ARN de Conexión de código
  + para **GitHub Usuario u organización**, proporcione el nombre del GitHub usuario u organización con el que creó el repositorio
  + En **Nombre del GitHub repositorio**, introduzca el nombre del repositorio (el valor predeterminado es) `custom-control-tower-configuration`
  + En **Nombre de GitHub sucursal**, introduzca el nombre de la sucursal (el valor predeterminado es) `main`

# Recopilación de métricas operativas
<a name="cfct-metrics"></a>

 *Personalizaciones de AWS Control Tower* (CfCT) incluye una opción para enviar métricas operativas anónimas a AWS. AWS utiliza estos datos para comprender cómo utilizan los clientes CfCT, así como otros servicios y productos relacionados. Cuando la recopilación de datos está habilitada, se envía la siguiente información a AWS: 
+ **ID de la solución:** el identificador de la solución de AWS
+ **ID único (UUID):** el identificador único generado aleatoriamente para cada implementación
+ **Timestamp:** timestamp de recopilación de datos
+ **Recuento de ejecuciones de la máquina de estado:** cuenta de forma incremental el número de veces que se ejecuta esta máquina de estado
+ **Versión del manifiesto:** la versión del manifiesto utilizada en la configuración

**nota**  
 AWS es propietario de los datos que recopila. La recopilación de datos está sujeta a la [Política de privacidad de AWS](https://aws.amazon.com/privacy/). 

 Para dejar de enviar métricas operativas anónimas a AWS, complete una de las siguientes tareas: 
+  ** Actualice la sección de mapeo de plantillas de AWS CloudFormation de la siguiente manera: ** 

   * de * 

  ```
  AnonymousData:
       SendAnonymousData:
          Data: Yes
  ```

   * para * 

  ```
  AnonymousData:
       SendAnonymousData:
          Data: No
  ```
+  ** Tras implementar CfCT, busque la clave del parámetro de SSM `/org/primary/metrics_flag` en la consola del almacén de parámetros y actualice el valor a `No`. ** 

# Guía de personalización de CfCT
<a name="cfct-customizations-dev-guide"></a>

 La guía de *personalizaciones para la Torre de Control de AWS* (cFCT) está destinada a administradores, DevOps profesionales, proveedores de software independientes, arquitectos de infraestructuras de TI e integradores de sistemas que desean personalizar y ampliar sus entornos de torres de control de AWS para su empresa y sus clientes. Proporciona información sobre cómo personalizar y ampliar el entorno de AWS Control Tower con el paquete de personalización CfCT. 

**nota**  
 Para implementar y configurar (cFCT), debe implementar y procesar un paquete de configuración de forma completa. AWS CodePipeline Las secciones siguientes describen el proceso de manera detallada. 

# Información general de la canalización de código
<a name="cfct-codepipeline-overview"></a>

El paquete de configuración requiere Amazon Simple Storage Service (Amazon S3 AWS CodePipeline) y. El paquete de configuración contiene los siguientes elementos:
+ Un archivo de manifiesto
+ Un conjunto de plantillas adjunto
+ Otros archivos JSON para describir e implementar las personalizaciones de su entorno de AWS Control Tower

De forma predeterminada, el paquete de configuración `_custom-control-tower-configuration.zip` se carga en un bucket de Amazon S3 con la siguiente convención de nomenclatura:

`custom-control-tower-configuration-accountID-region`.

**nota**  
 De forma predeterminada, CfCT crea un bucket de Amazon S3 para almacenar el origen de la canalización. La mayoría de los clientes utilizan esta opción predeterminada. Si tiene un AWS CodeCommit repositorio existente, puede cambiar la ubicación de origen a su AWS CodeCommit repositorio. Para obtener más información, consulta [Cómo editar una canalización CodePipeline en](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-edit.html) la *Guía del AWS CodePipeline usuario*.

El *archivo de manifiesto* es un archivo de texto que describe los AWS recursos que puedes implementar para personalizar tu landing zone. CodePipeline realiza las siguientes tareas: 
+ extrae el archivo de manifiesto, el conjunto de plantillas adjunto y otros archivos JSON
+ realiza validaciones de manifiestos y plantillas
+ invoca secciones del archivo de manifiesto de CfCT para ejecutar [etapas de canalización](#code-pipeline-stages) específicas.

Al actualizar el paquete de configuración personalizando el archivo de manifiesto y eliminando el guion bajo (\$1) del nombre de archivo del paquete de configuración, se inicia automáticamente AWS CodePipeline.

**Recuerde el guion bajo**  
El nombre de archivo del paquete de configuración de ejemplo comienza con un guión bajo (\$1) para que no AWS CodePipeline se active automáticamente. Cuando haya completado la personalización del paquete de configuración, cargue el archivo `custom-control-tower-configuration.zip` sin el guion bajo (\$1) para activar la implementación en AWS CodePipeline.

## AWS CodePipeline etapas
<a name="code-pipeline-stages"></a>

La canalización de cFCT requiere varias AWS CodePipeline etapas para implementar y actualizar su entorno de AWS Control Tower.

1. **Fase de origen**

   La fase de origen es la fase inicial. Su paquete de configuración personalizado inicia esta fase de canalización. La fuente AWS CodePipeline puede ser un depósito de Amazon S3 o un AWS CodeCommit repositorio en el que se pueda alojar el paquete de configuración.

1. **Fase de compilación**

   La etapa de compilación requiere AWS CodeBuild validar el contenido del paquete de configuración. Estas comprobaciones incluyen probar la sintaxis y el esquema del `manifest.yaml` archivo, junto con todas las CloudFormation plantillas incluidas en el paquete o alojadas de forma remota, mediante CloudFormation `validate-template` y`cfn_nag`. Si el archivo de manifiesto y las plantillas de CloudFormation superan las pruebas, la canalización pasa a la siguiente fase. Si las pruebas fallan, puede revisar los CodeBuild registros para identificar el problema y editar el archivo fuente de configuración según sea necesario.

1. **Fase de aprobación manual (opcional)**

   La fase de aprobación manual es opcional. Si se habilita esta fase, proporciona un control adicional sobre la canalización de configuración. Pone en pausa la canalización durante la implementación, hasta que se dé la aprobación. Puede optar por la aprobación manual editando el parámetro **Etapa de aprobación de la canalización** a **Sí** al lanzar la pila.

1. **Etapa de políticas**

   La etapa de política invoca la máquina de estado de la política de control de servicios (SCP) o la política de control de recursos (RCP) para llamar a AWS Organizations APIs esa máquina de estado create o. SCPs RCPs

1. **CloudFormation etapa de recursos**

   La etapa de CloudFormation recursos invoca la máquina de estados del conjunto de pilas para implementar los recursos especificados en la lista de cuentas o unidades organizativas (OUs), que proporcionaste en el archivo de manifiesto. La máquina de estados crea los CloudFormation recursos en el orden en que se especifican en el archivo de manifiesto. Para especificar una dependencia de recursos, organice el orden en que se especifican los recursos en el archivo de manifiesto. El orden de los recursos en el archivo de manifiesto es la única forma de especificar una dependencia.

# Definición de una configuración personalizada
<a name="cfct-custom-configuration"></a>

Podrá definir su configuración personalizada de AWS Control Tower con el archivo de manifiesto de CfCT, el conjunto de plantillas adjunto y otros archivos JSON. Estos archivos se empaquetarán en una estructura de carpetas y se colocarán en el bucket de Amazon S3 como un archivo `.zip`, tal y como se muestra en el siguiente ejemplo de código.

**Estructura de carpetas de configuración personalizada**

```
- manifest.yaml
- policies/                                                [optional]
   - service control policies files (*.json)
- templates/                                               [optional]
   - template files for AWS CloudFormation Resources (*.template)
```

El ejemplo anterior muestra la estructura de una carpeta de configuración personalizada. La estructura de carpetas permanece igual tanto si elige Amazon S3 como un AWS CodeCommit repositorio como ubicación de almacenamiento de origen. Si elige Amazon S3 como almacenamiento de origen, comprima todas las carpetas y archivos en un archivo `custom-control-tower-configuration.zip` y cargue solo el archivo `.zip` en el bucket de Amazon S3 designado.

**nota**  
Si lo está utilizando AWS CodeCommit, coloque los archivos en el repositorio sin comprimirlos en zip.

# El archivo de manifiesto de CfCT
<a name="the-manifest-file"></a>

El archivo cFct es un `manifest.yaml` archivo de texto que describe sus AWS recursos. En el siguiente ejemplo se muestra la estructura del archivo de manifiesto de CfCT.

```
---
region: String
version: 2021-03-15

resources:
  #set of CloudFormation resources, SCP policies, or RCP policies
...
```

Como se muestra en el ejemplo de código anterior, las dos primeras líneas del archivo de manifiesto especifican los valores de las palabras clave **región** y **versión**. Estas son las definiciones de esas palabras clave.

**region**: cadena de texto para la región predeterminada de AWS Control Tower. Este valor debe ser un nombre de AWS región válido (como `us-east-1``eu-west-1`, o`ap-southeast-1`). La región de origen de la Torre de Control de AWS es la predeterminada al crear recursos personalizados de la Torre de Control de AWS (por ejemplo CloudFormation StackSets), a menos que se especifique una región más específica de los recursos.

```
region:your-home-region
```

**versión**: el número de versión del esquema de manifiesto. La última versión compatible es la del 15/03/2021.

```
version: 2021-03-15
```

**nota**  
Le recomendamos encarecidamente que utilice la última versión. Para actualizar las propiedades del manifiesto a la última versión, consulte [Actualizaciones de versión para el manifiesto de CfCT](cfct-compatibility.md).

La siguiente palabra clave que se muestra en el ejemplo anterior es **recursos**. La sección de **recursos** del archivo de manifiesto está muy estructurada. Contiene una lista detallada de AWS los recursos, que la canalización de cFCT implementará automáticamente. Las descripciones de los recursos y sus parámetros disponibles figuran en la siguiente sección.

# La sección de recursos del archivo de manifiesto de CfCT
<a name="cfct-manifest-file-resources-section"></a>

 En este tema se describe la sección de **recursos** del archivo de manifiesto de CfCT, donde definirá los recursos necesarios para las personalizaciones. Esta sección del archivo de manifiesto de CfCT comienza con la palabra clave **recursos** y continúa hasta el final del archivo. 

 En la sección de **recursos** del archivo de manifiesto se especifican las variables CloudFormation StackSets, o AWS Organizations SCPs las que cFCT despliega automáticamente a través de la canalización de código. RCPs Puede OUs enumerar cuentas y regiones para implementar instancias apiladas. 

 Las instancias apiladas se implementan a nivel de cuenta en lugar de a nivel de unidad organizativa. SCPs y RCPs se implementan a nivel de unidad organizativa. Para obtener más información, consulte [Build your own customizations](https://docs.aws.amazon.com/controltower/latest/userguide/cfcn-byo-customizations.html). 

 La siguiente plantilla de ejemplo describe las posibles entradas disponibles en la sección de **recursos** del archivo de manifiesto. 

```
resources: # List of resources
  - name: [String]
    resource_file: [String] [Local File Path, S3 URI, S3 URL] 
    deployment_targets: # account and/or organizational unit names
      accounts: # array of strings, [0-9]{12}
        - 012345678912
        - AccountName1
      organizational_units: #array of strings
        - OuName1
        - OuName2 
    deploy_method: scp | stack_set | rcp
    parameters: # List of parameters [SSM, Alfred, Values]
      - parameter_key: [String]
        parameter_value: [String]  
    export_outputs: # list of ssm parameters to store output values
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]    
    regions: #list of strings
    - [String]
```

**En el resto de este tema se proporcionan definiciones detalladas de las palabras clave mostradas en el ejemplo de código anterior.**

**nombre**: el nombre que está asociado a CloudFormation StackSets. La cadena que proporciones asigna un nombre más fácil de usar a un conjunto de pilas.
+  **Tipo:** cadena
+ **Obligatorio**: sí
+ **Valores válidos:** a-z, A-Z, 0-9 y un guión (-). El nombre debe empezar por un carácter alfabético.

**descripción**: descripción del recurso.
+ **Tipo:** cadena
+ **Obligatorio**: no

 **resource\$1file**: este archivo se puede especificar como la ubicación relativa al archivo de manifiesto, un URI o URL de Amazon S3 que apunte a una CloudFormation plantilla o política de control de AWS Organizations servicios en JSON para crear CloudFormation recursos, SCPs o. RCPs 
+ **Tipo:** cadena
+ **Obligatorio**: sí 

1. En el siguiente ejemplo se muestra el `resource_file` como una ubicación relativa al archivo de recursos del paquete de configuración.

   ```
   resources:
     - name: SecurityRoles
       resource_file: templates/custom-security.template
   ```

1. En el siguiente ejemplo se muestra el archivo de recursos como un URI de Amazon S3 

   ```
   resources:
     - name: SecurityRoles
       resource_file: s3://amzn-s3-demo-bucket/[key-name]
   ```

1. En el siguiente ejemplo se muestra el archivo de recursos como una URL HTTPS de Amazon S3 

   ```
   resources:
     - name: SecurityRoles
       resource_file: https://bucket-name.s3.Region.amazonaws.com/key-name
   ```
**nota**  
Si proporciona una URL de Amazon S3, compruebe que la política de bucket permita el acceso de lectura a la cuenta de administración de AWS Control Tower en la que se va a implementar CfCT. Si proporciona una URL HTTPS de Amazon S3, compruebe que la ruta utilice notación de puntos. Por ejemplo, `S3.us-west-1`. CfCT no admite puntos de conexión que contengan un guion entre S3 y la región, por ejemplo `S3‐us-west-2`.

1. En el siguiente ejemplo se muestra una política de bucket de Amazon S3 y un ARN donde se almacenan los recursos.

   ```
   {
      "Version": "2012-10-17",		 	 	 
      "Statement": [
          {
           "Effect": "Allow",
           "Principal": {"AWS": "arn:aws:iam::AccountId:root"},
           "Action": "s3:GetObject",
           "Resource": "arn:aws:s3:::my-bucket/*”
          }
      ]
   }  
   ```

   Sustituirá la *AccountId* variable que se muestra en el ejemplo por el ID de cuenta de la AWS cuenta de administración que está implementando cFCT. Para obtener más ejemplos, consulte [Bucket policy examples](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-bucket-policies.html) en la Guía del usuario de Amazon Simple Storage Service.

**parámetros**: especifica el nombre y el valor de los parámetros de CloudFormation .
+ **Type** MapList:
+ **Obligatorio**: no

La sección de parámetros contiene pares de key/value parámetros. La siguiente pseudoplantilla muestra la sección de **parámetros**.

```
parameters:
  - parameter_key: [String]
    parameter_value: [String]
```
+ **parameter\$1key**: la clave asociada con el parámetro.
  +  **Tipo:** cadena
  + **Obligatorio:** sí (bajo propiedad de parámetros)
  + **Valores válidos:** a-z, A-Z y A-Z y 0-9 
+ **parameter\$1value**: el valor de entrada asociado con el parámetro.
  + **Tipo:** cadena 
  +  **Obligatorio:** sí (bajo propiedad de parámetros) 

**deploy\$1method**: el método de implementación para implementar los recursos en la cuenta. Actualmente, **deploy\$1method** admite la implementación de recursos mediante la `stack_set` opción de despliegue de recursos CloudFormation StackSets, la `scp` opción si se está implementando SCPs o la `rcp` opción si se está implementando. RCPs
+ **Tipo:** cadena 
+ **Valores válidos**: `stack_set` \$1 `scp` \$1 `rcp`
+ **Obligatorio**: sí

**deployment\$1targets** ****: lista de cuentas o unidades organizativas (OUs) en las que CfCT desplegará los CloudFormation recursos, especificados como cuentas o unidades\$1organizativas.****

**nota**  
 Si desea implementar una SCP o una RCP, el destino debe ser una UO, no una cuenta. 
+ **Tipo:** lista de cadenas `account name` o `account number` para indicar que este recurso se implementará en la lista de cuentas determinada, o `OU names` para indicar que este recurso se implementará en la lista de OU determinada.
+ **Obligatorio:** al menos una de las **accounts** u **organizational\$1units**
  + **accounts:**

    **Tipo:** lista de cadenas `account name` o `account number` para indicar que este recurso se implementará en la lista de cuentas determinada.
  + **organizational\$1units:**

    **Tipo:** lista de cadenas `OU names` para indicar que este recurso se implementará en una lista de OU determinada. Si proporciona una OU que no contiene cuentas y se añade la propiedad **accounts**, CfCT solo creará el conjunto de pilas.
**nota**  
El ID de la cuenta de administración de la organización no es un valor permitido. CfCT no admite la implementación de instancias de pila en la cuenta de administración de la organización de forma predeterminada. Si tiene un caso de uso especial, consulte [UO raíz](https://docs.aws.amazon.com//controltower/latest/userguide/cfct-root-ou.html).

**export\$1outputs**: lista de pares que indican las claves de los parámetros del SSM. name/value Estas claves de parámetros SSM permiten almacenar las salidas de plantilla en el almacén de parámetros SSM. La salida se utiliza como referencia para otros recursos definidos anteriormente en el archivo de manifiesto.

```
export_outputs: # List of SSM parameters
  - name: [String]
    value: [String]
```
+ **Tipo:** lista de pares de claves **nombre** y **valor**. El **nombre** contiene la cadena de `name` de una clave de almacén de parámetros SSM y el **valor** contiene la cadena de `value` del parámetro.
+ **Valores válidos:** cualquier cadena o variable en la que se *CfnOutput-Logical-ID* corresponda con la `$[output_CfnOutput-Logical-ID]` variable de salida de la plantilla. Para obtener más información sobre la sección de salidas de una CloudFormation plantilla, consulte [https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/outputs-section-structure.html](https://docs.aws.amazon.com//AWSCloudFormation/latest/UserGuide/outputs-section-structure.html) en la *Guía del CloudFormation usuario*.
+ **Obligatorio**: no 

Por ejemplo, el siguiente fragmento de código almacena la variable de salida `VPCID` de la plantilla en la clave de parámetro SSM denominada `/org/member/audit/vpc_id`.

```
export_outputs: # List of SSM parameters
  - name: /org/member/audit/VPC-ID
    value: $[output_VPCID]
```

**nota**  
El nombre de la clave **export\$1outputs** puede contener un valor distinto de `output`. Por ejemplo, si el **nombre** es `/org/environment-name`, el **valor** puede ser `production`.

**regiones**: lista de regiones en las que CfCT desplegará las instancias de la CloudFormation pila. 
+ **Escriba:** cualquier lista de nombres de regiones AWS comerciales, para indicar que este recurso se implementará en la lista de regiones determinada. Si esta palabra clave no existe en el archivo de manifiesto, los recursos se implementan únicamente en la región de origen.
+ **Obligatorio**: no 

# OU raíz
<a name="cfct-root-ou"></a>

 CfCT admite **Raíz** como valor para una unidad organizativa (OU) bajo `organizational_units` en la **versión V2 del manifiesto (15/03/2021)**. 
+ Si elige el método de implementación de Root Under `scp` o`rcp`, al agregar Root`organizational_units`, AWS Control Tower aplica las políticas a todos los OUs Under the Root. Si elige el método de implementación de `stack_set`, al añadir Raíz bajo `organizational_units`, CfCT implementará los conjuntos de pilas en todas las cuentas de la raíz que estén inscritas en AWS Control Tower, excepto en la cuenta de administración.
+ Según las prácticas recomendadas de AWS Control Tower, la cuenta de administración está destinada únicamente a administrar las cuentas de miembro y a efectos de facturación. No ejecute cargas de trabajo de producción en la cuenta de administración de AWS Control Tower.

  De acuerdo con la guía de prácticas recomendadas, la implementación de AWS Control Tower coloca la cuenta de administración en la OU raíz para que tenga acceso completo y no ejecute recursos adicionales. Por este motivo, la **AWSControlTowerExecution**función no está implementada en la cuenta de administración.
+ Recomendamos que siga estas prácticas recomendadas para la cuenta de administración. Si tiene un caso de uso específico que requiere implementar conjuntos de pilas en la cuenta de administración, incluya **cuentas** como destino de implementación y especifique la cuenta de administración. De lo contrario, no incluya **cuentas** como destino de implementación. Debe crear los recursos que faltan, incluidos los roles de IAM necesarios, en la cuenta de administración.

Para implementar conjuntos de pilas en la cuenta de administración, incluya `accounts` como destino de implementación y especifique la cuenta de administración. De lo contrario, no incluya cuentas como destino de implementación.

```
---
region: your-home-region
version: 2021-03-15

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - Root
```

**nota**  
La característica OU raíz solo es compatible con la versión V2 del archivo de manifiesto (15/03/2021). Si agrega **Root** como una unidad organizativa`organizational_units`, no agregue ninguna otra OUs.

# OU anidada
<a name="cfct-nested-ou"></a>

CfCT permite incluir uno o más anidados OUs bajo la `organizational_units` palabra clave en la versión V2 del manifiesto (15 de marzo de 2021). 

Se requiere una ruta completa (excluida la raíz) para la OU anidada, con dos puntos como separador entre ellas. OUs Para el método de implementación `scp` o`rcp`, AWS Control Tower implementa la SCPs o RCPs en la última OU de la ruta de la OU anidada. En el método de implementación `stack_set`, AWS Control Tower implementa los conjuntos de pilas en todas las cuentas de la última OU de la ruta de la OU anidada.

Por ejemplo, veamos la ruta `OUName1:OUName2:OUName3`. La última OU de la ruta es `OUName3`. cFCT despliega los conjuntos SCPs o RCPs en `OUName3` y apilados únicamente en todas las cuentas que se encuentran directamente debajo. `OUName3`

```
---
region: your-home-region
version: 2021-03-15

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - OuName1:OUName2:OUName3
```

**nota**  
La característica OU anidada solo es compatible con la versión V2 del archivo de manifiesto (15/03/2021).

# Creación de personalizaciones propias
<a name="cfcn-byo-customizations"></a>

Para crear sus propias personalizaciones, puede modificar el `manifest.yaml` archivo cFCT añadiendo o actualizando las políticas de control de servicios (SCPs), las políticas de control de recursos (RCPs) y los recursos. CloudFormation En el caso de los recursos que se deben implementar, puede añadir o eliminar cuentas y. OUs Puede añadir o modificar las plantillas de las carpetas del paquete, crear sus propias carpetas y hacer referencia a las plantillas o carpetas en el archivo `manifest.yaml`.

En esta sección se explican las dos partes principales para crear sus propias personalizaciones:
+ cómo configurar un paquete de configuración propio para las políticas de control de servicios
+ cómo configurar su propio paquete de configuración para conjuntos de AWS CloudFormation pilas

# Configure un paquete de configuración para SCPs o RCPs
<a name="cfcn-set-up-custom-scps"></a>

En esta sección se explica cómo crear un paquete de configuración para las políticas de control de servicios (SCPs) o las políticas de control de recursos (RCPs). Las dos partes principales de este proceso son (1) preparar el archivo de manifiesto de CfCT y (2) preparar la estructura de carpetas.

## Paso 1: edición del archivo manifest.yaml
<a name="cfct-byo-scp-step-1"></a>

Utilice el archivo `manifest.yaml` de ejemplo como punto de partida. Introduzca todas las configuraciones necesarias. Añada los detalles de `deployment_targets` y `resource_file`.

En el siguiente fragmento se muestra el archivo de manifiesto predeterminado.

```
---
region: us-east-1
version: 2021-03-15

resources: []
```

El valor de la `region` se añade automáticamente durante la implementación. Debe coincidir con la región en la que haya implementado CfCT. Esta región debe ser la misma que la región de AWS Control Tower.

Para añadir una SCP o RCP personalizada en la carpeta `example-configuration` del paquete zip almacenado en el bucket de Amazon S3, abra el archivo `example-manifest.yaml` y comience a editarlo.

```
---
region: your-home-region
version: 2021-03-15

resources:
  - name: test-preventive-controls
    description: To prevent from deleting or disabling resources in member accounts
    resource_file: policies/preventive-controls.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2 

…truncated…
```

El siguiente fragmento es un ejemplo de archivo de manifiesto personalizado. Puede añadir más de una política en un solo cambio.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - OUName1
        - OUName2
```

## Paso 2: creación de una estructura de carpetas
<a name="cfct-byo-scp-step-2"></a>

Puede omitir este paso si utiliza una URL de Amazon S3 para el archivo de recursos y utiliza **parámetros** por key/value pares.

Debe incluir una política SCP o RCP en formato JSON para que sea compatible con el manifiesto, ya que el archivo de manifiesto hace referencia al archivo JSON. Asegúrese de que las rutas de los archivos coincidan con la información de ruta proporcionada en el archivo de manifiesto. 
+ Un archivo JSON de *políticas* contiene la SCPs o en la RCPs que se va a implementar OUs.

En el siguiente fragmento se muestra la estructura de carpetas del archivo de manifiesto de ejemplo.

```
- manifest.yaml
- policies/
   - block-s3-public.json
```

El siguiente fragmento es un ejemplo de un archivo de política `block-s3-public.json`.

------
#### [ JSON ]

****  

```
{
   "Version":"2012-10-17",		 	 	 
   "Statement":[
      {
         "Sid":"GuardPutAccountPublicAccessBlock",
         "Effect":"Deny",
         "Action":"s3:PutAccountPublicAccessBlock",
         "Resource":"arn:aws:s3:::*"
      }
   ]
}
```

------

# Configure un paquete de configuración para CloudFormation StackSets
<a name="cfcn-byo-cfn-stacksets"></a>

En esta sección se explica cómo configurar un paquete de configuración para CloudFormation StackSets. Las dos partes principales de este proceso son: (1) preparar el archivo de manifiesto y (2) actualizar la estructura de carpetas.

## Paso 1: edición del archivo de manifiesto existente
<a name="cfcn-byo-cfn-stacksets-step-1"></a>

Agregue la nueva CloudFormation StackSets información al archivo de manifiesto que editó anteriormente.

A modo de resumen, el siguiente fragmento contiene el mismo archivo de manifiesto personalizado que se mostró anteriormente para configurar un paquete de configuración para SCPs o. RCPs Ahora puede seguir editando este archivo para incluir los detalles sobre los recursos.

```
---
region: us-east-1
version: 2021-03-15

resources:
  
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
    organizational_units: #array of strings
    - OUName1
    - OUName2
```

En el siguiente fragmento se muestra un archivo de manifiesto de ejemplo editado que contiene los detalles de los `resources`. El orden de los `resources` determina el orden de ejecución para crear `resources` las dependencias. Puede editar el siguiente archivo de manifiesto de ejemplo de acuerdo con sus requisitos empresariales.

```
---
region: your-home-region
version: 2021-03-15

…truncated…

resources:
  - name: stackset-1
    resource_file: templates/create-ssm-parameter-keys-1.template
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings, ou ids, ou-xxxx
        - OuName1
        - OUName2 
    export_outputs:
      - name: /org/member/test-ssm/app-id
        value: $[output_ApplicationId]
    regions:
      - region-name

  - name: stackset-2
    resource_file: s3://bucket-name/key-name
    parameters:
      - parameter_key: parameter-1
        parameter_value: value-1
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - account number or account name
        - 123456789123
      organizational_units: #array of strings
        - OuName1
        - OUName2 
regions:
  - region-name
```

En el siguiente ejemplo, se muestra que puede añadir más de un CloudFormation recurso al archivo de manifiesto.

```
---
region: us-east-1
version: 2021-03-15

resources:
  - name: block-s3-public-access
    description: To S3 buckets to have public access
    resource_file: policies/block-s3-public.json
    deploy_method: scp | rcp
    #Apply to the following OU(s)
    deployment_targets:
      organizational_units: #array of strings
        - Custom
        - Sandbox

  - name: transit-network
    resource_file: templates/transit-gateway.template
    parameter_file: parameters/transit-gateway.json
    deploy_method: stack_set
    deployment_targets:
      accounts: # array of strings, [0-9]{12}
        - Prod
        - 123456789123 #Network
      organizational_units: #array of strings
        - Custom
    export_outputs:
      - name: /org/network/transit-gateway-id
        value: $[output_TransitGatewayID]
    regions:
      - us-east-1
```

## Paso 2: actualización de la estructura de carpetas
<a name="cfct-byo-cfn-stacksets-step-2"></a>

Al actualizar la estructura de carpetas, puede incluir todos los archivos de CloudFormation plantilla auxiliares y los archivos de políticas SCP o RCP que se encuentran en el archivo de manifiesto. Compruebe que las rutas de los archivos coincidan con las que se proporcionan en el archivo de manifiesto. 
+ Un archivo *de plantilla* contiene los AWS recursos que se van a implementar OUs y las cuentas.
+ Un archivo de *política* contiene los parámetros de entrada utilizados en el archivo de plantilla.

En el siguiente ejemplo se muestra la estructura de carpetas del archivo de manifiesto de ejemplo creado en el [Paso 1](#cfcn-byo-cfn-stacksets-step-1).

```
- manifest.yaml
- policies/
   - block-s3-public.json
- templates/
   - transit-gateway.template
```

# El ayudante «alfred» y los archivos de CloudFormation parámetros
<a name="alfred-helper"></a>

 cFct le proporciona un mecanismo conocido como *Alfred* Helper para obtener el valor de una clave del [almacén de parámetros de SSM](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html) que está definida en la plantilla. CloudFormation Con el asistente *alfred*, puede usar valores que están almacenados en el almacén de parámetros del SSM y sin actualizar la plantilla. CloudFormation Para obtener más información, consulte [¿Qué es una plantilla? CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html#gettingstarted.templatebasics.what) en la *Guía CloudFormation del usuario*. 

**importante**  
 El ayudante *alfred* tiene dos limitaciones. Los parámetros solo están disponibles en la región de origen de la cuenta de administración de AWS Control Tower. Como práctica recomendada, considere la posibilidad de trabajar con valores que no cambien de una instancia de pila a otra. Cuando el asistente «alfred» recupera los parámetros, elige una instancia de pila aleatoria del conjunto de pilas que exporta la variable. 

## Ejemplo
<a name="w2aac28c41c15c13b7"></a>

 Suponga que tiene dos conjuntos de CloudFormation pilas. El *conjunto de pilas 1* tiene una instancia de pila y se implementa en una cuenta de una región. Crea una Amazon VPC y subredes en una zona de disponibilidad, y el `VPC ID` y el `subnet ID` deben pasarse al *conjunto de pilas 2* como valores de parámetros. Antes de poder pasar el `VPC ID` y el `subnet ID` al *conjunto de pilas 2*, el `VPC ID` y el `subnet ID` deben almacenarse en el *conjunto de pilas 1* mediante `AWS:::SSM::Parameter`. Para obtener más información, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ssm-parameter.html) en la *Guía del usuario de CloudFormation *. 

**CloudFormation conjunto de pilas 1:**

 En el siguiente fragmento, el ayudante de *Alfred* puede obtener los valores de `VPC ID` y del almacén `subnet ID` de parámetros y pasarlos como entrada a la StackSet máquina de estados. 

```
VpcIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/vpc/id'
      Description: Contains the VPC id
      Type: String
      Value: !Ref MyVpc

SubnetIdParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: '/stack_1/subnet/id'
      Description: Contains the subnet id
      Type: String
      Value: !Ref MySubnet
```

**CloudFormation conjunto de pilas 2:**

 El fragmento muestra los parámetros que se especifican en el archivo de la CloudFormation pila 2`manifest.yaml`. 

```
parameters:
      - parameter_key: VpcId
        parameter_value: $[alfred_ssm_/stack_1/vpc/id]
      - parameter_key: SubnetId
        parameter_value: $[alfred_ssm_/stack_1/subnet/id]
```

**CloudFormation conjunto de pilas 2.1:**

 El fragmento muestra que puede enumerar `alfred_ssm` las propiedades para admitir los parámetros de tipo. *CommaDelimitedList* Para obtener más información, consulte [https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type) en la *Guía del usuario de CloudFormation *. 

```
parameters:
      - parameter_key: VpcId # Type: String
        parameter_value: $[alfred_ssm_/stack_1/vpc/id']
      - parameter_key: SubnetId # Type: String
        parameter_value: $[ alfred_ssm_/stack_1/subnet/id']
      - parameter_key: AvailablityZones # Type: CommaDelimitedList
        parameter_value:   - "$[alfred_ssm_/availability_zone_1]"  - "$[alfred_ssm_/availability_zone_2]"
```

**Esquema JSON del paquete de personalización**  
El esquema JSON del paquete de personalización de cFct se encuentra en el repositorio de [código fuente de](https://github.com/aws-solutions/aws-control-tower-customizations). GitHub Puede utilizar el esquema con muchas de sus herramientas de desarrollo favoritas, y puede resultarle útil para reducir los errores al crear un archivo `manifest.yaml` CfCT propio.

# Actualizaciones de versión para el manifiesto de CfCT
<a name="cfct-compatibility"></a>

Para obtener información sobre la versión más reciente de *Customizations for AWS Control Tower* (cFCT), consulte el [`CHANGELOG.md`archivo](https://github.com/aws-solutions/aws-control-tower-customizations/blob/master/CHANGELOG.md) del repositorio. GitHub 

**aviso**  
La versión 2.2.0 de *Customizations for AWS Control Tower* (cFCT) introdujo un esquema de manifiesto de cFCT (versión *2021-03-15*) para alinearlo con el servicio relacionado. AWS APIs El esquema de manifiesto permite que un único archivo manifest.yaml gestione los recursos compatibles (plantillas y) mediante flujos de trabajo disociados.CloudFormation SCPs RCPs DevOps   
Recomendamos encarecidamente actualizar el esquema de manifiesto de CfCT de la versión del *01/01/2020* a la versión del *15/03/2021* o posterior.  
CfCT sigue siendo compatible con las versiones del *15/03/2021* y del *01/01/2020* del archivo `manifest.yaml`. No es necesario realizar cambios en la configuración existente. Sin embargo, la versión del *01/01/2020* se encuentra en **Fin del soporte**. Ya no proporcionaremos actualizaciones ni añadiremos mejoras a la versión del *01/01/2020*. Las características de OU raíz y OU anidada no son compatibles con la versión del *01/01/2020*. 

**Propiedades obsoletas en la versión del *15/03/2021*** del manifiesto de CfCT:

```
organization_policies
policy_file
apply_to_accounts_in_ou

cloudformation_resources
template_file
deploy_to_account
deploy_to_ou
ssm_parameters
```

## Pasos de actualización de CfCT obligatorios
<a name="mandatory-upgrade-steps"></a>

Cuando actualice a la versión del *15/03/2021* del esquema de manifiesto de CfCT, estos son los cambios que debe realizar para actualizar los archivos. En las secciones siguientes, se describen los cambios obligatorios y recomendados para la transición.

**Políticas de organizaciones**

1. **Mueva los recursos de nueva propiedad a SCPs RCPs organization\$1policies o a **organization\$1policies.****

1. Cambie la propiedad **policy\$1file** por la nueva propiedad **resource\$1file.**

1. Cambie la propiedad **apply\$1to\$1accounts\$1in\$1ou** por la nueva propiedad **deployment\$1targets**. La lista de OU debe definirse en la subpropiedad **organizational\$1units**. La subpropiedad **accounts** no es compatible con las políticas de organizaciones.

1. Añada una nueva propiedad **deploy\$1method** con el valor **scp** o **rcp**. 

**CloudFormation recursos**

1. **Mueva los CloudFormation recursos de **cloudformation\$1resources a recursos** de nuevas propiedades.**

1. Cambie la propiedad **template\$1file** por la nueva propiedad **resource\$1file**.

1. Cambie la propiedad **deploy\$1to\$1ou** por la nueva propiedad **deployment\$1targets**. La lista de OU debe definirse en la subpropiedad **organizational\$1units**.

1. Cambie la propiedad **deploy\$1to\$1accounts** por la nueva propiedad **deployment\$1targets**. La lista de cuentas debe definirse bajo la subpropiedad **accounts**.

1. Cambie la propiedad **ssm\$1parameters** por la nueva propiedad **export\$1outputs**.

## Pasos de actualización de CfCT muy recomendables
<a name="highly-recommended-upgrade-steps"></a>

**CloudFormation parámetros**

1. Cambie la propiedad **parameter\$1file** por la nueva propiedad **parameters**.

1. Elimine la ruta del archivo del valor de la propiedad **parameter\$1file**.

1. Copie la clave y el valor del parámetro del archivo JSON de parámetros existente en el nuevos formato de la propiedad **parameters**. Esto le ayudará a administrarlos en el archivo de manifiesto.

**nota**  
*La propiedad **parameter\$1file** es compatible con la versión del 15/03/2021* del manifiesto de CfCT.