Implemente AWS CDK aplicativos - 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á.

Implemente AWS CDK aplicativos

Uma AWS Cloud Development Kit (AWS CDK) implantação é o processo de provisionamento de sua infraestrutura. AWS

Como as AWS CDK implantações funcionam

Ele AWS CDK utiliza o AWS CloudFormation serviço para realizar implantações. Antes de implantar, você sintetiza suas CDK pilhas. Isso cria um CloudFormation modelo e artefatos de implantação para cada CDK pilha no seu aplicativo. As implantações são iniciadas a partir de uma máquina de desenvolvimento local ou de um ambiente de integração e entrega contínuas (CI/CD). Durante a implantação, os ativos são enviados para os recursos inicializados e o CloudFormation modelo é enviado para CloudFormation provisionar seus recursos. AWS

Para que uma implantação seja bem-sucedida, é necessário o seguinte:

  • A interface de linha de AWS CDK comando (AWS CDK CLI) deve ser fornecida com permissões válidas.

  • O AWS ambiente deve ser inicializado.

  • Eles AWS CDK devem conhecer os recursos inicializados para os quais fazer upload de ativos.

Pré-requisitos para implantações CDK

Antes de implantar um AWS CDK aplicativo, você deve concluir o seguinte:

  • Configure as credenciais de segurança para o. CDK CLI

  • Inicialize seu AWS ambiente.

  • Configure um AWS ambiente para cada uma das suas CDK pilhas.

  • Desenvolva seu CDK aplicativo.

Configurar credenciais de segurança

Para usar o CDK CLI para interagir AWS, você deve configurar as credenciais de segurança em sua máquina local. Para obter instruções, consulte Configure as credenciais de segurança para o AWS CDKCLI.

Inicialize seu ambiente AWS

Uma implantação está sempre associada a um ou mais AWS ambientes. Antes que você possa implantar, o ambiente deve primeiro ser inicializado. O bootstrapping provisiona recursos em seu ambiente que ele CDK usa para realizar e gerenciar implantações. Esses recursos incluem um bucket do Amazon Simple Storage Service (Amazon S3) e um repositório Amazon Elastic Container Registry (ECRAmazon) para armazenar e gerenciar ativos. Esses recursos também incluem AWS Identity and Access Management (IAM) funções que são usadas para fornecer permissões durante o desenvolvimento e a implantação.

Recomendamos que você use o AWS CDK comando Command Line Interface (AWS CDK CLI) cdk bootstrap para inicializar seu ambiente. Você pode personalizar a inicialização ou criar manualmente esses recursos em seu ambiente, se necessário. Para obter instruções, consulte Inicialize seu ambiente para uso com o AWS CDK.

Configurar AWS ambientes

Cada CDK pilha deve estar associada a um ambiente para determinar onde a pilha é implantada. Para obter instruções, consulte Configure ambientes para usar com o AWS CDK.

Desenvolva seu CDK aplicativo

Dentro de um CDK projeto, você cria e desenvolve seu CDK aplicativo. No seu aplicativo, você cria uma ou mais CDK pilhas. Em suas pilhas, você importa e usa construções da AWS Construct Library para definir sua infraestrutura. Antes de implantar, seu CDK aplicativo deve conter pelo menos uma pilha.

CDKsíntese de aplicativos

Para realizar a síntese, recomendamos que você use o CDK CLI cdk synth comando. O cdk deploy comando também realizará a síntese antes de iniciar a implantação. No entanto, usandocdk synth, você pode validar seu CDK aplicativo 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. 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 obter instruções, consulte Configurar e realizar a síntese CDK da pilha.

Para que seu CloudFormation modelo sintetizado seja implantado com êxito em seu ambiente, ele deve ser compatível com a forma como seu ambiente foi inicializado. Por exemplo, seu CloudFormation modelo 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 CDK comportamento, como personalizar a inicialização ou a síntese, o comportamento da CDK implantação poderá variar.

