

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Account Factory for Terraform (AFT) do AWS Control Tower
<a name="aft-getting-started"></a>

 Esta seção é para administradores de ambientes do AWS Control Tower que desejam configurar o Account Factory for Terraform (AFT) em seu ambiente atual. Ela descreve como configurar um ambiente do Account Factory for Terraform (AFT) com uma nova conta de gerenciamento dedicada do AFT. 

**nota**  
 Um módulo Terraform implanta o AFT. Este módulo está disponível no [repositório AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main) em GitHub, e todo o repositório AFT é considerado o módulo.   
 Recomendamos que você consulte os módulos AFT em GitHub vez de clonar o repositório AFT. Dessa forma, você pode controlar e consumir atualizações dos módulos à medida que estiverem disponíveis. 

 Para obter detalhes sobre os últimos lançamentos da funcionalidade AWS Control Tower Account Factory for Terraform (AFT), consulte [o arquivo de lançamentos](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/releases) desse GitHub repositório.

 **Pré-requisitos de implantação** 

Antes de configurar e iniciar seu ambiente do AFT, você deve ter os seguintes recursos disponíveis: 
+  Uma região de origem para a zona de pouso do AWS Control Tower. Consulte mais informações em [How Regiões da AWS work with AWS Control Tower](https://docs.aws.amazon.com/controltower/latest/userguide/region-how.html). 
+  Uma zona de pouso do AWS Control Tower. Consulte mais informações em [Plan your AWS Control Tower landing zone](https://docs.aws.amazon.com/controltower/latest/userguide/planning-your-deployment.html). 
+  Uma conta gerencial do AFT, que você pode provisionar no AWS Control Tower ou provisionar por outros meios e se inscrever no AWS Control Tower. 
+  Uma versão e distribuição do Terraform. Consulte mais informações em [Terraform and AFT versions](https://docs.aws.amazon.com/controltower/latest/userguide/version-supported.html). 
+  Um provedor de VCS para rastrear e gerenciar alterações no código e em outros arquivos. Por padrão, o AFT usa AWS CodeCommit. Para obter mais informações, consulte [O que é AWS CodeCommit?](https://docs.aws.amazon.com/codecommit/latest/userguide/welcome.html) no *Guia do AWS CodeCommit usuário*.

  Se você estiver implantando o AFT pela primeira vez e não tiver um CodeCommit repositório existente, deverá escolher um provedor externo de VCS, como ou. GitHub BitBucket Consulte mais informações em [Alternatives for version control of source code in AFT](https://docs.aws.amazon.com/controltower/latest/userguide/aft-alternative-vcs.html). 
+  Um ambiente de runtime em que você pode executar o módulo do Terraform que instala o AFT. 
+  Opções de recursos do AFT. Consulte mais informações em [Enable feature options](https://docs.aws.amazon.com/controltower/latest/userguide/aft-feature-options.html). 

## Configurar e iniciar o Account Factory for Terraform do AWS Control Tower
<a name="aft-configure-and-launch"></a>

 Essas etapas a seguir presumem que você está familiarizado com o fluxo de trabalho do Terraform. Você também pode aprender mais sobre a implantação do AFT seguindo o laboratório de [Introdução ao AFT](https://catalog.workshops.aws/control-tower/en-US/customization/aft) no site do AWS Workshop Studio. 

 **Etapa 1: inicie a zona de pouso do AWS Control Tower** 

 Conclua as etapas em [Getting started with AWS Control Tower](https://catalog.workshops.aws/control-tower/en-US/customization/aft). É aqui que você cria a conta de gerenciamento do AWS Control Tower e configura a zona de pouso do AWS Control Tower. 

**nota**  
 Certifique-se de criar uma função para a conta de gerenciamento do AWS Control Tower que tenha **AdministratorAccess**credenciais. Consulte mais informações em:   
 Consulte [Identidades do IAM (usuários, grupos e perfis)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id.html) no *Guia do usuário do AWS Identity and Access Management * 
 [AdministratorAccess](https://docs.aws.amazon.com/aws-managed-policy/latest/reference/AdministratorAccess.html)no *Guia de referência de políticas AWS gerenciadas* 

 **Etapa 2: crie uma nova unidade organizacional para o AFT (fortemente recomendado)** 

 Recomendamos que você crie uma UO separada na zona de pouso do AWS Control Tower. Essa UO é onde você provisiona a conta gerencial do AFT. Crie a UO e a conta gerencial do AFT com base na conta gerencial do AWS Control Tower. Consulte mais informações em [Create a new OU](https://docs.aws.amazon.com/controltower/latest/userguide/create-new-ou.html). 

 **Etapa 3: provisione a conta de gerenciamento do AFT** 

 O AFT exige que você provisione uma AWS conta dedicada às operações de gerenciamento do AFT. Crie a conta gerencial do AFT quando estiver conectado à conta gerencial do AWS Control Tower associada à zona de pouso do AWS Control Tower. Você pode provisionar a conta gerencial do AFT a partir do console do AWS Control Tower selecionando **Criar conta** na página **da organização** ou por outros meios. Para obter mais informações, consulte [Provisionar contas com o AWS Service Catalog Account Factory](https://docs.aws.amazon.com/controltower/latest/userguide/provision-as-end-user.html). 

**nota**  
Se você criou uma UO separada para o AFT, selecione essa UO ao criar a conta de gerenciamento do AFT. 

Pode levar até 30 minutos para provisionar totalmente a conta de gerenciamento do AFT. 

 **Etapa 4: verifique se o ambiente do Terraform está disponível para implantação** 

 Essa etapa pressupõe que você tenha experiência com o Terraform e tenha procedimentos implementados para executar o Terraform. Para obter mais informações, consulte [Command: init](https://developer.hashicorp.com/terraform/cli/commands/init) no site do HashiCorp desenvolvedor. 

**nota**  
 O AFT é compatível com o Terraform versão `1.6.0` ou posterior. 

 **Etapa 5: configurações opcionais**
+ **Opcionalmente, defina a configuração da nuvem privada virtual (VPC)**

  O módulo do AFT inclui um parâmetro `aft_enable_vpc` que especifica se o AWS Control Tower provisiona recursos da conta dentro de uma VPC na conta gerencial central do AFT. Por padrão, o parâmetro é definido como `true`. Se você definir esse parâmetro como `false`, o AWS Control Tower implanta o AFT *sem* o uso de uma VPC e recursos de rede privada, como gateways NAT ou endpoints da VPC. Desabilitar `aft_enable_vpc` pode ajudar a reduzir o custo operacional do AFT *para alguns padrões de uso*. Adicionar qualquer configuração de VPC substitui o parâmetro `aft_enable_vpc` que está sendo definido como `false`.
**nota**  
Reabilitar o parâmetro `aft_enable_vpc` (mudando o valor de `false` para `true`) pode exigir que você execute o comando `terraform apply` duas vezes consecutivas.

  Em vez de provisionar uma VPC nova, você pode configurar a AFT para usar uma VPC existente em sua conta. Para usar a sua própria VPC, forneça os seguintes parâmetros de configuração da VPC:
  + `aft_customer_vpc_id`: o ID da sua VPC existente
  + `aft_customer_private_subnets`- Uma lista de sub-redes privadas IDs em sua VPC

  Exemplo de configuração:

  ```
  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**  
Não é recomendável usar a opção VPC personalizada se você tiver uma implantação existente do AFT. Você pode ter dependências nas funções do Lambda CodePipeline ou que dependam de recursos dentro da VPC existente subjacente.
+ **Opcionalmente, configure o nome do projeto Terraform**

  Você pode personalizar o nome do projeto Terraform usado pelo AFT definindo o parâmetro `terraform_project_name`. Por padrão, o AFT coloca a implantação no projeto “padrão” no Terraform Cloud ou no Terraform Enterprise.

  Exemplo de configuração:

  ```
  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**  
Esse parâmetro é aplicável somente às implantações do Terraform Enterprise ou do Terraform Cloud.
+ **Opcionalmente, aplique etiquetas personalizadas aos recursos do AFT**

  Você pode aplicar tags personalizadas a todos os recursos do AFT usando o parâmetro `tags`. Essas tags ajudam na organização de recursos, alocação de custos e controle de acesso.

  Exemplo de configuração:

  ```
  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...
  }
  ```

  Essas tags são aplicadas a todos os recursos criados pelo módulo AFT. O AFT adiciona automaticamente uma tag `managed_by = "AFT"` a todos os recursos, que não pode ser substituída por tags personalizadas.
**nota**  
As tags personalizadas podem ser adicionadas a qualquer momento, não apenas durante a implantação inicial.
+ **Opcionalmente, aplique uma chave de criptografia AWS KMS gerenciada pelo cliente (CMK) a grupos de CloudWatch registros e tópicos do SNS**

  Para habilitar a criptografia CMK do KMS para grupos de log e tópicos do SNS, defina as variáveis `cloudwatch_log_group_enable_cmk_encryption` e `sns_topic_enable_cmk_encryption`.

  Se você optar por essas configurações, o AFT usará a CMK existente, *alias/aft*, para criptografar CloudWatch registros e tópicos do SNS. Essa CMK é criada quando o AFT é implantado na conta gerencial do AFT e pode ser aplicada a grupos de logs e tópicos do SNS. 
  + Se a variável `cloudwatch_log_group_enable_cmk_encryption` for definida como **verdadeira**, os grupos de CloudWatch log do AFT serão criptografados usando a CMK. Se a variável for definida como **false**, que é o valor padrão, os registros serão criptografados usando [criptografia do lado do servidor com os CloudWatch registros padrão](https://docs.aws.amazon.com//AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html).
  +  Se a variável `sns_topic_enable_cmk_encryption` for definida como **verdadeira**, as notificações enviadas aos tópicos do AFT SNS (*aft-notifications* e *aft-failure-notifications*) serão criptografadas usando a CMK. Se a variável for definida como **false**, que é o valor padrão, as mensagens do SNS são criptografadas com a chave gerenciada pela AWS:. *alias/aws/sns* Para obter mais informações, consulte [Termos de chaves de SSE](https://docs.aws.amazon.com//sns/latest/dg/sns-server-side-encryption.html#sse-key-terms).
+ **Opcionalmente, altere seu tipo de CodeBuild computação**

  Durante a implantação, para alterar o tipo de computação usado pelo AFT CodeBuild, defina a variável`aft_codebuild_compute_type`.

  Para obter informações sobre os tipos de computação aceitos, consulte [Sobre os tipos de ambiente sob demanda.](https://docs.aws.amazon.com//codebuild/latest/userguide/build-env-ref-compute-types.html#environment.types) O tipo de computação padrão é `BUILD_GENERAL1_MEDIUM`. 
+ **Opcionalmente, configure o OpenID Connect (OIDC) para Terraform**

  Os clientes que usam o Terraform Enterprise ou o HCP Terraform (antigo Terraform Cloud) podem usar os tokens de identidade Workload do Terraform (ou credenciais dinâmicas do provedor), baseados no protocolo OIDC, para conectar e autenticar com segurança os espaços de trabalho com o AFT.

  Você pode habilitar a integração do OIDC para espaços de trabalho AFT definindo o `terraform_oidc_integration` parâmetro como. `true` Esse parâmetro é definido como `false` por padrão. Ao ativar esse parâmetro, os `terraform_oidc_hostname` parâmetros `terraform_oidc_aws_audience` e devem ser revisados e configurados se os padrões (`aws.workload.identity`e`app.terraform.io`, respectivamente) não corresponderem ao seu ambiente.

  Exemplo de configuração:

  ```
  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**  
Esse parâmetro é aplicável somente às implantações do Terraform Enterprise ou do HCP Terraform.
**nota**  
Se você está atualmente utilizando um provedor OIDC para Terraform na conta de gerenciamento do AFT, você deve excluir esse provedor antes de optar por essa integração. A AFT recriará esse provedor para você após a implantação.

**Etapa 6: chame o módulo Account Factory for Terraform para implantar o AFT** 

 Chame o módulo AFT com a função que você criou para a conta de gerenciamento do AWS Control Tower que tem **AdministratorAccess**credenciais. O AWS Control Tower provisiona um módulo do Terraform por meio da conta de gerenciamento do AWS Control Tower, que estabelece toda a infraestrutura necessária para orquestrar solicitações do Account Factory do AWS Control Tower. 

 Você pode visualizar o módulo AFT no [repositório AFT](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/tree/main) em GitHub. Todo o GitHub repositório é considerado o módulo AFT. Consulte informações sobre as entradas necessárias para executar o módulo do AFT e implantar o AFT no [arquivo README](https://github.com/aws-ia/terraform-aws-control_tower_account_factory/blob/main/README.md). Como alternativa, você pode visualizar o módulo do AFT em [Terraform Registry](https://registry.terraform.io/modules/aws-ia/control_tower_account_factory/aws/latest). 

 Se tiver pipelines em seu ambiente que estão estabelecidos para gerenciar o Terraform, você poderá integrar o módulo do AFT ao fluxo de trabalho existente. Caso contrário, execute o módulo do AFT em qualquer ambiente autenticado com as credenciais necessárias. 

 O tempo limite faz com que a implantação falhe. Recomendamos o uso de credenciais AWS Security Token Service (STS) para garantir que você tenha um tempo limite suficiente para uma implantação completa. O tempo limite mínimo para AWS STS credenciais é de 60 minutos. Consulte mais informações em [Credenciais de segurança temporárias no IAM](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_temp.html) no *Guia do usuário do AWS Identity and Access Management *. 

**nota**  
 Você pode esperar até 30 minutos para que o AFT termine a implantação por meio do módulo do Terraform. 

 **Etapa 7: gerenciar o arquivo de estado do Terraform** 

 Um arquivo de estado do Terraform é gerado quando você implanta o AFT. Esse artefato descreve o estado dos recursos que o Terraform criou. Se você planeja atualizar a versão do AFT, preserve o arquivo de estado do Terraform ou configure um backend do Terraform usando o Amazon S3 e o DynamoDB. O módulo do AFT não gerencia um estado de backend do Terraform. 

**nota**  
 Você é responsável por proteger o arquivo de estado do Terraform. Algumas variáveis de entrada podem conter valores confidenciais, como uma chave `ssh` privada ou um token do Terraform. Dependendo do método de implantação, esses valores podem ser visualizados como texto simples no arquivo de estado do Terraform. Para obter mais informações, consulte [Dados confidenciais no estado](https://www.terraform.io/docs/language/state/sensitive-data.html) no HashiCorp site. 