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.
Implantar aplicativos do AWS CDK
Uma implantação do AWS Cloud Development Kit (AWS CDK) é o processo de provisionamento de sua infraestrutura na AWS.
Como funcionam as implantações do AWS CDK
O AWS CDK utiliza o serviço do AWS CloudFormation para realizar implantações. Antes de implantar, você sintetiza suas pilhas do CDK. Isso cria um modelo do CloudFormation e artefatos de implantação para cada pilha do CDK em seu aplicativo. As implantações são iniciadas a partir de uma máquina de desenvolvimento local ou a partir de um ambiente de integração e entrega contínuas (CI/CD). Durante a implantação, os ativos são enviados para os recursos que receberam o bootstrapping e o modelo do CloudFormation é enviado ao CloudFormation para provisionar seus recursos da AWS.
Para que uma implantação seja bem-sucedida, é necessário o seguinte:
-
A interface de linha de comandos do AWS CDK (AWS CDK CLI) deve ser fornecida com permissões válidas.
-
O ambiente da AWS deve ser receber o bootstrapping.
-
O AWS CDK devem conhecer os recursos que receberam o bootstrapping para os quais o upload de ativos é feito.
Pré-requisitos para implantações do CDK
Antes de implantar um aplicativo do AWS CDK, é necessário concluir as seguintes etapas:
-
Configure as credenciais de segurança para o CDK CLI.
-
Faça o bootstrapping em seu ambiente da AWS.
-
Configure um ambiente da AWS para cada uma das suas pilhas do CDK.
-
Desenvolva seu aplicativo do CDK.
Configurar credenciais de segurança
Para usar o CDK CLI para interagir com a AWS, você deve configurar as credenciais de segurança em seu computador local. Para instruções, consulte Configurar as credenciais de segurança para o AWS CDK CLI.
Fazer bootstrapping em seu ambiente da AWS
Uma implantação está sempre associada a um ou mais ambientes da AWS. Antes de implantar, o ambiente deve primeiro receber o bootstrapping. O bootstrapping provisiona recursos em seu ambiente que o CDK usa para realizar e gerenciar implantações. Esses recursos incluem um bucket do Amazon Simple Storage Service (Amazon S3) e um repositório do Amazon Elastic Container Registry (Amazon ECR) para armazenar e gerenciar ativos. Esses recursos também incluem funções do AWS Identity and Access Management (IAM) que são usadas para fornecer permissões durante o desenvolvimento e a implantação.
Recomendamos que você use o comando cdk bootstrap
da interface de linha de comandos do AWS CDK (AWS CDK CLI) para fazer bootstrapping em seu ambiente. Você pode personalizar o bootstrapping ou criar manualmente esses recursos em seu ambiente, se necessário. Para instruções, consulte Fazer o bootstrapping em seu ambiente para uso com o AWS CDK.
Configurar ambientes da AWS
Cada pilha do CDK deve estar associada a um ambiente para determinar onde a pilha é implantada. Para instruções, consulte Configurar ambientes para usar com o AWS CDK.
Desenvolver seu aplicativo do CDK
Em um projeto do CDK, você cria e desenvolve seu aplicativo do CDK. No seu aplicativo, você cria uma ou mais pilhas do CDK. Em suas pilhas, você importa e usa constructos da Biblioteca de Constructos da AWS para definir sua infraestrutura. Antes que você possa implantar, seu aplicativo CDK deve conter pelo menos uma pilha.
Síntese do aplicativo CDK
Para realizar a síntese, recomendamos que você use o comando cdk synth
do CDK CLI. O comando cdk
deploy
também realizará a síntese antes de iniciar a implantação. No entanto, ao usar o cdk
synth
, você pode validar seu aplicativo do CDK e detectar erros antes de iniciar a implantação.
O comportamento da síntese é determinado pelo sintetizador de pilha que você configura para sua pilha do CDK. Se você não configurar um sintetizador, DefaultStackSynthesizer
será usado. Você também pode configurar e personalizar a síntese para atender às suas necessidades. Para instruções, consulte Configurar e realizar a síntese de pilhas do CDK.
Para que seu modelo sintetizado do CloudFormation seja implantado em seu ambiente com êxito, ele deve ser compatível com a forma como seu ambiente recebeu o bootstrapping. Por exemplo, seu modelo do CloudFormation deve especificar o bucket correto do Amazon S3 no qual implantar ativos. Se você usar o método padrão de inicializar seu ambiente, o sintetizador de pilha padrão funcionará. Se você personalizar o comportamento do CDK, como personalizar o bootstrapping ou a síntese, o comportamento de implantação do CDK poderá variar.
O ciclo de vida do aplicativo
Quando você realiza a síntese, seu aplicativo do CDK passa pelas seguintes fases, conhecidas como ciclo de vida do aplicativo:
- Construção (ou inicialização)
-
Seu código instancia todos os constructos definidos e, em seguida, vincula-os. Nesse estágio, todos os constructos (aplicativo, pilhas e seus constructos secundários) são instanciados e a cadeia de construtores é executada. A maior parte do código do seu aplicativo é executada nesse estágio.
- Preparação
-
Todos os constructos que implementaram o método
prepare
participam de uma rodada final de modificações, para configurar seu estado final. A fase de preparação acontece automaticamente. Como usuário, você não vê nenhum feedback dessa fase. É raro precisar usar o hook de “preparação” e geralmente não é recomendado. Tenha muito cuidado ao alterar a árvore de constructos durante essa fase, pois a ordem das operações pode afetar o comportamento.Durante essa fase, depois que a árvore de constructos for construída, todos os aspectos que você configurou também serão aplicados.
- Validação
-
Todos os constructos que implementaram o método
validate
podem se validar para garantir que estejam em um estado que será implantado corretamente. Você será notificado sobre quaisquer falhas de validação que ocorram durante essa fase. Geralmente, recomendamos a realização da validação o mais rápido possível (geralmente assim que você receber alguma informação) e o lançamento de exceções o mais rápido possível. A validação antecipada melhora a confiabilidade, pois os rastreamentos de pilha serão mais precisos e garantirão que seu código possa continuar sendo executado com segurança. - Síntese
-
Esse é o estágio final da execução do seu aplicativo do CDK. É acionado por uma chamada para
app.synth()
, percorre a árvore de constructos e invoca o métodosynthesize
em todos os constructos. Os constructos que implementamsynthesize
podem participar da síntese e produzir artefatos de implantação no conjunto de nuvem resultante. Esses artefatos incluem modelos do CloudFormation, pacotes de aplicativos do AWS Lambda, ativos de arquivos e imagens do Docker e outros artefatos de implantação. Na maioria dos casos, não é preciso implementar o métodosynthesize
.
Executar seu aplicativo
O CDK CLI precisa saber como executar seu aplicativo do CDK. Se você criou o projeto a partir de um modelo usando o comando cdk init
, o arquivo cdk.json
do seu aplicativo inclui uma chave app
. Essa chave especifica o comando necessário para a linguagem em que o aplicativo está escrito. Se sua linguagem exigir compilação, a linha de comando executará essa etapa antes de executar o aplicativo automaticamente.
Se você não criou seu projeto usando o CDK CLI, ou se quiser substituir a linha de comando fornecida em cdk.json
, você pode fornecer a opção --app
ao executar o comando cdk
.
$
cdk --app 'executable
'cdk-command
...
A parte executável
do comando indica o comando que deve ser executado para executar seu aplicativo do CDK. Use aspas conforme mostrado, pois esses comandos contêm espaços. O comando cdk-command
é um subcomando, como synth
ou deploy
, que informa ao CDK CLI o que você quer fazer com seu aplicativo. Siga isso com todas as opções adicionais necessárias para esse subcomando.
O CDK CLI também pode interagir diretamente com um conjunto de nuvem já sintetizado. Para fazer isso, passe o diretório no qual o conjunto de nuvem está armazenado em --app
. O exemplo a seguir lista as pilhas definidas no conjunto de nuvem armazenado em ./my-cloud-assembly
.
$
cdk --app./my-cloud-assembly
ls
Conjuntos de nuvem
A chamada para app.synth()
é o que diz ao AWS CDK para sintetizar um conjunto de nuvem a partir de um aplicativo. Normalmente, você não interage diretamente com os conjuntos de nuvem. São arquivos que incluem tudo o que é necessário para implantar seu aplicativo em um ambiente de nuvem. Por exemplo, ele inclui um modelo do AWS CloudFormation para cada pilha em seu aplicativo. Também inclui uma cópia de todos os ativos de arquivo ou imagens do Docker que você referenciar no seu aplicativo.
Consulte a especificação de conjunto de nuvem
Para interagir com o conjunto de nuvem que seu aplicativo do AWS CDK cria, você normalmente usa o AWS CDK CLI. No entanto, qualquer ferramenta que possa ler o formato de conjunto de nuvem pode ser usada para implantar seu aplicativo.
Implantar o aplicativo
Para implantar seu aplicativo, recomendamos que você use o comando do CDK CLI cdk deploy
para iniciar implantações ou configurar implantações automatizadas.
Quando você executa cdk deploy
, o CDK CLI inicia o cdk synth
para se preparar para a implantação. O diagrama a seguir ilustra o ciclo de vida do aplicativo no contexto de uma implantação:
Durante a implantação, o CDK CLI pega o conjunto de nuvem produzido pela síntese e o implanta em um ambiente da AWS. Os ativos são enviados para o Amazon S3 e o Amazon ECR, e o modelo do CloudFormation é enviado ao AWS CloudFormation para implantação.
Quando a fase de implantação do AWS CloudFormation começa, seu aplicativo do CDK já terminou de ser executado e foi encerrado. Isso ocasiona o seguinte:
-
O aplicativo do CDK não pode responder a eventos que acontecem durante a implantação, como a criação de um recurso ou o término de toda a implantação. Para executar o código durante a fase de implantação, você deve injetá-lo no modelo do AWS CloudFormation como um recurso personalizado. Para obter mais informações sobre como adicionar um recurso personalizado ao seu aplicativo, consulte o módulo do AWS CloudFormation ou o exemplo de recurso personalizado
. Você também pode configurar o módulo Acionadores para executar código durante as implantações. -
Talvez o aplicativo CDK precise funcionar com valores que não podem ser conhecidos no momento em que é executado. Por exemplo, se o aplicativo do AWS CDK define um bucket do Amazon S3 com um nome gerado automaticamente e você recupera o atributo
bucket.bucketName
(Python:bucket_name
), esse valor não é o nome do bucket implantado. Em vez disso, você obtém um valor deToken
. Para determinar se um valor específico está disponível, chamecdk.isUnresolved(value)
(Python:is_unresolved
). Para mais detalhes, consulte Tokens e o AWS CDK.
Permissões de implantação
Antes da execução da implantação, as permissões devem ser estabelecidas. O diagrama a seguir ilustra as permissões que são usadas durante uma implantação padrão, ao usar o processo de bootstrapping padrão e o sintetizador de pilha:
- O ator inicia a implantação
-
As implantações são iniciadas por um ator, usando o CDK CLI. Um ator pode ser uma pessoa ou um serviço como AWS CodePipeline.
Se necessário, o CDK CLI executa o
cdk synth
quando você executa ocdk deploy
. Durante a síntese, a identidade da AWS pressupõe queLookupRole
realiza pesquisas de contexto no ambiente da AWS. - As permissões são estabelecidas
-
Primeiro, as credenciais de segurança do ator são usadas para se autenticar na AWS e obter a primeira identidade do IAM no processo. Para atores humanos, a forma como as credenciais de segurança são configuradas e obtidas depende de como você ou sua organização gerencia os usuários. Para ter mais informações, consulte Configurar as credenciais de segurança para o AWS CDK CLI. Para agentes de serviços, como o CodePipeline, um perfil de execução do IAM é assumido e usado.
Em seguida, os perfis do IAM criados em seu ambiente da AWS durante o bootstrapping são usadas para estabelecer permissões para realizar as ações necessárias para a implantação. Para obter mais informações sobre esses perfis e quais são as suas permissões, consulte Perfis do IAM criados durante o bootstrapping. Esse processo inclui o seguinte:
-
A identidade da AWS assume o perfil
DeploymentActionRole
e o passa o perfilCloudFormationExecutionRole
para o CloudFormation, garantindo que o CloudFormation assuma o perfil ao realizar qualquer ação em seu ambiente da AWS. ODeploymentActionRole
concede permissão para realizar implantações em seu ambiente eCloudFormationExecutionRole
determina quais ações o CloudFormation pode realizar. -
A identidade da AWS assume o
FilePublishingRole
, que determina as ações que podem ser executadas no bucket do Amazon S3 criado durante o bootstrapping. -
A identidade da AWS assume o
ImagePublishingRole
, que determina as ações que podem ser executadas no repositório do Amazon ECR criado durante o bootstrapping. -
Se necessário, a identidade da AWS pressupõe que
LookupRole
realiza pesquisas de contexto no ambiente da AWS. Essa ação também pode ser executada durante a síntese do modelo.
-
- A implantação é executada
-
Durante a implantação, o CDK CLI lê o parâmetro da versão do bootstrap para confirmar o número da versão do bootstrap. O AWS CloudFormation também lê esse parâmetro no momento da implantação para confirmar. Se as permissões em todo o fluxo de trabalho de implantação forem válidas, a implantação será executada. Os ativos são enviados para os recursos que receberam o bootstrapping e o modelo do CloudFormation produzido na síntese é implantado usando o serviço como uma pilha do CloudFormation para provisionar seus recursos.