

Este é o Guia do desenvolvedor do AWS CDK v2. O CDK v1 antigo entrou em manutenção em 1º de junho de 2022 e encerrou o suporte em 1º de junho de 2023.

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

# Personalizar a síntese de pilhas do CDK
<a name="customize-synth"></a>

É possível personalizar a síntese de pilhas do kit de desenvolvimento em nuvem da AWS (CDK da AWS) modificando o sintetizador padrão, usando outros sintetizadores integrados disponíveis ou criar seu próprio sintetizador.

O AWS CDK inclui os sintetizadores integrados a seguir que podem ser usado para personalizar o comportamento da síntese:
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html): se um sintetizador não for especificado, este será usado automaticamente. Ele oferece suporte a implantações entre contas e implantações usando o constructo do [CDK Pipelines](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.pipelines-readme.html). Seu contrato de bootstrapping exige um bucket do Amazon S3 existente com um nome conhecido, um repositório do Amazon ECR existente com um nome conhecido e cinco perfis do IAM existentes com nomes conhecidos. O modelo de bootstrapping padrão atende a esses requisitos.
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html): o contrato de bootstrapping desse sintetizador exige um bucket do Amazon S3 existente e um repositório do Amazon ECR existente. Não é necessário ter um perfil do IAM. Para realizar implantações, esse sintetizador depende das permissões do usuário da CLI do CDK e é recomendado para organizações que desejem restringir as credenciais de implantação do IAM. Esse sintetizador não é compatível com implantações entre contas ou CDK Pipelines.
+  [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.LegacyStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.LegacyStackSynthesizer.html) – este sintetizador emula o comportamento de síntese do CDK v1. Seu contrato de bootstrapping exige um bucket do Amazon S3 existente com um nome arbitrário e espera que as localizações dos ativos sejam passadas como parâmetros de pilha do CloudFormation. Se você usar esse sintetizador, deverá usar a CLI do CDK para realizar a implantação.

