

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

# Use os parâmetros do CloudFormation para obter um valor do CloudFormation
<a name="get-cfn-param"></a>

Use parâmetros do AWS CloudFormation nas aplicações do kit de desenvolvimento em nuvem da AWS (CDK da AWS) para inserir valores personalizados em seus modelos sintetizados do CloudFormation na implantação.

Para obter uma introdução, consulte [Parâmetros e o AWS CDK.](parameters.md)

## Definir parâmetros em sua aplicação CDK
<a name="parameters-define"></a>

Use a classe [https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnParameter.html](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.CfnParameter.html) para definir um parâmetro. É necessário querer especificar pelo menos um tipo e uma descrição para a maioria dos parâmetros, embora ambos sejam tecnicamente opcionais. A descrição aparece quando o usuário é solicitado a inserir o valor do parâmetro no console AWS do CloudFormation. Para obter mais informações sobre os tipos disponíveis, consulte [Tipos](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/parameters-section-structure.html#parameters-section-structure-properties-type).

**nota**  
É possível definir parâmetros em qualquer escopo. No entanto, recomendamos definir parâmetros no nível da pilha para que seu ID lógico não mude quando você refatorar seu código.

**Example**  

```
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
  type: "String",
  description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
```

```
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
  type: "String",
  description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
```

```
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String",
    description="The name of the Amazon S3 bucket where uploaded files will be stored.")
```

```
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName")
        .type("String")
        .description("The name of the Amazon S3 bucket where uploaded files will be stored")
        .build();
```

```
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps
{
    Type = "String",
    Description = "The name of the Amazon S3 bucket where uploaded files will be stored"
});
```

## Usar parâmetros
<a name="parameters-use"></a>

Uma instância do `CfnParameter` expõe seu valor à sua aplicação CDK por meio de um [token](tokens.md). Como todos os tokens, o token do parâmetro é resolvido no momento da síntese. Mas isso se resume a uma referência ao parâmetro definido no modelo do AWS CloudFormation (que será resolvido no momento da implantação), em vez de um valor concreto.

É possível recuperar o token como uma instância da classe `Token` ou em string, lista de strings ou codificação numérica. Sua escolha depende do tipo de valor exigido pela classe ou método com o qual você deseja usar o parâmetro.

**Example**  


| Propriedade | tipo de valor | 
| --- | --- | 
|   `value`   |   instância da classe `Token`  | 
|   `valueAsList`   |  O token representado como uma lista de strings  | 
|   `valueAsNumber`   |  O token representado como um número  | 
|   `valueAsString`   |  O token representado como uma de string  | 


| Propriedade | tipo de valor | 
| --- | --- | 
|   `value`   |   instância da classe `Token`  | 
|   `valueAsList`   |  O token representado como uma lista de strings  | 
|   `valueAsNumber`   |  O token representado como um número  | 
|   `valueAsString`   |  O token representado como uma de string  | 


| Propriedade | tipo de valor | 
| --- | --- | 
|   `value`   |   instância da classe `Token`  | 
|   `value_as_list`   |  O token representado como uma lista de strings  | 
|   `value_as_number`   |  O token representado como um número  | 
|   `value_as_string`   |  O token representado como uma de string  | 


| Propriedade | tipo de valor | 
| --- | --- | 
|   `getValue()`   |   instância da classe `Token`  | 
|   `getValueAsList()`   |  O token representado como uma lista de strings  | 
|   `getValueAsNumber()`   |  O token representado como um número  | 
|   `getValueAsString()`   |  O token representado como uma de string  | 


| Propriedade | tipo de valor | 
| --- | --- | 
|   `Value`   |   instância da classe `Token`  | 
|   `ValueAsList`   |  O token representado como uma lista de strings  | 
|   `ValueAsNumber`   |  O token representado como um número  | 
|   `ValueAsString`   |  O token representado como uma de string  | 

Por exemplo, para usar um parâmetro em uma definição `Bucket`:

**Example**  

```
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
  { bucketName: uploadBucketName.valueAsString});
```

```
const bucket = new Bucket(this, "amzn-s3-demo-bucket",
  { bucketName: uploadBucketName.valueAsString});
```

```
bucket = Bucket(self, "amzn-s3-demo-bucket",
    bucket_name=upload_bucket_name.value_as_string)
```

```
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket")
        .bucketName(uploadBucketName.getValueAsString())
        .build();
```

```
var bucket = new Bucket(this, "amzn-s3-demo-bucket")
{
    BucketName = uploadBucketName.ValueAsString
};
```

## Implementar aplicações CDK contendo parâmetros
<a name="parameters-deploy"></a>

Ao implantar um modelo AWS do CloudFormation gerado por meio do console do AWS CloudFormation, você será solicitado a fornecer os valores para cada parâmetro.

Você também pode fornecer valores de parâmetros usando o comando `cdk deploy` da CLI do CDK ou especificando valores de parâmetros no arquivo de pilha do seu projeto do CDK.

### Fornecer valores de parâmetros com o cdk deploy
<a name="parameters-deploy-cli"></a>

Ao implantar usando o comando `cdk deploy` da CLI do CDK, é possível fornecer valores de parâmetros na implantação com a opção `--parameters`.

Veja a seguir um exemplo da estrutura de comando `cdk deploy`:

```
$ cdk deploy <stack-logical-id> --parameters <stack-name>:<parameter-name>=<parameter-value>
```

Se sua aplicação CDK contiver uma única pilha, você não precisará fornecer o argumento do ID lógico da pilha ou o valor `stack-name` na opção `--parameters`. A CLI do CDK encontrará e fornecerá automaticamente esses valores. Veja a seguir um exemplo que especifica um valor `uploadbucket` para o parâmetro `uploadBucketName` da pilha única em nossa aplicação CDK:

```
$ cdk deploy --parameters <uploadBucketName>=<uploadbucket>
```

### Fornecer valores de parâmetros com a implantação cdk para aplicações de várias pilhas
<a name="parameters-deploy-cli-multi-stack"></a>

Veja a seguir um exemplo de aplicação do CDK em TypeScript que contém duas pilhas do CDK. Cada pilha contém uma instância de bucket do Amazon S3 e um parâmetro para definir o nome do bucket do Amazon S3:

```
import * as cdk from 'aws-cdk-lib';
import { Construct } from 'constructs';
import * as s3 from 'aws-cdk-lib/aws-s3';

// Define the CDK app
const app = new cdk.App();

// First stack
export class MyFirstStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Set a default parameter name
    const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
      type: 'String',
      default: 'amzn-s3-demo-bucket1'
    });

    // Define an S3 bucket
    new s3.Bucket(this, 'MyFirstBucket', {
      bucketName: bucketNameParam.valueAsString
    });
  }
}

// Second stack
export class MySecondStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Set a default parameter name
    const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', {
      type: 'String',
      default: 'amzn-s3-demo-bucket2'
    });

    // Define an S3 bucket
    new s3.Bucket(this, 'MySecondBucket', {
      bucketName: bucketNameParam.valueAsString
    });
  }
}

// Instantiate the stacks
new MyFirstStack(app, 'MyFirstStack', {
  stackName: 'MyFirstDeployedStack',
});

new MySecondStack(app, 'MySecondStack', {
  stackName: 'MySecondDeployedStack',
});
```

Para aplicações do CDK que contêm várias pilhas, você pode fazer o seguinte:
+  **Implantar uma pilha com parâmetros** — Para implantar uma única pilha de uma aplicação com várias pilhas, forneça o ID lógico da pilha como argumento.

  Veja a seguir um exemplo que implanta o `MySecondStack` com `mynewbucketname` como o valor do parâmetro para `bucketNameParam`:

  ```
  $ cdk deploy <MySecondStack> --parameters <bucketNameParam>='<mynewbucketname>'
  ```
+  **Implantar todas as pilhas e especificar os valores dos parâmetros para cada pilha** — Forneça o curinga `'*'` ou a opção `--all` para implantar todas as pilhas. Forneça a opção `--parameters` várias vezes em um único comando para especificar os valores dos parâmetros para cada pilha. Veja um exemplo a seguir:

  ```
  $ cdk deploy <'*'> --parameters <MyFirstDeployedStack>:<bucketNameParam>='<mynewfirststackbucketname>' --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewsecondstackbucketname>'
  ```
+  **Implantar todas as pilhas e especificar os valores dos parâmetros para uma única pilha** — Forneça o curinga `'*'` ou a opção `--all` para implantar todas as pilhas. Em seguida, especifique a pilha para definir o parâmetro na opção `--parameters`. Veja a seguir exemplos de como implantar todas as pilhas em uma aplicação do CDK e especificar um valor de parâmetro para a pilha `MySecondDeployedStack` do AWS CloudFormation. Todas as outras pilhas serão implantadas e usarão o valor do parâmetro padrão:

  ```
  $ cdk deploy <'*'> --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewbucketname>'
  $ cdk deploy <--all> --parameters <MySecondDeployedStack>:<bucketNameParam>='<mynewbucketname>'
  ```

### Fornecer valores de parâmetros `cdk deploy` para aplicações com pilhas aninhadas
<a name="parameters-deploy-cli-nested-stack"></a>

O comportamento da CLI do CDK ao trabalhar com aplicações contendo pilhas aninhadas é semelhante ao de aplicações com várias pilhas. A principal diferença é que, se você quiser implantar todas as pilhas aninhadas, use o curinga `'**'`. O curinga `'*'` implanta todas as pilhas, mas não implantará pilhas aninhadas. O curinga `'**'` implanta todas as pilhas, incluindo pilhas aninhadas.

Veja a seguir um exemplo que implanta pilhas aninhadas enquanto especifica o valor do parâmetro para uma pilha aninhada:

```
$ cdk deploy '**' --parameters <MultiStackCdkApp/SecondStack>:<bucketNameParam>='<mysecondstackbucketname>'
```

Para obter mais informações sobre as opções de comando `cdk deploy`, consulte [cdk deploy](ref-cli-cmd-deploy.md).