O ciclo de vida do aplicativo

Quando você realiza a síntese, seu CDK aplicativo passa pelas seguintes fases, conhecidas como ciclo de vida do aplicativo:

Construção (ou inicialização)

Seu código instancia todas as construções definidas e, em seguida, as vincula. Nesse estágio, todas as construções (aplicativo, pilhas e suas construções secundárias) são instanciadas e a cadeia de construtores é executada. A maior parte do código do seu aplicativo é executada nesse estágio.

Preparação

Todas as construções que implementaram o prepare método 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 gancho de “preparação” e geralmente não é recomendado. Tenha muito cuidado ao alterar a árvore de construção durante essa fase, pois a ordem das operações pode afetar o comportamento.

Durante essa fase, depois que a árvore de construção for construída, todos os aspectos que você configurou também serão aplicados.

Validação

Todas as construções que implementaram o validate método podem se validar para garantir que estejam em um estado que seja implantado corretamente. Você será notificado sobre quaisquer falhas de validação que ocorram durante essa fase. Geralmente, recomendamos realizar a validação o mais rápido possível (geralmente assim que você receber alguma informação) e lançar 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

Essa é a etapa final da execução do seu CDK aplicativo. É acionado por uma chamada paraapp.synth(), percorre a árvore de construção e invoca o synthesize método em todas as construções. As construções implementadas synthesize podem participar da síntese e produzir artefatos de implantação na montagem de nuvem resultante. Esses artefatos incluem CloudFormation modelos, pacotes de AWS Lambda aplicativos, ativos de arquivos e Docker imagens e outros artefatos de implantação. Na maioria dos casos, você não precisará implementar o synthesize método.

Executando seu aplicativo

A CDK CLI necessidade de saber como executar seu CDK aplicativo. Se você criou o projeto a partir de um modelo usando o cdk init comando, o cdk.json arquivo do seu aplicativo inclui uma app chave. Essa chave especifica o comando necessário para o idioma 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.

TypeScript
{ "app": "npx ts-node --prefer-ts-exts bin/my-app.ts" }
JavaScript
{ "app": "node bin/my-app.js" }
Python
{ "app": "python app.py" }
Java
{ "app": "mvn -e -q compile exec:java" }
C#
{ "app": "dotnet run -p src/MyApp/MyApp.csproj" }
Go
{ "app": "go mod download && go run my-app.go" }

Se você não criou seu projeto usando o. CDK CLI ou se quiser substituir a linha de comando fornecida emcdk.json, você pode fornecer a --app opção ao executar o cdk comando.

$ cdk --app 'executable' cdk-command ...

A ferramenta executable parte do comando indica o comando que deve ser executado para executar seu CDK aplicativo. Use aspas conforme mostrado, pois esses comandos contêm espaços. A ferramenta cdk-command é um subcomando como synth or deploy que informa o CDK CLI que você quer fazer com seu aplicativo. Siga isso com todas as opções adicionais necessárias para esse subcomando.

Eles também CDK CLI podem interagir diretamente com um conjunto de nuvem já sintetizado. Para fazer isso, passe o diretório no qual o conjunto de nuvem está armazenado--app. O exemplo a seguir lista as pilhas definidas no conjunto de nuvem armazenado em./my-cloud-assembly.

$ cdk --app ./my-cloud-assembly ls

Montagens em nuvem

A chamada para app.synth() é o que diz AWS CDK para sintetizar uma montagem em 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 AWS CloudFormation modelo para cada pilha em seu aplicativo. Também inclui uma cópia de todos os ativos de arquivo ou Docker imagens que você referenciar no seu aplicativo.

Consulte a especificação de montagem em nuvem para obter detalhes sobre como as montagens em nuvem são formatadas.

Para interagir com o conjunto de nuvem que seu AWS CDK aplicativo cria, você normalmente usa AWS CDK CLI o. No entanto, qualquer ferramenta que possa ler o formato de montagem em nuvem pode ser usada para implantar seu aplicativo.

