

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.

# Implementación del generador de cuentas para Terraform (AFT) de AWS Control Tower
<a name="aft-getting-started"></a>

 Esta sección está destinada a los administradores de entornos de AWS Control Tower que deseen configurar el generador de cuentas para Terraform (AFT) en su entorno actual. Describe cómo configurar un entorno del generador de cuentas para Terraform (AFT) con una cuenta de administración de AFT nueva y dedicada. 

**nota**  
 Un módulo Terraform implementa AFT. Este módulo está disponible en el [repositorio AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main) y todo el repositorio AFT se considera módulo. GitHub   
 Le recomendamos que consulte los módulos AFT en GitHub lugar de clonar el repositorio AFT. De esta forma puede controlar y consumir las actualizaciones de los módulos a medida que estén disponibles. 

 Para obtener más información sobre las versiones más recientes de la funcionalidad AWS Control Tower Account Factory for Terraform (AFT), consulte [el archivo de versiones](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/releases) de este GitHub repositorio.

 **Requisitos previos para una implementación** 

Antes de configurar y lanzar el entorno de AFT, debe tener los siguientes recursos disponibles: 
+  Una región de origen para la zona de aterrizaje de AWS Control Tower. Para obtener más información, consulte [How Regiones de AWS work with AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/region-how.html). 
+  Una zona de aterrizaje de AWS Control Tower. Para obtener más información, consulte [Plan your AWS Control Tower landing zone](https://docs.aws.amazon.com/controltower/latest/userguide/planning-your-deployment.html). 
+  Una cuenta de administración de AFT, que puede aprovisionar en AWS Control Tower o aprovisionar por otros medios e inscribirla en AWS Control Tower. 
+  Una versión y distribución de Terraform. Para obtener más información, consulte [Terraform and AFT versions](https://docs.aws.amazon.com/controltower/latest/userguide/version-supported.html). 
+  Un proveedor de VCS para rastrear y administrar cambios en el código y otros archivos. De forma predeterminada, AFT usa AWS CodeCommit. Para obtener más información, consulte [¿Qué es AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) en la *Guía AWS CodeCommit del usuario*.

  Si va a implementar AFT por primera vez y no tiene un CodeCommit repositorio existente, debe elegir un proveedor de VCS externo, como GitHub o BitBucket. Para obtener más información, consulte [Alternatives for version control of source code in AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-alternative-vcs.html). 
+  Un entorno de tiempo de ejecución en el que pueda ejecutar el módulo Terraform que instala AFT. 
+  Opciones de características de AFT. Para obtener más información, consulte [Enable feature options](https://docs.aws.amazon.com/controltower/latest/userguide/aft-feature-options.html). 

## Configuración y lanzamiento del generador de cuentas para Terraform de AWS Control Tower
<a name="aft-configure-and-launch"></a>

 En los pasos siguientes se considera que conoce el flujo de trabajo de Terraform. También puede obtener más información sobre la implementación de AFT siguiendo el laboratorio de [introducción a la AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft) en el sitio web de AWS Workshop Studio. 

 **Paso 1: lanzar la zona de aterrizaje de AWS Control Tower** 

 Complete los pasos de [Getting started with AWS Control Tower](https://catalog.workshops.aws/control-tower/en-US/customization/aft). En este paso puede crear la cuenta de administración de AWS Control Tower y configurar la zona de aterrizaje de AWS Control Tower. 

**nota**  
 Asegúrese de crear un rol para la cuenta de administración de la Torre de Control de AWS que tenga **AdministratorAccess**credenciales. Para obtener más información, consulte los siguientes temas:   
 [Identidades de IAM (usuarios, grupos y roles)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) en la *Guía del usuario de AWS Identity and Access Management * 
 [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)en la *Guía de referencia de políticas AWS administradas* 

 **Paso 2: creación de una nueva unidad organizativa para AFT (se recomienda encarecidamente)** 

 Le recomendamos que cree una UO aparte en la zona de aterrizaje de AWS Control Tower. En esta UO aprovisionará la cuenta de administración de AFT. Cree la nueva UO y la cuenta de administración de AFT desde la cuenta de administración de AWS Control Tower. Para obtener más información, consulte [Create a new OU](https://docs.aws.amazon.com/controltower/latest/userguide/create-new-ou.html). 

 **Paso 3: aprovisionar la cuenta de administración de AFT** 

 AFT requiere que proporcione una AWS cuenta dedicada a las operaciones de administración de AFT. Cree la cuenta de administración de AWS Control Tower cuando haya iniciado sesión en la cuenta de administración de AWS Control Tower que está asociada con la zona de aterrizaje de AWS Control Tower. Puede aprovisionar la cuenta de administración de AFT desde la consola de AWS Control Tower seleccionando **Crear cuenta** en la página **Organización** o por otros medios. Para obtener más información, consulte [Aprovisionar cuentas con AWS Service Catalog Account Factory](https://docs.aws.amazon.com/controltower/latest/userguide/provision-as-end-user.html). 

**nota**  
Si ha creado una OU independiente para AFT, asegúrese de seleccionar esta OU al crear la cuenta de administración de AFT. 

El aprovisionamiento completo de la cuenta de administración de AFT puede tardar hasta 30 minutos. 

 **Paso 4: verificación de que el entorno de Terraform esté disponible para implementación** 

 En este paso se considera que tiene experiencia con Terraform y que dispone de procedimientos para su ejecución. Para obtener más información, consulte [Command: init](https://developer.hashicorp.com/terraform/cli/commands/init) en el sitio web HashiCorp para desarrolladores. 

**nota**  
 AFT es compatible con la versión de Terraform `1.6.0` o posterior. 

 **Paso 5: configuraciones opcionales**
+ **De manera opcional, establezca la configuración de la nube privada virtual (VPC)**

  El módulo de AFT incluye un parámetro `aft_enable_vpc` que especifica si AWS Control Tower aprovisiona recursos de cuenta dentro de una VPC en la cuenta de administración de AFT central. De forma predeterminada, el parámetro está definido como `true`. Si establece este parámetro en `false`, AWS Control Tower implementa AFT *sin* utilizar una VPC ni recursos de red privados, como puertas de enlace NAT o puntos de conexión de VPC. La deshabilitación de `aft_enable_vpc` puede ayudar a reducir el costo operativo de AFT *en algunos patrones de uso*. Al agregar cualquier configuración de VPC se anula el parámetro `aft_enable_vpc` que se está configurando en `false`.
**nota**  
Para volver a habilitar el parámetro `aft_enable_vpc` (cambiar el valor de `false` a `true`), es posible que tenga que ejecutar el comando `terraform apply` dos veces seguidas.

  En lugar de aprovisionar una VPC nueva, puede configurar AFT para que use una VPC existente en su cuenta. Para usar su propia VPC, proporcione los siguientes parámetros de configuración de VPC:
  + `aft_customer_vpc_id`: ID de su VPC existente
  + `aft_customer_private_subnets`- Una lista de subredes privadas IDs en su VPC

  Ejemplo de configuración:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # VPC configuration
    aft_customer_vpc_id = "vpc-0123456789abcdef0"
    aft_customer_private_subnets = ["subnet-0123456789abcdef0", "subnet-0123456789abcdef1"]
    
    # Other AFT parameters...
  }
  ```
**importante**  
No le recomendamos que use la opción de VPC personalizada si ya tiene una implementación de AFT. Es posible que dependa de las funciones de Lambda CodePipeline o que dependa de los recursos de la VPC subyacente existente.
+ **Si lo desea, configure el nombre del proyecto de Terraform**

  Puede personalizar el nombre del proyecto de Terraform utilizado por AFT configurando el parámetro `terraform_project_name`. De forma predeterminada, AFT coloca la implementación en el proyecto “predeterminado” en Terraform Cloud o Terraform Enterprise.

  Ejemplo de configuración:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # Project name configuration
    terraform_project_name = "my-organization-aft"
    
    # Other AFT parameters...
  }
  ```
**nota**  
Este parámetro solo se aplica a implementaciones de Terraform Enterprise o Terraform Cloud.
+ **Opcionalmente, aplique etiquetas personalizadas a recursos de AFT**

  Puede aplicar etiquetas personalizadas a todos los recursos de AFT mediante el parámetro `tags`. Estas etiquetas ayudan a organizar recursos, asignar costos y controlar el acceso.

  Ejemplo de configuración:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # Custom tags configuration
    tags = {
      Environment = "Production"
      CostCenter = "IT-12345"
      Project = "AFT-Deployment"
      Owner = "platform-team@example.com"
    }
    
    # Other AFT parameters...
  }
  ```

  Estas etiquetas se aplican a todos los recursos creados por el módulo AFT. AFT agrega automáticamente una etiqueta `managed_by = "AFT"` a todos los recursos, que no puede ser anulada por etiquetas personalizadas.
**nota**  
Se pueden agregar etiquetas personalizadas en cualquier momento, no solo durante la implementación inicial.
+ **Si lo desea, aplique una clave de cifrado AWS KMS administrada por el cliente (CMK) a los grupos de registros y a los temas de SNS CloudWatch **

  Para habilitar el cifrado CMK de KMS para grupos de registros y temas de SNS, defina las variables `cloudwatch_log_group_enable_cmk_encryption` y `sns_topic_enable_cmk_encryption`.

  Si opta por esta configuración, AFT utilizará la CMK existente, *alias/aft*, para cifrar los registros y los temas de SNS. CloudWatch Esta CMK se crea cuando AFT se implementa en la cuenta de administración de AFT y se puede aplicar a grupos de registros y temas de SNS. 
  + Si la variable `cloudwatch_log_group_enable_cmk_encryption` se establece en **true**, los grupos de CloudWatch registros de AFT se cifran mediante la CMK. Si la variable se establece en **false**, que es el valor predeterminado, los registros se cifran mediante el [cifrado del lado del servidor con los CloudWatch registros predeterminados](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html).
  +  Si la variable `sns_topic_enable_cmk_encryption` se establece en **true**, las notificaciones enviadas a los temas de AFT SNS (*aft-notifications* y *aft-failure-notifications*) se cifran mediante la CMK. Si la variable se establece en **false**, que es el valor predeterminado, los mensajes SNS se cifran con la clave administrada por AWS:. *alias/aws/sns* Para obtener más información, consulte [Términos clave de SSE](https://docs.aws.amazon.com//sns/latest/dg/sns-server-side-encryption.html#sse-key-terms).
+ **Si lo desea, cambie el tipo de procesamiento CodeBuild **

  Durante la implementación, para cambiar el tipo de cómputo que utiliza AFT CodeBuild, defina la variable`aft_codebuild_compute_type`.

  Para obtener información sobre los tipos de computación aceptados, consulte [Acerca de los tipos de entornos bajo demanda](https://docs.aws.amazon.com//codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types). El tipo de computación predeterminado es `BUILD_GENERAL1_MEDIUM`. 
+ **Opcionalmente, configure OpenID Connect (OIDC) para Terraform**

  Los clientes que utilizan Terraform Enterprise o HCP Terraform (anteriormente Terraform Cloud) pueden usar los tokens de identidad de Workload de Terraform (o credenciales de proveedor dinámicas), basados en el protocolo OIDC, para conectar y autenticar de forma segura los espacios de trabajo con AFT.

  Puede habilitar la integración de OIDC para los espacios de trabajo de AFT configurando el parámetro en. `terraform_oidc_integration` `true` Este parámetro está establecido en `false` de forma predeterminada. Al activar este parámetro, los `terraform_oidc_hostname` parámetros `terraform_oidc_aws_audience` y deben revisarse y configurarse si los valores predeterminados (`aws.workload.identity`y`app.terraform.io`, respectivamente) no coinciden con su entorno.

  Ejemplo de configuración:

  ```
  module "aft" {
    source = "github.com/aws-ia/terraform-aws-control_tower_account_factory"
    
    # Terraform distribution must be "tfc" or "tfe" for OIDC
    terraform_distribution = "tfc"
  
    # Terraform OIDC Configuration
    terraform_oidc_integration  = true
    terraform_oidc_aws_audience = "aws.workload.identity"  # default
    terraform_oidc_hostname     = "app.terraform.io"       # default; set to your TFE hostname if applicable
    
    # Other AFT parameters...
  }
  ```
**nota**  
Este parámetro solo se aplica a las implementaciones de Terraform Enterprise o HCP Terraform.
**nota**  
Si actualmente utiliza un proveedor de OIDC para Terraform en la cuenta de administración de AFT, debe eliminar ese proveedor antes de optar por esta integración. AFT volverá a crear ese proveedor para usted una vez realizado el despliegue.

**Paso 6: Llame al módulo Account Factory for Terraform para implementar AFT** 

 Llame al módulo AFT con el rol que creó para la cuenta de administración de la Torre de Control Tower de AWS que tiene **AdministratorAccess**credenciales. AWS Control Tower aprovisiona un módulo de Terraform a través de la cuenta de administración de AWS Control Tower que establece toda la infraestructura necesaria para orquestar las solicitudes del generador de cuentas de AWS Control Tower. 

 Puede ver el módulo AFT en el [repositorio AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main) de GitHub. Todo el GitHub repositorio se considera el módulo AFT. Consulta el [archivo README](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/blob/main/README.md) para obtener información sobre las entradas necesarias para ejecutar el módulo de AFT e implementar AFT. Como alternativa, puede ver el módulo de AFT en el [registro de Terraform](https://registry.terraform.io/modules/aws-ia/control_tower_account_factory/aws/latest). 

 Si tiene canalizaciones en el entorno establecidas para administrar Terraform, puede integrar el módulo de AFT en el flujo de trabajo existente. De lo contrario, ejecute el módulo de AFT desde cualquier entorno que esté autenticado con las credenciales necesarias. 

 El tiempo de espera provoca un error en la implementación. Te recomendamos usar credenciales AWS Security Token Service (STS) para asegurarte de que dispones de un tiempo de espera suficiente para una implementación completa. El tiempo de espera mínimo para las AWS STS credenciales es de 60 minutos. Para obtener más información, consulte [Temporary security credentials in IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) en la *Guía del usuario de AWS Identity and Access Management *. 

**nota**  
 Puede esperar hasta 30 minutos para que AFT termine de implementarse a través del módulo Terraform. 

 **Paso 7: Gestione el archivo de estado de Terraform** 

 Al implementar AFT, se genera un archivo de estado de Terraform. Este artefacto describe el estado de los recursos que Terraform ha creado. Si tiene previsto actualizar la versión de AFT, asegúrese de preservar el archivo de estado de Terraform o configure un backend de Terraform con Amazon S3 y DynamoDB. El módulo de AFT no administra un estado del backend de Terraform. 

**nota**  
 Es responsable de proteger el archivo de estado de Terraform. Algunas variables de entrada pueden contener valores confidenciales, como una clave `ssh` privada o un token de Terraform. Según el método de implementación, estos valores serán visibles como texto sin formato en el archivo de estado de Terraform. Para obtener más información, consulte [Datos confidenciales del estado en](https://www.terraform.io/docs/language/state/sensitive-data.html) el sitio HashiCorp web. 