

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á.

# Guia de personalização do CfCT
<a name="cfct-customizations-dev-guide"></a>

 O guia *Customizations for AWS Control Tower* (cFCT) é para administradores, DevOps profissionais, fornecedores independentes de software, arquitetos de infraestrutura de TI e integradores de sistemas que desejam personalizar e ampliar seus ambientes da AWS Control Tower para suas empresas e clientes. Ele fornece informações sobre a personalização e a extensão do ambiente do AWS Control Tower com o pacote de personalização do CfCT. 

**nota**  
 Para implantar e configurar (cFct), você deve implantar e processar um pacote de configuração por meio AWS CodePipeline de. As seções a seguir descrevem o procedimento em detalhes. 

# Visão geral do pipeline de código
<a name="cfct-codepipeline-overview"></a>

O pacote de configuração requer o Amazon Simple Storage Service (Amazon S3) e. AWS CodePipeline O pacote de configuração contém os seguintes itens:
+ Um arquivo de manifesto
+ Um conjunto de modelos complementar
+ Outros arquivos JSON para descrever e implementar suas personalizações de ambiente do AWS Control Tower

Por padrão, o pacote de configuração `_custom-control-tower-configuration.zip` é carregado em um bucket do Amazon S3 com a seguinte convenção de nomenclatura:

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

