Use CloudFormation parâmetros para obter um CloudFormation valor - AWS Cloud Development Kit (AWS CDK) v2

Este é o Guia do Desenvolvedor AWS CDK v2. A versão CDK 1 mais antiga 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 CloudFormation parâmetros para obter um CloudFormation valor

Use AWS CloudFormation parâmetros nos AWS Cloud Development Kit (AWS CDK) aplicativos para inserir valores personalizados em seus CloudFormation modelos sintetizados na implantação.

Para obter uma introdução, consulte Parâmetros e o AWS CDK.

Defina parâmetros em seu CDK aplicativo

Use a CfnParameterclasse para definir um parâmetro. Você deve 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 AWS CloudFormation console. Para obter mais informações sobre os tipos disponíveis, consulte Tipos.

nota

Você pode 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.

TypeScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
JavaScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
Python
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String", description="The name of the Amazon S3 bucket where uploaded files will be stored.")
Java
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName") .type("String") .description("The name of the Amazon S3 bucket where uploaded files will be stored") .build();
C#
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps { Type = "String", Description = "The name of the Amazon S3 bucket where uploaded files will be stored" });

Use parâmetros

Uma CfnParameter instância expõe seu valor ao seu CDK aplicativo por meio de um token. 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 AWS CloudFormation modelo (que será resolvido no momento da implantação), em vez de um valor concreto.

Você pode recuperar o token como uma instância da Token classe 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.

TypeScript
Propriedade tipo de valor
value Tokeninstância de classe
valueAsList O token representado como uma lista de strings
valueAsNumber O token representado como um número
valueAsString O token representado como uma string
JavaScript
Propriedade tipo de valor
value Tokeninstância de classe
valueAsList O token representado como uma lista de strings
valueAsNumber O token representado como um número
valueAsString O token representado como uma string
Python
Propriedade tipo de valor
value Tokeninstância de classe
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 string
Java
Propriedade tipo de valor
getValue() Tokeninstância de classe
getValueAsList() O token representado como uma lista de strings
getValueAsNumber() O token representado como um número
getValueAsString() O token representado como uma string
C#
Propriedade tipo de valor
Value Tokeninstância de classe
ValueAsList O token representado como uma lista de strings
ValueAsNumber O token representado como um número
ValueAsString O token representado como uma string

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

TypeScript
const bucket = new Bucket(this, "amzn-s3-demo-bucket", { bucketName: uploadBucketName.valueAsString});
JavaScript
const bucket = new Bucket(this, "amzn-s3-demo-bucket", { bucketName: uploadBucketName.valueAsString});
Python
bucket = Bucket(self, "amzn-s3-demo-bucket", bucket_name=upload_bucket_name.value_as_string)
Java
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .bucketName(uploadBucketName.getValueAsString()) .build();
C#
var bucket = new Bucket(this, "amzn-s3-demo-bucket") { BucketName = uploadBucketName.ValueAsString };

Implemente CDK aplicativos contendo parâmetros

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

Você também pode fornecer valores de parâmetros usando a CDK CLI cdk deploycomando ou especificando valores de parâmetros no arquivo de pilha do seu CDK projeto.

Forneça valores de parâmetros com cdk deploy

Quando você implanta usando o CDK CLI cdk deploycomando, você pode fornecer valores de parâmetros na implantação com a --parameters opção.

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

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

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

$ cdk deploy --parameters uploadBucketName=uploadbucket

Forneça valores de parâmetros com cdk deploy para aplicativos de várias pilhas

A seguir está um exemplo de CDK aplicação em TypeScript que contém duas CDK pilhas. 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: 'myfirststackdefaultbucketname' }); // 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: 'mysecondstackdefaultbucketname' }); // 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 CDK aplicativos que contêm várias pilhas, você pode fazer o seguinte:

  • Implante uma pilha com parâmetros — Para implantar uma única pilha de um aplicativo com várias pilhas, forneça o ID lógico da pilha como argumento.

    Veja a seguir um exemplo que é implantado MySecondStack com mynewbucketname o valor do parâmetro parabucketNameParam:

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

    $ cdk deploy '*' --parameters MyFirstDeployedStack:bucketNameParam='mynewfirststackbucketname' --parameters MySecondDeployedStack:bucketNameParam='mynewsecondstackbucketname'
  • Implante todas as pilhas e especifique os valores dos parâmetros para uma única pilha — Forneça o '*' curinga ou a --all opção de implantar todas as pilhas. Em seguida, especifique a pilha para definir o parâmetro na --parameters opção. Veja a seguir exemplos de como implantar todas as pilhas em um CDK aplicativo e especificar um valor de parâmetro para a pilha. MySecondDeployedStack 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'

Forneça valores de parâmetros com cdk deploy para aplicativos com pilhas aninhadas

O CDK CLI o comportamento ao trabalhar com aplicativos contendo pilhas aninhadas é semelhante ao de aplicativos 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 cdk deploy comando, consultecdk deploy.