Se nenhum desses sintetizadores integrados for apropriado para seu caso de uso, é possível escrever seu próprio sintetizador como uma classe que implemente `IStackSynthesizer` ou analisar os [sintetizadores](https://constructs.dev/search?q=synthesizer&cdk=aws-cdk) do Construct Hub.

## Personalizar o `DefaultStackSynthesizer`
<a name="bootstrapping-custom-synth-default"></a>

O `DefaultStackSynthesizer` é o sintetizador padrão para o AWS CDK. Ele foi projetado para permitir implantações entre contas de aplicações do CDK, bem como a implantação de aplicações do CDK a partir de um sistema de CI/CD que não tem suporte explícito para o AWS CDK, mas oferece suporte a implantações regulares do CloudFormation, como AWS CodePipeline. Esse sintetizador é a melhor opção para a maioria dos casos de uso.

### Contrato de bootstrapping `DefaultStackSynthesizer`
<a name="bootstrapping-custom-synth-default-contract"></a>

 `DefaultStackSynthesizer` requer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante o bootstrapping:


| Recurso de bootstrap | Descrição | Nome padrão do recurso esperado | Finalidade | 
| --- | --- | --- | --- | 
|  Bucket do Amazon S3  |  Bucket de preparação  |  cdk-hnb659fds-assets-<ACCOUNT>-<REGION>  |  Armazena ativos de arquivos.  | 
|  Repositório do Amazon ECR  |  Repositório de preparação  |  cdk-hnb659fds-container-assets-<ACCOUNT>-<REGION>  |  Armazena e gerencia ativos de imagem do Docker.  | 
|  Perfil do IAM  |  Perfil de implantação  |  cdk-hnb659fds-deploy-role-<ACCOUNT>-<REGION>  |  Assumido pela CLI do CDK e, potencialmente, pelo CodePipeline para assumir outros perfis e iniciar a implantação do AWS CloudFormation. A política de confiança desse perfil controla quem pode implantar com o AWS CDK nesse ambiente da AWS.  | 
|  Perfil do IAM  |   Perfil de execução do AWS CloudFormation  |  cdk-hnb659fds-cfn-exec-role-<ACCOUNT>-<REGION>  |  Esse perfil é usado pelo AWS CloudFormation para realizar a implantação. As políticas desse perfil controlam quais operações a implantação do CDK pode realizar.  | 
|  Perfil do IAM  |  Perfil de pesquisa  |  cdk-hnb659fds-lookup-role-<ACCOUNT>-<REGION>  |  Esse perfil é usado quando a CLI do CDK precisa realizar pesquisas de contexto ambiental. A política de confiança desse perfil controla quem pode pesquisar informações no ambiente.  | 
|  Perfil do IAM  |  Perfil de publicação de arquivos  |  cdk-hnb659fds-file-publishing-role-<ACCOUNT>-<REGION>  |  Esse perfil é usado para fazer o carregamento de ativos no bucket de preparação do Amazon S3. É assumido a partir do perfil de implantação.  | 
|  Perfil do IAM  |  Perfil de publicação de imagens  |  cdk-hnb659fds-image-publishing-role-<ACCOUNT>-<REGION>  |  Esse perfil é usado para fazer o carregamento de imagens do Docker no repositório de teste do Amazon ECR. É assumido a partir do perfil de implantação.  | 
|  Parâmetro do SSM  |  Parâmetro de versão de bootstrap  |  /cdk-bootstrap/hnb659fds/<version>  |  A versão do modelo de bootstrap. Ele é usado pelo modelo de bootstrapping e pela CLI do CDK para validar os requisitos.  | 

Uma forma de personalizar a síntese da pilha do CDK é modificando o [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizer.html). É possível personalizar esse sintetizador para uma única pilha do CDK usando a propriedade `synthesizer` da sua instância `Stack`. Você também pode modificar `DefaultStackSynthesizer` em todas as pilhas de sua aplicação CDK usando a propriedade `defaultStackSynthesizer` da sua instância `App`.

### Alterar o qualificador
<a name="bootstrapping-custom-synth-qualifiers"></a>

O *qualificador* é adicionado ao nome dos recursos criados durante o bootstrapping. Por padrão, esse valor é `hnb659fds`. Ao modificar o qualificador durante o bootstrapping, você precisa personalizar a síntese da pilha do CDK para usar o mesmo qualificador.

Para alterar o qualificador, configure a propriedade `qualifier` do `DefaultStackSynthesizer` ou configure o qualificador como uma chave de contexto no arquivo `cdk.json` do seu projeto do CDK.

Veja a seguir um exemplo de como configurar a propriedade `qualifier` do `DefaultStackSynthesizer`:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new DefaultStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=DefaultStackSynthesizer(
        qualifier="MYQUALIFIER"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(DefaultStackSynthesizer.Builder.create()
    .qualifier("MYQUALIFIER")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
    {
        Qualifier = "MYQUALIFIER"
    })
});
```

```
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack {
	var sprops awscdk.StackProps
	if props != nil {
		sprops = props.StackProps
	}
	stack := awscdk.NewStack(scope, &id, &sprops)

	synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{
		Qualifier: jsii.String("MYQUALIFIER"),
	})

	stack.SetSynthesizer(synth)

	return stack
}
```

Veja a seguir um exemplo de como configurar o qualificador como uma chave de contexto em `cdk.json`:

```
{
  "app": "...",
  "context": {
    "@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER"
  }
}
```

### Alterar nomes de recursos
<a name="bootstrapping-custom-synth-names"></a>

Todas as outras propriedades `DefaultStackSynthesizer` estão relacionadas aos nomes dos recursos no modelo de bootstrap. Você só precisa fornecer qualquer uma dessas propriedades se tiver modificado o modelo de bootstrapping e alterado os nomes dos recursos ou o esquema de nomenclatura.

Todas as propriedades aceitam os espaços reservados especiais `${Qualifier}`, `${AWS::Partition}`, `${AWS::AccountId}` e `${AWS::Region}`. Esses espaços reservados são substituídos pelos valores do parâmetro `qualifier` e da partição AWS, ID da conta e valores da região da AWS do ambiente da pilha, respectivamente.

O exemplo a seguir mostra as propriedades mais usadas para `DefaultStackSynthesizer` junto com seus valores padrão, como se você estivesse instanciando o sintetizador. Para obter uma lista completa, consulte [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizerProps.html#properties](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.DefaultStackSynthesizerProps.html#properties):

**Example**  

```
new DefaultStackSynthesizer({
  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}',
  deployRoleExternalId: '',

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}',
  fileAssetPublishingExternalId: '',

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}',
  imageAssetPublishingExternalId: '',

  // ARN of the role passed to CloudFormation to execute the deployments
  cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}',

  // ARN of the role used to look up context information in an environment
  lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}',
  lookupRoleExternalId: '',

  // Name of the SSM parameter which describes the bootstrap stack version number
  bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version',

  // Add a rule to every template which verifies the required bootstrap stack version
  generateBootstrapVersionRule: true,

})
```

```
new DefaultStackSynthesizer({
  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}',
  deployRoleExternalId: '',

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}',
  fileAssetPublishingExternalId: '',

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}',
  imageAssetPublishingExternalId: '',

  // ARN of the role passed to CloudFormation to execute the deployments
  cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}',

  // ARN of the role used to look up context information in an environment
  lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}',
  lookupRoleExternalId: '',

  // Name of the SSM parameter which describes the bootstrap stack version number
  bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version',

  // Add a rule to every template which verifies the required bootstrap stack version
  generateBootstrapVersionRule: true,
})
```

```
DefaultStackSynthesizer(
  # Name of the S3 bucket for file assets
  file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
  bucket_prefix="",

  # Name of the ECR repository for Docker image assets
  image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
  docker_tag_prefix="",

  # ARN of the role assumed by the CLI and Pipeline to deploy here
  deploy_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}",
  deploy_role_external_id="",

  # ARN of the role used for file asset publishing (assumed from the CLI role)
  file_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}",
  file_asset_publishing_external_id="",

  # ARN of the role used for Docker asset publishing (assumed from the CLI role)
  image_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}",
  image_asset_publishing_external_id="",

  # ARN of the role passed to CloudFormation to execute the deployments
  cloud_formation_execution_role="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",

  # ARN of the role used to look up context information in an environment
  lookup_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}",
  lookup_role_external_id="",

  # Name of the SSM parameter which describes the bootstrap stack version number
  bootstrap_stack_version_ssm_parameter="/cdk-bootstrap/${Qualifier}/version",

  # Add a rule to every template which verifies the required bootstrap stack version
  generate_bootstrap_version_rule=True,
)
```

```
DefaultStackSynthesizer.Builder.create()
  // Name of the S3 bucket for file assets
  .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}")
  .bucketPrefix('')

  // Name of the ECR repository for Docker image assets
  .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}")
  .dockerTagPrefix('')

  // ARN of the role assumed by the CLI and Pipeline to deploy here
  .deployRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}")
  .deployRoleExternalId("")

  // ARN of the role used for file asset publishing (assumed from the CLI role)
  .fileAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}")
  .fileAssetPublishingExternalId("")

  // ARN of the role used for Docker asset publishing (assumed from the CLI role)
  .imageAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}")
  .imageAssetPublishingExternalId("")

  // ARN of the role passed to CloudFormation to execute the deployments
  .cloudFormationExecutionRole("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}")

  .lookupRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}")
  .lookupRoleExternalId("")

  // Name of the SSM parameter which describes the bootstrap stack version number
  .bootstrapStackVersionSsmParameter("/cdk-bootstrap/${Qualifier}/version")

  // Add a rule to every template which verifies the required bootstrap stack version
  .generateBootstrapVersionRule(true)