Implantar o aplicativo

Para implantar seu aplicativo, recomendamos que você use o CDK CLI cdk deploy comando para iniciar implantações ou configurar implantações automatizadas.

Quando você executacdk deploy, ele CDK CLI inicia a preparação cdk synth para a implantação. O diagrama a seguir ilustra o ciclo de vida do aplicativo no contexto de uma implantação:

Fluxograma do ciclo de vida do AWS CDK aplicativo.

Durante a implantação, ele CDK CLI pega a montagem da nuvem produzida pela síntese e a implanta em um AWS ambiente. Os ativos são enviados para o Amazon S3 e para a Amazon ECR e o CloudFormation modelo é enviado AWS CloudFormation para implantação.

Quando a fase de AWS CloudFormation implantação começa, seu CDK aplicativo já terminou de ser executado e foi encerrado. Isso ocasiona o seguinte:

  • O CDK aplicativo 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 AWS CloudFormation modelo como um recurso personalizado. Para obter mais informações sobre como adicionar um recurso personalizado ao seu aplicativo, consulte o AWS CloudFormation módulo ou o exemplo de recurso personalizado. Você também pode configurar o módulo Triggers para executar código durante as implantações.

  • Talvez o CDK aplicativo precise funcionar com valores que não podem ser conhecidos no momento em que é executado. Por exemplo, se o AWS CDK aplicativo define um bucket do Amazon S3 com um nome gerado automaticamente e você recupera o atributo (bucket.bucketNamePython:bucket_name), esse valor não é o nome do bucket implantado. Em vez disso, você obtém um Token valor. Para determinar se um valor específico está disponível, chame cdk.isUnresolved(value) (Python:is_unresolved). Para mais detalhes, consulte Tokens e o AWS CDK.

Permissões de implantação

Antes que a implantação possa ser executada, 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 inicialização padrão e o sintetizador de pilha:

Fluxograma do processo de AWS CDK implantação padrão.
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, CDK CLI ele é executado cdk synth quando você correcdk deploy. Durante a síntese, a AWS identidade pressupõe LookupRole a realização de pesquisas de contexto no AWS ambiente.

As permissões são estabelecidas

Primeiro, as credenciais de segurança do ator são usadas para autenticar AWS e obter a primeira IAM identidade 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 obter mais informações, consulte Configure as credenciais de segurança para o AWS CDKCLI. Para agentes de serviços, por exemplo CodePipeline, uma função de IAM execução é assumida e usada.

Em seguida, as IAM funções criadas em seu AWS ambiente durante a inicialização são usadas para estabelecer permissões para realizar as ações necessárias para a implantação. Para obter mais informações sobre essas funções e para o que elas concedem permissões, consulteIAMfunções criadas durante a inicialização. Esse processo inclui o seguinte:

  • A AWS identidade assume a DeploymentActionRole função e a CloudFormationExecutionRole passa para CloudFormation, garantindo que ela CloudFormation assuma a função ao realizar qualquer ação em seu AWS ambiente. DeploymentActionRoleconcede permissão para realizar implantações em seu ambiente e CloudFormationExecutionRole determina quais ações CloudFormation podem ser executadas.

  • A AWS identidade assume oFilePublishingRole, que determina as ações que podem ser executadas no bucket do Amazon S3 criado durante a inicialização.

  • A AWS identidade assume oImagePublishingRole, que determina as ações que podem ser executadas no ECR repositório da Amazon criado durante a inicialização.

  • Se necessário, a AWS identidade pressupõe LookupRole a realização de pesquisas de contexto no AWS ambiente. 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 de versão do bootstrap para confirmar o número da versão do bootstrap. 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 inicializados e o CloudFormation modelo produzido na síntese é implantado usando o CloudFormation serviço como uma CloudFormation pilha para provisionar seus recursos.