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.
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á.
Personalizar a síntese de pilhas do CDK
É possível personalizar a síntese de pilhas do kit de desenvolvimento em nuvem da AWS (CDK da AWS) modificando o sintetizador padrão, usando outros sintetizadores integrados disponíveis ou criar seu próprio sintetizador.
O AWS CDK inclui os sintetizadores integrados a seguir que podem ser usado para personalizar o comportamento da síntese:
-
DefaultStackSynthesizer: se um sintetizador não for especificado, este será usado automaticamente. Ele oferece suporte a implantações entre contas e implantações usando o constructo do CDK Pipelines. Seu contrato de bootstrapping exige um bucket do Amazon S3 existente com um nome conhecido, um repositório do Amazon ECR existente com um nome conhecido e cinco perfis do IAM existentes com nomes conhecidos. O modelo de bootstrapping padrão atende a esses requisitos. -
CliCredentialsStackSynthesizer: o contrato de bootstrapping desse sintetizador exige um bucket do Amazon S3 existente e um repositório do Amazon ECR existente. Não é necessário ter um perfil do IAM. Para realizar implantações, esse sintetizador depende das permissões do usuário da CLI do CDK e é recomendado para organizações que desejem restringir as credenciais de implantação do IAM. Esse sintetizador não é compatível com implantações entre contas ou CDK Pipelines. -
LegacyStackSynthesizer– este sintetizador emula o comportamento de síntese do CDK v1. Seu contrato de bootstrapping exige um bucket do Amazon S3 existente com um nome arbitrário e espera que as localizações dos ativos sejam passadas como parâmetros de pilha do CloudFormation. Se você usar esse sintetizador, deverá usar a CLI do CDK para realizar a implantação.
Se nenhum desses sintetizadores integrados for apropriado para seu caso de uso, é possível escrever seu próprio sintetizador como uma classe que implemente IStackSynthesizer ou analisar os sintetizadores
Personalizar o DefaultStackSynthesizer
O DefaultStackSynthesizer é o sintetizador padrão para o AWS CDK. Ele foi projetado para permitir implantações entre contas de aplicações do CDK, bem como a implantação de aplicações do CDK a partir de um sistema de CI/CD que não tem suporte explícito para o AWS CDK, mas oferece suporte a implantações regulares do CloudFormation, como AWS CodePipeline. Esse sintetizador é a melhor opção para a maioria dos casos de uso.
Contrato de bootstrapping DefaultStackSynthesizer
DefaultStackSynthesizer requer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante o bootstrapping:
| Recurso de bootstrap | Descrição | Nome padrão do recurso esperado | Finalidade |
|---|---|---|---|
|
Bucket do Amazon S3 |
Bucket de preparação |
cdk-hnb659fds-assets-<ACCOUNT>-<REGION> |
Armazena ativos de arquivos. |
|
Repositório do Amazon ECR |
Repositório de preparação |
cdk-hnb659fds-container-assets-<ACCOUNT>-<REGION> |
Armazena e gerencia ativos de imagem do Docker. |
|
Perfil do IAM |
Perfil de implantação |
cdk-hnb659fds-deploy-role-<ACCOUNT>-<REGION> |
Assumido pela CLI do CDK e, potencialmente, pelo CodePipeline para assumir outros perfis e iniciar a implantação do AWS CloudFormation. A política de confiança desse perfil controla quem pode implantar com o AWS CDK nesse ambiente da AWS. |
|
Perfil do IAM |
Perfil de execução do AWS CloudFormation |
cdk-hnb659fds-cfn-exec-role-<ACCOUNT>-<REGION> |
Esse perfil é usado pelo AWS CloudFormation para realizar a implantação. As políticas desse perfil controlam quais operações a implantação do CDK pode realizar. |
|
Perfil do IAM |
Perfil de pesquisa |
cdk-hnb659fds-lookup-role-<ACCOUNT>-<REGION> |
Esse perfil é usado quando a CLI do CDK precisa realizar pesquisas de contexto ambiental. A política de confiança desse perfil controla quem pode pesquisar informações no ambiente. |
|
Perfil do IAM |
Perfil de publicação de arquivos |
cdk-hnb659fds-file-publishing-role-<ACCOUNT>-<REGION> |
Esse perfil é usado para fazer o carregamento de ativos no bucket de preparação do Amazon S3. É assumido a partir do perfil de implantação. |
|
Perfil do IAM |
Perfil de publicação de imagens |
cdk-hnb659fds-image-publishing-role-<ACCOUNT>-<REGION> |
Esse perfil é usado para fazer o carregamento de imagens do Docker no repositório de teste do Amazon ECR. É assumido a partir do perfil de implantação. |
|
Parâmetro do SSM |
Parâmetro de versão de bootstrap |
/cdk-bootstrap/hnb659fds/<version> |
A versão do modelo de bootstrap. Ele é usado pelo modelo de bootstrapping e pela CLI do CDK para validar os requisitos. |
Uma forma de personalizar a síntese da pilha do CDK é modificando o DefaultStackSynthesizer. É possível personalizar esse sintetizador para uma única pilha do CDK usando a propriedade synthesizer da sua instância Stack. Você também pode modificar DefaultStackSynthesizer em todas as pilhas de sua aplicação CDK usando a propriedade defaultStackSynthesizer da sua instância App.
Alterar o qualificador
O qualificador é adicionado ao nome dos recursos criados durante o bootstrapping. Por padrão, esse valor é hnb659fds. Ao modificar o qualificador durante o bootstrapping, você precisa personalizar a síntese da pilha do CDK para usar o mesmo qualificador.
Para alterar o qualificador, configure a propriedade qualifier do DefaultStackSynthesizer ou configure o qualificador como uma chave de contexto no arquivo cdk.json do seu projeto do CDK.
Veja a seguir um exemplo de como configurar a propriedade qualifier do DefaultStackSynthesizer:
exemplo
Veja a seguir um exemplo de como configurar o qualificador como uma chave de contexto em cdk.json:
{ "app": "...", "context": { "@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER" } }
Alterar nomes de recursos
Todas as outras propriedades DefaultStackSynthesizer estão relacionadas aos nomes dos recursos no modelo de bootstrap. Você só precisa fornecer qualquer uma dessas propriedades se tiver modificado o modelo de bootstrapping e alterado os nomes dos recursos ou o esquema de nomenclatura.
Todas as propriedades aceitam os espaços reservados especiais ${Qualifier}, ${AWS::Partition}, ${AWS::AccountId} e ${AWS::Region}. Esses espaços reservados são substituídos pelos valores do parâmetro qualifier e da partição AWS, ID da conta e valores da região da AWS do ambiente da pilha, respectivamente.
O exemplo a seguir mostra as propriedades mais usadas para DefaultStackSynthesizer junto com seus valores padrão, como se você estivesse instanciando o sintetizador. Para obter uma lista completa, consulte DefaultStackSynthesizerProps:
exemplo
Use CliCredentialsStackSynthesizer
Para modificar as credenciais de segurança usadas para fornecer permissões durante as implantações do CDK, você pode personalizar a síntese usando CliCredentialsStackSynthesizer. Esse sintetizador funciona com os recursos padrão da AWS que são criados durante o bootstrapping para armazenar ativos, como o bucket do Amazon S3 e o repositório do Amazon ECR. Em vez de usar os perfis do IAM padrão criados pelo CDK durante o bootstrapping, ele usa as credenciais de segurança do ator que está iniciando a implantação. Portanto, as credenciais de segurança do ator devem ter permissões válidas para realizar todas as ações de implantação. O diagrama a seguir ilustra o processo de implantação ao usar esse sintetizador:
Ao usar um CliCredentialsStackSynthesizer:
-
Por padrão, o CloudFormation realiza chamadas de API em sua conta usando as permissões do ator. Portanto, a identidade atual deve ter permissão para fazer as alterações necessárias nos recursos da AWS na pilha do CloudFormation, junto com as permissões para realizar as operações necessárias do CloudFormation, como
CreateStackouUpdateStack. Os recursos de implantação serão limitados às permissões do ator. -
A publicação de ativos e as implantações do CloudFormation serão feitas usando a identidade do IAM atual. Essa identidade deve ter permissões suficientes para ler e gravar no bucket de ativos e no repositório.
-
As pesquisas são realizadas usando a identidade do IAM atual e estão sujeitas às suas políticas.
Ao usar esse sintetizador, será possível usar um perfil de execução separado do CloudFormation especificando-o usando a opção --role-arn com qualquer comando da CLI do CDK.
Contrato de bootstrapping CliCredentialsStackSynthesizer
CliCredentialsStackSynthesizer requer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante o bootstrapping:
| Recurso de bootstrap | Descrição | Nome padrão do recurso esperado | Finalidade |
|---|---|---|---|
|
Bucket do Amazon S3 |
Bucket de preparação |
cdk-hnb659fds-assets-<ACCOUNT>-<REGION> |
Armazena ativos de arquivos. |
|
Repositório do Amazon ECR |
Repositório de preparação |
cdk-hnb659fds-container-assets-<ACCOUNT>-<REGION> |
Armazena e gerencia ativos de imagem do Docker. |
O hnb659fds da string no nome do recurso é chamado de qualificador. Seu valor padrão não tem nenhum significado especial. É possível ter várias cópias dos recursos de bootstrapping em um único ambiente, desde que eles tenham um qualificador diferente. Ter várias cópias pode ser útil para manter ativos de aplicações diferentes separados no mesmo ambiente.
É possível implantar o modelo de bootstrapping padrão para satisfazer o contrato de bootstrapping do CliCredentialsStackSynthesizer. O modelo de bootstrapping padrão criará perfis do IAM, mas esse sintetizador não as usará. Você também pode personalizar o modelo de bootstrapping para remover os perfis do IAM.
Modificar CliCredentialsStackSynthesizer
Se você alterar o qualificador ou qualquer um dos nomes de recursos de bootstrapping padrão durante o bootstrapping, precisará modificar o sintetizador para usar os mesmos nomes. É possível modificar o sintetizador para uma única pilha ou para todas as pilhas de sua aplicação. Veja um exemplo a seguir:
exemplo
O exemplo a seguir mostra as propriedades mais usadas para CliCredentialsStackSynthesizer junto com seus valores padrão. Para obter uma lista completa, consulte CliCredentialsStackSynthesizerProps:
exemplo
Use LegacyStackSynthesizer
O LegacyStackSynthesizer emula o comportamento das implantações do CDK v1. As credenciais de segurança do ator que executa a implantação serão usadas para estabelecer permissões. Os ativos do arquivo serão carregados em um bucket que deve ser criado usando uma pilha do AWS CloudFormation chamada CDKToolkit. A CLI do CDK criará um repositório Amazon ECR não gerenciado chamado aws-cdk/assets para armazenar ativos de imagem do Docker. Você será responsável por limpar e gerenciar esse repositório. As pilhas sintetizadas usando o LegacyStackSynthesizer só podem ser implantadas usando a CLI do CDK.
É possível usar o LegacyStackSynthesizer se estiver migrando do CDK v1 para o CDK v2 e não conseguir fazer bootstrapping novamente em seus ambientes. Para novos projetos, recomendamos que você não use LegacyStackSynthesizer.
Contrato de bootstrapping LegacyStackSynthesizer
LegacyStackSynthesizer requer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante o bootstrapping:
| Recurso de bootstrap | Descrição | Nome padrão do recurso esperado | Finalidade |
|---|---|---|---|
|
Bucket do Amazon S3 |
Bucket de preparação |
cdk-hnb659fds-assets-<ACCOUNT>-<REGION> |
Armazena ativos de arquivos. |
|
Saída do CloudFormation |
Saída do nome do bucket |
Pilha – Nome da saída – |
Uma saída do CloudFormation descrevendo o nome do bucket de preparação |
O LegacyStackSynthesizer não pressupõe a existência de um bucket do Amazon S3 com um nome fixo. Em vez disso, o modelo sintetizado do CloudFormation conterá três parâmetros do CloudFormation para cada ativo de arquivo. Esses parâmetros armazenarão o nome do bucket do Amazon S3, a chave do objeto do Amazon S3 e o hash do artefato de cada ativo do arquivo.
Os ativos de imagem do Docker serão publicados em um repositório Amazon ECR chamado aws-cdk/assets. Esse nome pode ser alterado por ativo. Os repositórios serão criados se não existirem.
Uma pilha do CloudFormation deve existir com o nome padrão CDKToolkit. Essa pilha deve ter uma exportação do CloudFormation chamada BucketName que se refira ao bucket de teste.
O modelo de bootstrapping padrão satisfaz o contrato de bootstrapping do LegacyStackSynthesizer. No entanto, somente o bucket do Amazon S3 dos recursos de bootstrapping do modelo de bootstrapping será usado. É possível personalizar o modelo de bootstrapping para remover os recursos de bootstrapping do Amazon ECR, IAM e SSM.
Andamento da implantação do LegacyStackSynthesizer
Quando você usa esse sintetizador, o seguinte processo é executado durante a implantação:
-
O CDK CLI procura uma pilha do CloudFormation chamada
CDKToolkitem seu ambiente. A partir dessa pilha, o CDK CLI lê a saída do CloudFormation chamadaBucketName. É possível usar a opção--toolkit-stack-namecom ocdk deploypara especificar outro nome de pilha. -
As credenciais de segurança do ator que está iniciando a implantação serão usadas para estabelecer permissões para a implantação. Portanto, o ator deve ter permissões suficientes para realizar todas as ações de implantação. Isso inclui ler e gravar no bucket de preparação do Amazon S3, criar e gravar no repositório do Amazon ECR, iniciar e monitorar implantações do AWS CloudFormation e realizar todas as chamadas de API necessárias para a implantação.
-
Se necessário, e se as permissões forem válidas, os ativos do arquivo serão publicados no bucket de armazenamento do Amazon S3.
-
Se necessário e se as permissões forem válidas, os ativos de imagem do Docker serão publicados no repositório nomeado pela propriedade
repositoryNamedo ativo. O valor padrão é'aws-cdk/assets'se você não fornecer um nome de repositório. -
Se as permissões forem válidas, a implantação do AWS CloudFormation será executada. As localizações do bucket de armazenamento e das chaves do Amazon S3 são transmitidas como parâmetros do CloudFormation.