.build()
```

```
new DefaultStackSynthesizer(new DefaultStackSynthesizerProps
{
    // Name of the S3 bucket for file assets
    FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
    BucketPrefix = "",

    // Name of the ECR repository for Docker image assets
    ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
    DockerTagPrefix = "",

    // ARN of the role assumed by the CLI and Pipeline to deploy here
    DeployRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}",
    DeployRoleExternalId = "",

    // ARN of the role used for file asset publishing (assumed from the CLI role)
    FileAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}",
    FileAssetPublishingExternalId = "",

    // ARN of the role used for Docker asset publishing (assumed from the CLI role)
    ImageAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}",
    ImageAssetPublishingExternalId = "",

    // ARN of the role passed to CloudFormation to execute the deployments
    CloudFormationExecutionRole = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}",

    LookupRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}",
    LookupRoleExternalId = "",

    // Name of the SSM parameter which describes the bootstrap stack version number
    BootstrapStackVersionSsmParameter = "/cdk-bootstrap/${Qualifier}/version",

    // Add a rule to every template which verifies the required bootstrap stack version
    GenerateBootstrapVersionRule = true,
})
```

## Use `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli"></a>

Para modificar as credenciais de segurança usadas para fornecer permissões durante as implantações do CDK, você pode personalizar a síntese usando [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizer.html). Esse sintetizador funciona com os recursos padrão da AWS que são criados durante o bootstrapping para armazenar ativos, como o bucket do Amazon S3 e o repositório do Amazon ECR. Em vez de usar os perfis do IAM padrão criados pelo CDK durante o bootstrapping, ele usa as credenciais de segurança do ator que está iniciando a implantação. Portanto, as credenciais de segurança do ator devem ter permissões válidas para realizar todas as ações de implantação. O diagrama a seguir ilustra o processo de implantação ao usar esse sintetizador:

![\[Processo de implantação usando o CLICredentialsStackSynthesizer.\]](http://docs.aws.amazon.com/pt_br/cdk/v2/guide/images/CliCredentialsStackSynthesizer-deploy-process_cdk_flowchart.png)


Ao usar um `CliCredentialsStackSynthesizer`:
+ Por padrão, o CloudFormation realiza chamadas de API em sua conta usando as permissões do ator. Portanto, a identidade atual deve ter permissão para fazer as alterações necessárias nos recursos da AWS na pilha do CloudFormation, junto com as permissões para realizar as operações necessárias do CloudFormation, como `CreateStack` ou `UpdateStack`. Os recursos de implantação serão limitados às permissões do ator.
+ A publicação de ativos e as implantações do CloudFormation serão feitas usando a identidade do IAM atual. Essa identidade deve ter permissões suficientes para ler e gravar no bucket de ativos e no repositório.
+ As pesquisas são realizadas usando a identidade do IAM atual e estão sujeitas às suas políticas.

Ao usar esse sintetizador, será possível usar um perfil de execução separado do CloudFormation especificando-o usando a opção [`--role-arn`](ref-cli-cmd.md#ref-cli-cmd-options-role-arn) com qualquer comando da CLI do CDK.

### Contrato de bootstrapping `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli-contract"></a>

 `CliCredentialsStackSynthesizer` requer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante o bootstrapping:


| Recurso de bootstrap | Descrição | Nome padrão do recurso esperado | Finalidade | 
| --- | --- | --- | --- | 
|  Bucket do Amazon S3  |  Bucket de preparação  |  cdk-hnb659fds-assets-<ACCOUNT>-<REGION>  |  Armazena ativos de arquivos.  | 
|  Repositório do Amazon ECR  |  Repositório de preparação  |  cdk-hnb659fds-container-assets-<ACCOUNT>-<REGION>  |  Armazena e gerencia ativos de imagem do Docker.  | 

O `hnb659fds` da string no nome do recurso é chamado de *qualificador*. Seu valor padrão não tem nenhum significado especial. É possível ter várias cópias dos recursos de bootstrapping em um único ambiente, desde que eles tenham um qualificador diferente. Ter várias cópias pode ser útil para manter ativos de aplicações diferentes separados no mesmo ambiente.

É possível implantar o modelo de bootstrapping padrão para satisfazer o contrato de bootstrapping do `CliCredentialsStackSynthesizer`. O modelo de bootstrapping padrão criará perfis do IAM, mas esse sintetizador não as usará. Você também pode personalizar o modelo de bootstrapping para remover os perfis do IAM.

### Modificar `CliCredentialsStackSynthesizer`
<a name="bootstrapping-custom-synth-cli-modify"></a>

Se você alterar o qualificador ou qualquer um dos nomes de recursos de bootstrapping padrão durante o bootstrapping, precisará modificar o sintetizador para usar os mesmos nomes. É possível modificar o sintetizador para uma única pilha ou para todas as pilhas de sua aplicação. Veja um exemplo a seguir:

**Example**  

```
new MyStack(this, 'MyStack', {
  synthesizer: new CliCredentialsStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
});
```

```
new MyStack(this, 'MyStack', {
  synthesizer: new CliCredentialsStackSynthesizer({
    qualifier: 'MYQUALIFIER',
  }),
})
```

```
MyStack(self, "MyStack",
    synthesizer=CliCredentialsStackSynthesizer(
        qualifier="MYQUALIFIER"
))
```

```
new MyStack(app, "MyStack", StackProps.builder()
  .synthesizer(CliCredentialsStackSynthesizer.Builder.create()
    .qualifier("MYQUALIFIER")
    .build())
  .build();
)
```

```
new MyStack(app, "MyStack", new StackProps
{
    Synthesizer = new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps
    {
        Qualifier = "MYQUALIFIER"
    })
});
```

O exemplo a seguir mostra as propriedades mais usadas para `CliCredentialsStackSynthesizer` junto com seus valores padrão. Para obter uma lista completa, consulte [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizerProps.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CliCredentialsStackSynthesizerProps.html):

**Example**  

```
new CliCredentialsStackSynthesizer({
  // Value for '${Qualifier}' in the resource names
  qualifier: 'hnb659fds',

  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',
})
```

```
new CliCredentialsStackSynthesizer({
  // Value for '${Qualifier}' in the resource names
  qualifier: 'hnb659fds',

  // Name of the S3 bucket for file assets
  fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}',
  bucketPrefix: '',

  // Name of the ECR repository for Docker image assets
  imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}',
  dockerTagPrefix: '',
})
```

```
CliCredentialsStackSynthesizer(
  # Value for '${Qualifier}' in the resource names
  qualifier="hnb659fds",

  # Name of the S3 bucket for file assets
  file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
  bucket_prefix="",

  # Name of the ECR repository for Docker image assets
  image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
  docker_tag_prefix="",
)
```

```
CliCredentialsStackSynthesizer.Builder.create()
  // Value for '${Qualifier}' in the resource names
  .qualifier("hnb659fds")

  // Name of the S3 bucket for file assets
  .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}")
  .bucketPrefix('')

  // Name of the ECR repository for Docker image assets
  .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}")
  .dockerTagPrefix('')
.build()
```

```
new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps
{

    // Value for '${Qualifier}' in the resource names
    Qualifier = "hnb659fds",

    // Name of the S3 bucket for file assets
    FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}",
    BucketPrefix = "",

    // Name of the ECR repository for Docker image assets
    ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}",
    DockerTagPrefix = "",
})
```

## Use `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy"></a>

O `LegacyStackSynthesizer` emula o comportamento das implantações do CDK v1. As credenciais de segurança do ator que executa a implantação serão usadas para estabelecer permissões. Os ativos do arquivo serão carregados em um bucket que deve ser criado usando uma pilha do AWS CloudFormation chamada `CDKToolkit`. A CLI do CDK criará um repositório Amazon ECR não gerenciado chamado `aws-cdk/assets` para armazenar ativos de imagem do Docker. Você será responsável por limpar e gerenciar esse repositório. As pilhas sintetizadas usando o `LegacyStackSynthesizer` só podem ser implantadas usando a CLI do CDK.

É possível usar o `LegacyStackSynthesizer` se estiver migrando do CDK v1 para o CDK v2 e não conseguir fazer bootstrapping novamente em seus ambientes. Para novos projetos, recomendamos que você não use `LegacyStackSynthesizer`.

### Contrato de bootstrapping `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy-contract"></a>

 `LegacyStackSynthesizer` requer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante o bootstrapping:


| Recurso de bootstrap | Descrição | Nome padrão do recurso esperado | Finalidade | 
| --- | --- | --- | --- | 
|  Bucket do Amazon S3  |  Bucket de preparação  |  cdk-hnb659fds-assets-<ACCOUNT>-<REGION>  |  Armazena ativos de arquivos.  | 
|  Saída do CloudFormation  |  Saída do nome do bucket  |  Pilha – `CDKToolkit`  Nome da saída – `BucketName`   |  Uma saída do CloudFormation descrevendo o nome do bucket de preparação  | 

O `LegacyStackSynthesizer` não pressupõe a existência de um bucket do Amazon S3 com um nome fixo. Em vez disso, o modelo sintetizado do CloudFormation conterá três parâmetros do CloudFormation para cada ativo de arquivo. Esses parâmetros armazenarão o nome do bucket do Amazon S3, a chave do objeto do Amazon S3 e o hash do artefato de cada ativo do arquivo.

 Os ativos de imagem do Docker serão publicados em um repositório Amazon ECR chamado `aws-cdk/assets`. Esse nome pode ser alterado por ativo. Os repositórios serão criados se não existirem.

Uma pilha do CloudFormation deve existir com o nome padrão `CDKToolkit`. Essa pilha deve ter uma exportação do CloudFormation chamada `BucketName` que se refira ao bucket de teste.

O modelo de bootstrapping padrão satisfaz o contrato de bootstrapping do `LegacyStackSynthesizer`. No entanto, somente o bucket do Amazon S3 dos recursos de bootstrapping do modelo de bootstrapping será usado. É possível personalizar o modelo de bootstrapping para remover os recursos de bootstrapping do Amazon ECR, IAM e SSM.

### Andamento da implantação do `LegacyStackSynthesizer`
<a name="bootstrapping-custom-synth-legacy-deploy"></a>

Quando você usa esse sintetizador, o seguinte processo é executado durante a implantação:
+ O CDK CLI procura uma pilha do CloudFormation chamada `CDKToolkit` em seu ambiente. A partir dessa pilha, o CDK CLI lê a saída do CloudFormation chamada `BucketName`. É possível usar a opção `--toolkit-stack-name` com o `cdk deploy` para especificar outro nome de pilha.
+ As credenciais de segurança do ator que está iniciando a implantação serão usadas para estabelecer permissões para a implantação. Portanto, o ator deve ter permissões suficientes para realizar todas as ações de implantação. Isso inclui ler e gravar no bucket de preparação do Amazon S3, criar e gravar no repositório do Amazon ECR, iniciar e monitorar implantações do AWS CloudFormation e realizar todas as chamadas de API necessárias para a implantação.
+ Se necessário, e se as permissões forem válidas, os ativos do arquivo serão publicados no bucket de armazenamento do Amazon S3.
+ Se necessário e se as permissões forem válidas, os ativos de imagem do Docker serão publicados no repositório nomeado pela propriedade `repositoryName` do ativo. O valor padrão é `'aws-cdk/assets'` se você não fornecer um nome de repositório.
+ Se as permissões forem válidas, a implantação do AWS CloudFormation será executada. As localizações do bucket de armazenamento e das chaves do Amazon S3 são transmitidas como parâmetros do CloudFormation.