Este é o Guia do Desenvolvedor 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á.
Pilhas
Uma AWS Cloud Development Kit (AWS CDK) pilha é uma coleção de uma ou mais construções, que definem AWS recursos. Cada pilha CDK representa uma AWS CloudFormation pilha em seu aplicativo CDK. Na implantação, as construções dentro de uma pilha são provisionadas como uma única unidade, chamada de pilha. AWS CloudFormation Para saber mais sobre AWS CloudFormation pilhas, consulte Como trabalhar com pilhas no Guia do AWS CloudFormation usuário.
Como as pilhas de CDK são implementadas por meio de AWS CloudFormation pilhas, AWS CloudFormation cotas e limitações se aplicam. Para saber mais, consulte AWS CloudFormation cotas.
Definindo pilhas
As pilhas são definidas dentro do contexto de um aplicativo. Você define uma pilha usando a Stack
classe da AWS Construct Library. As pilhas podem ser definidas de qualquer uma das seguintes formas:
-
Diretamente dentro do escopo do aplicativo.
-
Indiretamente por qualquer construção dentro da árvore.
O exemplo a seguir define um aplicativo CDK que contém duas pilhas:
O exemplo a seguir é um padrão comum para definir uma pilha em um arquivo separado. Aqui, estendemos ou herdamos a Stack
classe e definimos um construtor que aceita scope
id
, e. props
Em seguida, invocamos o construtor Stack
da classe base usando super
com o recebido scope
id
, e. props
O exemplo a seguir declara uma classe de pilha chamada MyFirstStack
que inclui um único bucket do Amazon S3.
No entanto, esse código declarou apenas uma pilha. Para que a pilha seja realmente sintetizada em um AWS CloudFormation modelo e implantada, ela deve ser instanciada. E, como todas as construções de CDK, ela deve ser instanciada em algum contexto. Esse App
é esse contexto.
Se você estiver usando o modelo de AWS CDK desenvolvimento padrão, suas pilhas serão instanciadas no mesmo arquivo em que você instancia o objeto. App
A API de pilha
O objeto Stack fornece uma API avançada, incluindo o seguinte:
-
Stack.of(construct)
— Um método estático que retorna a pilha na qual uma construção é definida. Isso é útil se você precisar interagir com uma pilha de dentro de uma construção reutilizável. A chamada falhará se uma pilha não puder ser encontrada no escopo. -
stack.stackName
(Python:stack_name
) — Retorna o nome físico da pilha. Conforme mencionado anteriormente, todas as AWS CDK pilhas têm um nome físico que AWS CDK pode ser resolvido durante a síntese. -
stack.region
estack.account
— Retorne a AWS região e a conta, respectivamente, nas quais essa pilha será implantada. Essas propriedades retornam uma das seguintes:-
A conta ou região especificada explicitamente quando a pilha foi definida
-
Um token codificado em string que segue os AWS CloudFormation pseudoparâmetros da conta e da região para indicar que essa pilha é independente do ambiente
Para obter informações sobre como os ambientes são determinados para pilhas, consulteAmbientes do.
-
-
stack.addDependency(stack)
(Python:stack.add_dependency(stack)
— Pode ser usado para definir explicitamente a ordem de dependência entre duas pilhas. Essa ordem é respeitada pelo cdk deploy comando ao implantar várias pilhas ao mesmo tempo. -
stack.tags
— Retorna um TagManagerque você pode usar para adicionar ou remover tags no nível da pilha. Esse gerenciador de tags marca todos os recursos da pilha e também marca a própria pilha quando ela é criada por meio dela. AWS CloudFormation -
stack.partition
,stack.urlSuffix
(Python:url_suffix
), (stack.stackId
Python:) e (stack.notificationArn
Python:stack_id
notification_arn
) — Retorna tokens que se resolvem nos respectivos AWS CloudFormation pseudoparâmetros, como.{ "Ref": "AWS::Partition" }
Esses tokens são associados ao objeto de pilha específico para que a AWS CDK estrutura possa identificar referências de pilha cruzada. -
stack.availabilityZones
(Python:availability_zones
) — Retorna o conjunto de zonas de disponibilidade disponíveis no ambiente em que essa pilha é implantada. Para pilhas independentes do ambiente, isso sempre retorna uma matriz com duas zonas de disponibilidade. Para pilhas específicas do ambiente, ele AWS CDK consulta o ambiente e retorna o conjunto exato de zonas de disponibilidade disponíveis na região que você especificou. -
stack.parseArn(arn)
estack.formatArn(comps)
(Python:parse_arn
,format_arn
) — Pode ser usado para trabalhar com Amazon Resource Names (ARNs). -
stack.toJsonString(obj)
(Python:to_json_string
) — Pode ser usado para formatar um objeto arbitrário como uma string JSON que pode ser incorporada em um modelo. AWS CloudFormation O objeto pode incluir tokens, atributos e referências, que só são resolvidos durante a implantação. -
stack.templateOptions
(Python:template_options
) — Use para especificar opções de AWS CloudFormation modelo, como Transformação, Descrição e Metadados, para sua pilha.
Trabalhar com pilhas do
Para listar todas as pilhas em um aplicativo CDK, use o cdk ls comando. O exemplo anterior produziria o seguinte:
stack1 stack2
As pilhas são implantadas como parte de uma AWS CloudFormation pilha em um ambiente. AWS O ambiente abrange uma área específica Conta da AWS Região da AWS e.
Quando você executa o cdk synth comando para um aplicativo com várias pilhas, o conjunto de nuvem inclui um modelo separado para cada instância da pilha. Mesmo que as duas pilhas sejam instâncias da mesma classe, elas são AWS CDK emitidas como dois modelos individuais.
Você pode sintetizar cada modelo especificando o nome da pilha no comando. cdk synth O exemplo a seguir sintetiza o modelo para stack1.
$
cdk synthstack1
Essa abordagem é conceitualmente diferente de como os AWS CloudFormation modelos são normalmente usados, em que um modelo pode ser implantado várias vezes e parametrizado por meio de parâmetros.AWS CloudFormation Embora AWS CloudFormation os parâmetros possam ser definidos no AWS CDK, eles geralmente são desencorajados porque AWS CloudFormation os parâmetros são resolvidos somente durante a implantação. Isso significa que você não pode determinar o valor deles em seu código.
Por exemplo, para incluir condicionalmente um recurso em seu aplicativo com base em um valor de parâmetro, você deve configurar uma AWS CloudFormation condição e marcar o recurso com ela. AWS CDK Adota uma abordagem em que modelos concretos são resolvidos no momento da síntese. Portanto, você pode usar uma instrução if para verificar o valor e determinar se um recurso deve ser definido ou se algum comportamento deve ser aplicado.
nota
Isso AWS CDK fornece o máximo de resolução possível durante o tempo de síntese para permitir o uso idiomático e natural de sua linguagem de programação.
Como qualquer outra construção, as pilhas podem ser compostas em grupos. O código a seguir mostra um exemplo de um serviço que consiste em três pilhas: um plano de controle, um plano de dados e pilhas de monitoramento. A construção do serviço é definida duas vezes: uma para o ambiente beta e outra para o ambiente de produção.
Eventualmente, esse AWS CDK aplicativo consiste em seis pilhas, três para cada ambiente:
$
cdk ls
betacpDA8372D3 betadataE23DB2BA betamon632BD457 prodcp187264CE proddataF7378CE5 prodmon631A1083
Os nomes físicos das AWS CloudFormation pilhas são determinados automaticamente AWS CDK com base no caminho de construção da pilha na árvore. Por padrão, o nome de uma pilha é derivado do ID de construção do Stack
objeto. No entanto, você pode especificar um nome explícito usando a stackName
prop (em Python,stack_name
), da seguinte maneira.
Pilhas aninhadas
A NestedStackconstrução oferece uma maneira de contornar o limite de AWS CloudFormation 500 recursos para pilhas. Uma pilha aninhada conta como apenas um recurso na pilha que a contém. No entanto, ele pode conter até 500 recursos, incluindo pilhas aninhadas adicionais.
O escopo de uma pilha aninhada deve ser uma construção Stack
ouNestedStack
. A pilha aninhada não precisa ser declarada lexicamente dentro de sua pilha principal. É necessário apenas passar a pilha principal como o primeiro parâmetro (scope
) ao instanciar a pilha aninhada. Além dessa restrição, definir construções em uma pilha aninhada funciona exatamente da mesma forma que em uma pilha comum.
No momento da síntese, a pilha aninhada é sintetizada em seu próprio AWS CloudFormation modelo, que é carregado no bucket de teste na implantação AWS CDK
. As pilhas aninhadas são vinculadas à pilha principal e não são tratadas como artefatos de implantação independentes. Eles não estão listados por cdk list
e não podem ser implantados porcdk
deploy
.
Atenção
As alterações na postura de segurança não são exibidas antes da implantação das pilhas aninhadas. Essas informações são exibidas somente para pilhas de nível superior.