**nota**  
 Por padrão, o CfCT cria um bucket do Amazon S3 para armazenar a origem do pipeline. A maioria dos clientes permanece com esse padrão. Se você tiver um AWS CodeCommit repositório existente, poderá alterar o local de origem do seu AWS CodeCommit repositório. Para obter mais informações, consulte [Editar um pipeline CodePipeline no](https://docs.aws.amazon.com/codepipeline/latest/userguide/pipelines-edit.html) *Guia AWS CodePipeline do usuário*.

O *arquivo de manifesto* é um arquivo de texto que descreve os AWS recursos que você pode implantar para personalizar sua landing zone. CodePipeline executa as seguintes tarefas: 
+ extrai o arquivo de manifesto, o conjunto de modelos complementar e outros arquivos JSON
+ realiza validações de manifesto e modelo
+ invoca seções no arquivo de manifesto CfCT para executar [estágios do pipeline](#code-pipeline-stages) específicos.

Quando você atualiza o pacote de configuração personalizando o arquivo de manifesto e removendo o sublinhado (\$1) do nome do arquivo do pacote de configuração, ele inicia o AWS CodePipeline automaticamente.

**Lembre-se do sublinhado**  
O nome do arquivo do pacote de configuração de amostra começa com um sublinhado (\$1) para que o AWS CodePipeline não seja acionado automaticamente. Ao concluir a personalização do pacote de configuração, faça upload do arquivo `custom-control-tower-configuration.zip` sem o sublinhado (\$1) para acionar a implantação no AWS CodePipeline.

## AWS CodePipeline estágios
<a name="code-pipeline-stages"></a>

O pipeline do cFct requer vários AWS CodePipeline estágios para implementar e atualizar seu ambiente do AWS Control Tower.

1. **Estágio de origem**

   O estágio de origem é o estágio inicial. Seu pacote de configuração personalizado inicia esse estágio do pipeline. A origem do AWS CodePipeline pode ser um bucket do Amazon S3 ou um AWS CodeCommit repositório, no qual o pacote de configuração pode ser hospedado.

1. **Estágio de compilação**

   O estágio de construção exige AWS CodeBuild a validação do conteúdo do pacote de configuração. Essas verificações incluem testar a sintaxe e o esquema do `manifest.yaml` arquivo, junto com todos os CloudFormation modelos incluídos no pacote ou hospedados remotamente, usando e. CloudFormation `validate-template` `cfn_nag` Se o arquivo manifesto e os modelos do CloudFormation passarem nos testes, o pipeline continuará para o próximo estágio. Se os testes falharem, você poderá revisar os CodeBuild registros para identificar o problema e editar o arquivo de origem da configuração conforme necessário.

1. **Estágio de aprovação manual (opcional)**

   Estágio de aprovação manual é opcional. Se você habilitar esse estágio, ele fornecerá controle adicional sobre o pipeline de configuração. Ele pausa o pipeline durante a implantação, até que uma aprovação seja dada. Você pode optar pela aprovação manual editando o parâmetro **Estágio de aprovação do pipeline** como **Sim** ao iniciar a pilha.

1. **Estágio de política**

   O estágio da política invoca a máquina de estado da política de controle de serviço (SCP) ou da política de controle de recursos (RCP) para chamar AWS Organizations APIs essa criação ou. SCPs RCPs

1. **CloudFormation estágio de recursos**

   O estágio de CloudFormation recursos invoca a máquina de estado do conjunto de pilhas para implantar os recursos especificados na lista de contas ou unidades organizacionais (OUs), que você forneceu no arquivo de manifesto. A máquina de estado cria os CloudFormation recursos na ordem em que são especificados no arquivo de manifesto. Para especificar uma dependência de recursos, organize a ordem na qual os recursos são especificados no arquivo de manifesto. A ordem dos recursos no arquivo de manifesto é a única forma de especificar uma dependência.

# Definir uma configuração personalizada
<a name="cfct-custom-configuration"></a>

Você definirá sua configuração personalizada do AWS Control Tower com o arquivo de manifesto CfCT, o conjunto de modelos complementar e outros arquivos JSON. Você empacotará esses arquivos em uma estrutura de pastas e os colocará no bucket do Amazon S3 como um arquivo `.zip`, conforme mostrado no exemplo de código a seguir.

**Estrutura de pastas de configuração personalizada**

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

O exemplo anterior mostra a estrutura de uma pasta de configuração personalizada. A estrutura de pastas permanece a mesma, independentemente de você escolher o Amazon S3 ou um AWS CodeCommit repositório como local de armazenamento de origem. Se você escolher o Amazon S3 como armazenamento de origem, compacte todas as pastas e arquivos em um arquivo `custom-control-tower-configuration.zip` e faça upload somente do arquivo `.zip` no bucket designado do Amazon S3.

**nota**  
Se você estiver usando AWS CodeCommit, coloque os arquivos no repositório sem compactá-los.

# O arquivo de manifesto CfCT
<a name="the-manifest-file"></a>

O `manifest.yaml` arquivo cFct é um arquivo de texto que descreve seus AWS recursos. O exemplo a seguir mostra a estrutura do arquivo de manifesto CfCT.

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

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

Conforme mostrado no exemplo de código anterior, as duas primeiras linhas do arquivo de manifesto especificam os valores da **região** e as palavras-chave da **versão**. Veja a seguir as definições dessas palavras-chave.

**região**: uma string de texto para a região padrão do AWS Control Tower. Esse valor deve ser um nome de AWS região válido (como `us-east-1``eu-west-1`, ou`ap-southeast-1`). A região de origem do AWS Control Tower é o padrão quando você cria recursos personalizados do AWS Control Tower (como CloudFormation StackSets), a menos que uma região mais específica do recurso seja especificada.

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

**versão**: o número da versão do esquema do manifesto. A versão compatível mais recente é 2021-03-15.

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

**nota**  
É altamente recomendável usar a versão mais recente. Para atualizar as propriedades do manifesto na versão mais recente, consulte [Atualizações de versão para o manifesto CfCT](cfct-compatibility.md).

A próxima palavra-chave mostrada no exemplo anterior é **recursos**. A seção de **recursos** do arquivo de manifesto é altamente estruturada. Ele contém uma lista detalhada de AWS recursos, que serão implantados automaticamente pelo pipeline cFct. Essas descrições dos recursos e seus parâmetros disponíveis são fornecidas na próxima seção.

# A seção de recursos do arquivo de manifesto CfCT
<a name="cfct-manifest-file-resources-section"></a>

 Este tópico descreve a seção de **recursos** do arquivo de manifesto CfCT, na qual você definirá os recursos necessários para suas personalizações. Essa seção do arquivo de manifesto CfCT começa na palavra-chave **recursos** e continua até o final do arquivo. 

 A seção de **recursos** do arquivo de manifesto especifica o CloudFormation StackSets, ou AWS Organizations SCPs e RCPs, qual cFct implanta automaticamente por meio do pipeline de código. Você pode listar OUs, contas e regiões para implantar instâncias de pilha. 

 As instâncias Stack são implantadas no nível da conta em vez do nível da OU. SCPs e RCPs são implantados no nível da OU. Consulte mais informações em [Build your own customizations](https://docs.aws.amazon.com/controltower/latest/userguide/cfcn-byo-customizations.html). 

 O modelo de exemplo a seguir descreve as possíveis entradas que estão disponíveis para a seção de **recursos** do arquivo de manifesto. 

```
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]
```

**O restante deste tópico fornece definições detalhadas para as palavras-chave mostradas no exemplo de código anterior.**

**nome** — O nome associado ao CloudFormation StackSets. A string que você fornece atribui um nome mais fácil de usar para um conjunto de pilhas.
+  **Tipo:** string
+ **Obrigatório**: Sim
+ **Valores válidos:** a-z, A-Z, 0-9 e um hífen (-). O nome deve começar com um caractere alfabético.

**descrição**: a descrição do recurso.
+ **Tipo:** string
+ **Obrigatório**: não

 **resource\$1file** — Esse arquivo pode ser especificado como a localização relativa do arquivo de manifesto, um URI ou URL do Amazon S3 que aponta para um CloudFormation modelo ou política de controle de AWS Organizations serviço em JSON para criar recursos, ou. CloudFormation SCPs RCPs 
+ **Tipo:** string
+ **Obrigatório**: Sim 

1. O exemplo a seguir mostra o `resource_file`, fornecido como um local relativo ao arquivo de recursos dentro do pacote de configuração.

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

1. O exemplo a seguir mostra o arquivo de recurso fornecido como um URI do Amazon S3. 

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

1. O exemplo a seguir mostra o arquivo de recurso fornecido como um URL HTTPS do Amazon S3. 

   ```
   resources:
     - name: SecurityRoles
       resource_file: https://bucket-name.s3.Region.amazonaws.com/key-name
   ```
**nota**  
Se você fornecer um URL do Amazon S3, verifique se a política do bucket permite acesso de leitura para a conta de gerenciamento do AWS Control Tower pela qual você está implantando o CfCT. Se você fornecer um URL HTTPS do Amazon S3, verifique se o caminho usa notação de pontos. Por exemplo, .`S3.us-west-1` O CfCT não é compatível com endpoints que contenham um traço entre o S3 e a região, como `S3‐us-west-2`.

1. O exemplo a seguir mostra uma política de bucket do Amazon S3 e um ARN em que os recursos estão armazenados.

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

   Você substituirá a *AccountId* variável mostrada no exemplo pelo ID da AWS conta de gerenciamento que está implantando o cFct. Consulte mais exemplos em [Exemplos de políticas de bucket do Amazon S3](https://docs.aws.amazon.com//AmazonS3/latest/userguide/example-bucket-policies.html) no Guia do usuário do Amazon Simple Storage Service.

**parâmetros**: especifica o nome e o valor dos parâmetros do CloudFormation .
+ **Type** MapList:
+ **Obrigatório**: não

A seção de parâmetros contém pares de key/value parâmetros. O pseudomodelo a seguir descreve a seção de **parâmetros**.

```
parameters:
  - parameter_key: [String]
    parameter_value: [String]
```
+ **parameter\$1key**: a chave associada ao parâmetro.
  +  **Tipo:** string
  + **Obrigatório:** sim (na propriedade de parâmetros)
  + **Valores válidos:** a-z, A-Z e 0-9 
+ **parameter\$1value**: o valor de entrada associado ao parâmetro.
  + **Tipo:** string 
  +  **Obrigatório:** sim (na propriedade de parâmetros) 

**deploy\$1method**: o método de implantação para implantar recursos na conta. Atualmente, **deploy\$1method** suporta a implantação de recursos usando a `stack_set` opção de implantação de recursos por meio de CloudFormation StackSets, a `scp` opção se você estiver implantando SCPs ou a `rcp` opção se estiver implantando. RCPs
+ **Tipo:** string 
+ **Valores válidos**: `stack_set` \$1 `scp` \$1 `rcp`
+ **Obrigatório**: sim

**deployment\$1targets** ****— Lista de contas ou unidades organizacionais (OUs), nas quais o cFCT implantará os CloudFormation recursos, especificados como contas ou unidades\$1organizacionais.****

**nota**  
 Se você quiser implantar uma SCP ou RCP, o destino deve ser uma UO, não uma conta. 
+ **Tipo:** lista de strings `account name` ou `account number` para indicar que esse recurso será implantado em determinada lista de contas ou `OU names` para indicar que esse recurso será implantado em determinada lista de UOs.
+ **Obrigatório:** pelo menos uma de **accounts** or **organizational\$1units**.
  + **accounts:**

    **Tipo:** lista de strings `account name` ou `account number` para indicar que esse recurso será implantado na lista de contas especificada.
  + **organizational\$1units:**

    **Tipo:** lista de strings `OU names` para indicar que esse recurso será implantado em uma lista de UOs especificada. Se você fornecer uma UO que não contenha contas e a propriedade de **accounts** não for adicionada, o CfCT criará apenas o conjunto de pilhas.
**nota**  
O ID da conta de gerenciamento da organização não é um valor permitido. O CfCT não permite a implantação de instâncias de pilha na conta gerencial da organização por padrão. Se você tiver um caso de uso especial, consulte [UO raiz](https://docs.aws.amazon.com//controltower/latest/userguide/cfct-root-ou.html).

**export\$1outputs** — Lista de name/value pares que denotam chaves de parâmetros SSM. Essas chaves de parâmetros do SSM permitem que você armazene as saídas do modelo no armazenamento de parâmetros do SSM. A saída é destinada à referência por outros recursos, definidos anteriormente no arquivo de manifesto.

```
export_outputs: # List of SSM parameters
  - name: [String]
    value: [String]
```
+ **Tipo:** uma lista de pares de **nome** e **valor**. O **nome** contém a string `name` de uma chave de armazenamento de parâmetros do SSM e o **valor** contém string `value` do parâmetro.
+ **Valores válidos:** qualquer string ou `$[output_CfnOutput-Logical-ID]` variável que *CfnOutput-Logical-ID* corresponda à variável de saída do modelo. Para obter mais informações sobre a seção Saídas em um CloudFormation modelo, 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) do *CloudFormation usuário*.
+ **Obrigatório**: não 

Por exemplo, o trecho de código a seguir armazena a variável da saída `VPCID` do modelo na chave de parâmetro do SSM chamada `/org/member/audit/vpc_id`.

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

**nota**  
O nome da chave **export\$1outputs** pode conter um valor diferente de `output`. Por exemplo, se o **nome** for `/org/environment-name`, o **valor** poderá ser `production`.

**regiões** — Lista de regiões nas quais o cFCT implantará as instâncias da CloudFormation pilha. 
+ **Tipo:** qualquer lista de nomes de regiões AWS comerciais, para indicar que esse recurso será implantado em uma determinada lista de regiões. Se essa palavra-chave não existir no arquivo de manifesto, os recursos serão implantados somente na região de origem.
+ **Obrigatório**: não 

# UO raiz
<a name="cfct-root-ou"></a>

 O CfCT permite **Raiz** como um valor para uma unidade organizacional (UO) em `organizational_units` na **versão V2 do manifesto (2021-03-15)**. 
+ Se você escolher o método de implantação de `scp` ou`rcp`, ao adicionar Root under`organizational_units`, o AWS Control Tower aplicará as políticas a todos os itens OUs sob o Root. Se você escolher o método de implantação de `stack_set`, ao adicionar Raiz em`organizational_units`, o CfCT implantará os conjuntos de pilhas em todas as contas na Raiz que estão inscritas no AWS Control Tower, exceto na conta de gerenciamento.
+ De acordo com as práticas recomendadas do AWS Control Tower, a conta de gerenciamento se destina apenas a gerenciar contas-membros e para fins de cobrança. Não execute workloads de produção na conta de gerenciamento do AWS Control Tower.

  De acordo com a orientação de práticas recomendadas, a implantação do AWS Control Tower coloca a conta de gerenciamento na UO raiz, para que ela tenha acesso total e não execute recursos adicionais. Por esse motivo, a **AWSControlTowerExecution**função não é implantada na conta de gerenciamento.
+ Recomendamos que você siga essas práticas recomendadas para a conta de gerenciamento. Se você tiver um caso de uso específico que exija a implantação de conjuntos de pilhas na conta de gerenciamento, inclua **accounts** como destino de implantação e especifique a conta de gerenciamento. Caso contrário, não inclua **accounts** como destino da implantação. Você deve criar os recursos que faltam, incluindo os perfis do IAM necessários, na conta de gerenciamento.

Para implantar conjuntos de pilhas na conta de gerenciamento, inclua `accounts` como destino de implantação e especifique a conta de gerenciamento. Caso contrário, não inclua accounts como destino da implantação.

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

resources:

  …truncated…

    deployment_targets:
      organizational_units:
        - Root
```

**nota**  
O recurso UO raiz é compatível somente com a versão V2 do arquivo de manifesto (2021-03-15). Se você adicionar **Root** como UO em`organizational_units`, não adicione nenhuma outra OUs.

# UO aninhada
<a name="cfct-nested-ou"></a>

O CFct suporta a listagem de um ou mais aninhados OUs sob a `organizational_units` palavra-chave na versão V2 do manifesto (2021-03-15). 

É necessário um caminho completo (excluindo Root) para a OU aninhada, usando dois pontos como separador entre elas. OUs Para o método de implantação `scp` ou`rcp`, o AWS Control Tower implanta o SCPs or RCPs na última OU no caminho aninhado da OU. Para o método de implantação `stack_set`, o AWS Control Tower implanta os conjuntos de pilhas em todas as contas na última UO no caminho aninhado da UO.

Por exemplo, considere o caminho `OUName1:OUName2:OUName3`. A última UO no caminho é `OUName3`. O cFct implanta os conjuntos RCPs de SCPs ou para `OUName3` e empilha somente em todas as contas diretamente abaixo`OUName3`.

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

resources:

  …truncated…

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

**nota**  
O recurso UO aninhada é compatível somente com a versão V2 do arquivo de manifesto (2021-03-15).

# Crie suas próprias personalizações
<a name="cfcn-byo-customizations"></a>

Para criar suas próprias personalizações, você pode modificar o `manifest.yaml` arquivo cFct adicionando ou atualizando políticas de controle de serviço (SCPs), políticas de controle de recursos (RCPs) e recursos. CloudFormation Para recursos que precisam ser implantados, você pode adicionar ou remover contas e. OUs Você pode adicionar ou modificar os modelos nas pastas do pacote, criar suas próprias pastas e referenciar os modelos ou pastas no arquivo `manifest.yaml`.

Esta seção explica as duas partes principais da como criar suas próprias personalizações:
+ como configurar o próprio pacote de configuração para políticas de controle de serviços
+ como configurar seu próprio pacote de configuração para conjuntos de AWS CloudFormation pilhas

# Configurar um pacote de configuração para SCPs ou RCPs
<a name="cfcn-set-up-custom-scps"></a>

Esta seção explica como criar um pacote de configuração para políticas de controle de serviços (SCPs) ou políticas de controle de recursos (RCPs). As duas partes principais desse processo são (1) preparar o arquivo de manifesto CfCT e (2) preparar a estrutura de pastas.

## Etapa 1: edite o arquivo manifest.yaml
<a name="cfct-byo-scp-step-1"></a>

Use o arquivo `manifest.yaml` de amostra como ponto de partida. Insira todas as configurações necessárias. Adicione detalhes de `resource_file` e `deployment_targets`.

O trecho a seguir mostra o arquivo de manifesto padrão.

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

resources: []
```

O valor de `region` é adicionado automaticamente durante a implantação. Ele deve corresponder à região em que você implantou o CfCT. Essa região deve ser a mesma que a região do AWS Control Tower.

Para adicionar uma SCP ou RCP personalizada na pasta `example-configuration` do pacote zip armazenado no bucket do Amazon S3, abra o arquivo `example-manifest.yaml` e comece a editar.

```
---
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…
```

O trecho a seguir mostra um exemplo de um arquivo de manifesto personalizado. Você pode adicionar mais de uma política em uma única alteração.

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

## Etapa 2: crie uma estrutura de pastas
<a name="cfct-byo-scp-step-2"></a>

Você pode pular essa etapa se estiver usando uma URL do Amazon S3 para o arquivo de recursos e **usando parâmetros key/value com pares**.

Você deve incluir uma política SCP ou RCP no formato JSON para permitir o manifesto, pois o arquivo de manifesto faz referência ao arquivo JSON. Os caminhos do arquivo devem corresponder às informações de caminho fornecidas no arquivo de manifesto. 
+ Um arquivo JSON de *política* contém o SCPs ou RCPs para ser implantado. OUs

O trecho a seguir mostra a estrutura de pastas do arquivo de manifesto de amostra.

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

O trecho a seguir é um exemplo de um arquivo 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 um pacote de configuração para CloudFormation StackSets
<a name="cfcn-byo-cfn-stacksets"></a>

Esta seção explica como configurar um pacote de configuração para CloudFormation StackSets. As duas partes principais desse processo são: (1) preparar o arquivo de manifesto e (2) atualizar a estrutura de pastas.

## Etapa 1: edite o arquivo de manifesto existente
<a name="cfcn-byo-cfn-stacksets-step-1"></a>

Adicione as novas CloudFormation StackSets informações ao arquivo de manifesto que você editou anteriormente.

Apenas para análise, o trecho a seguir contém o mesmo arquivo de manifesto personalizado que foi exibido anteriormente para configurar um pacote de configuração para SCPs ou. RCPs Agora você pode editar ainda mais esse arquivo, para incluir os detalhes sobre seus 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
```

O trecho a seguir mostra um exemplo de arquivo de manifesto editado que contém os detalhes de `resources`. A ordem de `resources` determina a ordem de execução para criar dependências de `resources`. Você pode editar o seguinte exemplo de arquivo de manifesto de acordo com suas necessidades empresariais.

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

O exemplo a seguir mostra que você pode adicionar mais de um CloudFormation recurso no arquivo de manifesto.

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

## Etapa 2: atualize a estrutura de pastas
<a name="cfct-byo-cfn-stacksets-step-2"></a>

Ao atualizar a estrutura de pastas, você pode incluir todos os arquivos de CloudFormation modelo de suporte e arquivos de política SCP ou RCP que estão no arquivo de manifesto. Verifique se os caminhos do arquivo correspondem ao fornecido no arquivo de manifesto. 
+ Um arquivo *de modelo* contém os AWS recursos a serem implantados OUs e as contas.
+ Um arquivo de *política* contém os parâmetros de entrada usados no arquivo de modelo.

O exemplo a seguir mostra a estrutura de pastas do arquivo de manifesto de amostra criado na [Etapa 1](#cfcn-byo-cfn-stacksets-step-1).

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

# O auxiliar 'alfred' e os arquivos de parâmetros CloudFormation
<a name="alfred-helper"></a>

 O CFct fornece um mecanismo conhecido como *alfred* helper para obter o valor de uma chave [SSM Parameter Store](https://docs.aws.amazon.com//systems-manager/latest/userguide/systems-manager-parameter-store.html) definida no modelo. CloudFormation Usando o auxiliar *alfred*, você pode usar valores armazenados no SSM Parameter Store sem atualizar o modelo. CloudFormation Para obter mais informações, consulte [O que é um CloudFormation modelo?](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/gettingstarted.templatebasics.html#gettingstarted.templatebasics.what) no *Guia do CloudFormation usuário*. 

**Importante**  
 O auxiliar *alfred* tem duas limitações. Os parâmetros estão disponíveis somente na região de origem da conta de gerenciamento do AWS Control Tower. Como prática recomendada, considere trabalhar com valores que não mudam de uma instância de pilha para outra. Quando o auxiliar “alfred” recupera os parâmetros, ele escolhe uma instância de pilha aleatória do conjunto de pilhas que exporta a variável. 

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

 Suponha que você tenha dois conjuntos CloudFormation de pilhas. O *conjunto de pilhas 1* tem uma instância de pilha e é implantado em uma conta em uma região. Ele cria uma Amazon VPC e sub-redes em uma zona de disponibilidade, e o `VPC ID` e o `subnet ID` devem ser passados ao *conjunto de pilhas 2* como valores de parâmetros. Antes que o `VPC ID` e o `subnet ID` possam ser passados ao *conjunto de pilhas 2*, o `VPC ID` e o `subnet ID` devem ser armazenados no *conjunto de pilhas 1* usando `AWS:::SSM::Parameter`. Consulte mais informações em [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) no *Guia de Usuário CloudFormation *. 

**CloudFormation conjunto de pilha 1:**

 No trecho a seguir, o auxiliar *alfred* pode obter valores para e do armazenamento `subnet ID` de parâmetros `VPC ID` e passá-los como entrada para a máquina de estado. StackSet 

```
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 pilhas 2:**

 O trecho mostra os parâmetros especificados no arquivo CloudFormation stack 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 pilhas 2.1:**

 O trecho mostra que você pode listar `alfred_ssm` propriedades para oferecer suporte a parâmetros do tipo. *CommaDelimitedList* Consulte mais informações em [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) no *Guia de Usuário 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 para o pacote de personalização**  
O esquema JSON para o pacote de personalização do cFct está localizado no repositório de [código-fonte](https://github.com/aws-solutions/aws-control-tower-customizations) em. GitHub Você pode usar o esquema com muitas de suas ferramentas de desenvolvimento favoritas e pode achar que é útil para reduzir erros ao criar seu próprio arquivo `manifest.yaml` do CfCT.

# Atualizações de versão para o manifesto CfCT
<a name="cfct-compatibility"></a>

Para obter informações sobre a versão mais recente de *Customizations for AWS Control Tower* (cFct), consulte o [`CHANGELOG.md`arquivo no repositório](https://github.com/aws-solutions/aws-control-tower-customizations/blob/master/CHANGELOG.md). GitHub 

**Atenção**  
A versão 2.2.0 de *Customizations for AWS Control Tower* (cFct) introduziu um esquema de manifesto cFct (versão *2021-03-15*) para se alinhar ao serviço relacionado. AWS APIs O esquema do manifesto permite que um único arquivo manifest.yaml gerencie recursos compatíveis (CloudFormation modelos e RCPs) por meio de fluxos de trabalho SCPs desacoplados. DevOps   
É altamente recomendável que você atualize o esquema do manifesto CfCT da versão *2020-01-01* para a versão *2021-03-15* ou posterior.  
O CfCT mantém a compatibilidade com as versões *2021-03-15* e *2020-01-01* do arquivo `manifest.yaml`. Nenhuma alteração na configuração existente é necessária. No entanto, a versão *2020-01-01* está no **Fim do suporte**. Não fornecemos mais atualizações nem adicionamos aprimoramentos à versão *2020-01-01*. Os recursos de UO raiz e UO aninhada não são compatíveis com a versão *2020-01-01*. 

**Propriedades obsoletas na versão do manifesto CfCT *2021-03-15:***

```
organization_policies
policy_file
apply_to_accounts_in_ou

cloudformation_resources
template_file
deploy_to_account
deploy_to_ou
ssm_parameters
```

## Etapas obrigatórias de atualização de CfCT
<a name="mandatory-upgrade-steps"></a>

Ao atualizar para a versão *2021-03-15* do esquema de manifesto CfCT, aqui estão as alterações que você deve fazer para atualizar seus arquivos. As próximas seções descrevem as mudanças obrigatórias e recomendadas para a transição.

**Políticas de organizações**

1. **Mova SCPs ou RCPs em **organization\$1policies em** novos recursos de propriedade.**

1. Altere a propriedade **policy\$1file** para a nova propriedade **resource\$1file**.

1. Altere **apply\$1to\$1accounts\$1in\$1ou** para a nova propriedade **deployment\$1targets**. A lista de UOs deve ser definida na subpropriedade **organizational\$1units**. A subpropriedade **accounts** não é compatível com as políticas da organização.

1. Adicione uma nova propriedade **deploy\$1method** com o valor **scp** ou **rcp**. 

**CloudFormation recursos**

1. **Mova os CloudFormation recursos em **cloudformation\$1resources em novos recursos** de propriedade.**

1. Altere a propriedade **template\$1file** para a nova propriedade **resource\$1file**.

1. Altere **deploy\$1to\$1ou** para a nova propriedade **deployment\$1targets**. A lista de UOs deve ser definida na subpropriedade **organizational\$1units**.

1. Altere **deploy\$1to\$1accounts** para a nova propriedade **deployment\$1targets**. A lista de contas deve ser definida na subpropriedade **accounts**.

1. Altere a propriedade **ssm\$1parameters** para a nova propriedade **export\$1outputs**.

## Etapas de atualização de CfCT altamente recomendadas
<a name="highly-recommended-upgrade-steps"></a>

**CloudFormation parâmetros**

1. Altere a propriedade **parameter\$1file** para a nova propriedade **parameters**.

1. Remova o caminho do arquivo no valor da propriedade **parameter\$1file**.

1. Copie a chave e o valor do parâmetro existente do arquivo JSON para o novo formato da propriedade **parameters**. Isso ajudaria você a gerenciá-los no arquivo de manifesto.

**nota**  
A propriedade **parameter\$1file** é compatível com a versão do manifesto CfCT *2021-03-15*.