Este é o Guia do Desenvolvedor AWS CDK v2. A CDK v1 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á.
Configurar ambientes para usar com o AWS CDK
Você pode configurar ambientes da AWS de várias maneiras para usar com o AWS Cloud Development Kit (AWS CDK). O melhor método de gerenciamento de ambientes da AWS variará com base em suas necessidades específicas.
Cada pilha de CDK em seu aplicativo deve eventualmente ser associada a um ambiente para determinar onde a pilha será implantada.
Para uma introdução aos ambientes da AWS, consulte Ambientes para o AWS CDK.
Tópicos
Onde você pode especificar ambientes a partir de
Você pode especificar ambientes em credenciais e arquivos de configuração ou usando a propriedade env
do constructo da Stack
da Biblioteca de Constructos da AWS.
Credenciais e arquivos de configuração
Você pode usar a AWS Command Line Interface (AWS CLI) para criar arquivos credentials
e config
que armazenam, organizam e gerenciam as informações do seu ambiente da AWS. Para saber mais sobre esses arquivos, consulte Definições de arquivos de configuração e credenciais no Manual do usuário da AWS Command Line Interface.
Os valores armazenados nesses arquivos são organizados por perfis. A forma como você nomeia seus perfis e os pares de valor-chave nesses arquivos variará de acordo com seu método de configuração do acesso programático. Para saber mais sobre os diferentes métodos, consulte Configurar as credenciais de segurança para o AWS CDK CLI.
Em geral, o AWS CDK resolve as informações da Conta da AWS do seu arquivo credentials
e as informações da Região da AWS do seu arquivo config
.
Depois de configurar seus arquivos credentials
e config
, você pode especificar o ambiente a ser usado com o AWS CDK CLI e por meio das variáveis de ambiente.
propriedade de ambiente do constructo da pilha
Você pode especificar o ambiente para cada pilha usando a propriedade env
do constructo da Stack
. Essa propriedade define uma conta e uma região a serem usadas. Você pode passar valores com codificação rígida para essa propriedade ou passar variáveis de ambiente que são oferecidas pelo CDK.
Para passar variáveis de ambiente, use as variáveis de ambiente AWS_DEFAULT_ACCOUNT
e AWS_DEFAULT_REGION
. Essas variáveis de ambiente podem passar valores de seus arquivos credentials
e config
. Você também pode usar a lógica em seu código do CDK para determinar os valores dessas variáveis de ambiente.
Precedência ambiental com o AWS CDK
Se você usa vários métodos de especificação de ambientes, o AWS CDK segue a seguinte precedência:
-
Valores com codificação rígida especificados com a propriedade
env
do constructo daStack
. -
As variáveis de ambiente
AWS_DEFAULT_ACCOUNT
eAWS_DEFAULT_REGION
especificadas com a propriedadeenv
do constructo daStack
. -
Informações do ambiente associadas ao perfil de seus arquivos
credentials
econfig
passadas para o CDK CLI usando a opção--profile
. -
O perfil
default
dos seus arquivoscredentials
econfig
.
Quando especificar ambientes
Ao desenvolver com o CDK, você começa definindo pilhas do CDK, que contêm constructos que representam recursos da AWS. Em seguida, você sintetiza cada pilha do CDK em um modelo do AWS CloudFormation. Em seguida, você implanta o modelo do CloudFormation em seu ambiente. A forma como você especifica os ambientes determina quando as informações do seu ambiente são aplicadas e pode afetar o comportamento e os resultados do CDK.
Especifique ambientes na síntese do modelo
Quando você especifica as informações do ambiente usando a propriedade env
do constructo da Stack
, as informações do ambiente são aplicadas na síntese do modelo. A execução de cdk synth
ou cdk
deploy
produz um modelo do CloudFormation específico para o ambiente.
Se você usar variáveis de ambiente na propriedade env
, deverá usar a opção --profile
com comandos do CDK CLI para transmitir o perfil contendo as informações do ambiente a partir de suas credenciais e arquivos de configuração. Essas informações serão então aplicadas na síntese do modelo para produzir um modelo específico do ambiente.
As informações do ambiente no modelo do CloudFormation têm precedência sobre outros métodos. Por exemplo, se você fornecer um ambiente diferente com cdk deploy --profile
, o perfil será ignorado.profile
Ao fornecer informações sobre o ambiente dessa forma, você pode usar código e lógica dependentes do ambiente em seu aplicativo do CDK. Isso também significa que o modelo sintetizado pode ser diferente, com base na máquina, no usuário ou na sessão em que está sintetizado. Essa abordagem geralmente é aceitável ou desejável durante o desenvolvimento, mas não é recomendada para uso em produção.
Especificar ambientes na implantação da pilha
Se você não especificar um ambiente usando a propriedade env
do constructo da Stack
, o CDK CLI produzirá um modelo do CloudFormation independente do ambiente na síntese. Em seguida, você pode especificar o ambiente no qual implantar usando cdk deploy --profile
.profile
Se você não especificar um perfil ao implantar um modelo independente do ambiente, o CDK CLI tentará usar os valores do ambiente do seu perfil default
e dos arquivos credentials
e config
na implantação.
Se as informações do ambiente não estiverem disponíveis na implantação, o AWS CloudFormation tentará resolver as informações do ambiente na implantação por meio de atributos relacionados ao ambiente, como stack.account
, stack.region
e stack.availabilityZones
.
Para pilhas independentes do ambiente, os constructos dentro da pilha não podem usar informações do ambiente e você não pode usar a lógica que exija informações do ambiente. Por exemplo, você não pode escrever código como if (stack.region ====
'us-east-1')
ou usar métodos de constructo que exijam informações do ambiente, como Vpc.fromLookup
. Para usar esses atributos, você deve especificar um ambiente com a propriedade env
.
Para pilhas independentes do ambiente, qualquer constructo que use zonas de disponibilidade verá duas zonas de disponibilidade, permitindo que a pilha seja implantada em qualquer região.
Como especificar ambientes com o AWS CDK
Especificar ambientes com codificação rígida para cada pilha
Use a propriedade env
do constructoStack
para especificar valores de ambiente da AWS para sua pilha. Veja um exemplo a seguir:
Recomendamos essa abordagem para ambientes de produção. Ao especificar explicitamente o ambiente dessa forma, você pode garantir que a pilha seja sempre implantada no ambiente específico.
Especificar ambientes usando variáveis de ambiente
O AWS CDK fornece duas variáveis de ambiente que você pode usar em seu código CDK: CDK_DEFAULT_ACCOUNT
e CDK_DEFAULT_REGION
. Ao usar essas variáveis de ambiente na propriedade env
de sua instância de pilha, você pode transmitir informações do ambiente de suas credenciais e arquivos de configuração usando a opção --profile
do CDK CLI.
Veja a seguir um exemplo de como especificar essas variáveis de ambiente :
Ao especificar ambientes usando variáveis de ambiente, você pode ter a mesma pilha do CDK sintetizada em modelos do AWS CloudFormation para ambientes diferentes. Isso significa que você pode implantar a mesma pilha do CDK em ambientes da AWS diferentes sem precisar modificar seu código do CDK. Você só precisa especificar o perfil a ser usado durante a execução do cdk synth
.
Essa abordagem é ótima para ambientes de desenvolvimento ao implantar a mesma pilha em ambientes diferentes. No entanto, não recomendamos essa abordagem para ambientes de produção, pois o mesmo código do CDK pode sintetizar modelos diferentes, dependendo da máquina, do usuário ou da sessão em que está sintetizado.
Especificar ambientes a partir de suas credenciais e arquivos de configuração com o CDK CLI
Ao implantar um modelo independente do ambiente, use a opção --profile
com qualquer comando do CDK CLI para especificar o perfil a ser usado. Veja a seguir um exemplo que implanta uma pilha do CDK chamada myStack
usando o perfil prod
definido nos arquivos credentials
e config
:
$
cdk deploy
myStack
--profileprod
Para obter mais informações sobre a opção --profile
, junto com outros comandos e opções do CDK CLI, consulte AWS CDK CLI Referência de comando.
Considerações ao configurar ambientes com o AWS CDK
Os serviços que você define usando constructos em suas pilhas devem oferecer suporte à região na qual você está implantando. Para uma lista de Serviços da AWS com suporte por região, consulte Serviços da AWS por região
Você deve ter credenciais válidas do AWS Identity and Access Management (IAM) para realizar implantações de pilha com o AWS CDK em seus ambientes especificados.
Exemplos
Sintetize um modelo do CloudFormation independente do ambiente a partir de uma pilha do CDK
Neste exemplo, criamos um modelo do CloudFormation independente do ambiente a partir de nossa pilha do CDK. Em seguida, podemos implantar esse modelo em qualquer ambiente.
Veja a seguir nosso exemplo de pilha do CDK. Essa pilha define um bucket do Amazon S3 e uma saída de pilha do CloudFormation para a região do bucket. Para este exemplo, env
não está definido:
Quando executamos cdk synth
, o CDK CLI produz um modelo do CloudFormation com o pseudoparâmetro AWS::Region
como valor de saída para a região do bucket. Esse parâmetro será resolvido na implantação:
Outputs: BucketRegion: Value: Ref: AWS::Region
Para implantar essa pilha em um ambiente especificado no perfil dev
de nossas credenciais e arquivos de configuração, executamos o seguinte:
$
cdk deploy CdkAppStack --profile dev
Se não especificarmos um perfil, o CDK CLI tentará usar as informações do ambiente do perfil default
em nossas credenciais e arquivos de configuração.
Usar lógica para determinar as informações do ambiente na síntese do modelo
Neste exemplo, configuramos a propriedade env
da nossa instância da stack
para usar uma expressão válida. Especificamos duas variáveis de ambiente adicionais, CDK_DEPLOY_ACCOUNT
e CDK_DEPLOY_REGION
. Essas variáveis de ambiente podem substituir os padrões no momento da síntese, se existirem:
Com o ambiente da nossa pilha declarado dessa forma, podemos escrever um script curto ou arquivo em lote, definir variáveis a partir dos argumentos da linha de comando e, em seguida, chamar cdk deploy
. Veja um exemplo a seguir. Todos os argumentos além dos dois primeiros são passados para cdk deploy
para especificar as opções ou argumentos da linha de comando:
Em seguida, podemos escrever scripts adicionais que usam o script cdk-deploy-to
para implantar em ambientes específicos. Veja um exemplo a seguir:
Veja a seguir um exemplo que usa o script cdk-deploy-to
para implantar em vários ambientes. Se a primeira implantação falhar, o processo será interrompido: