Personalize a CDK síntese de pilhas - 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á.

Personalize a CDK síntese de pilhas

Você pode personalizar a síntese em AWS Cloud Development Kit (AWS CDK) pilha modificando o sintetizador padrão, usando outros sintetizadores integrados disponíveis ou criando seu próprio sintetizador.

AWS CDK Isso inclui os seguintes sintetizadores integrados que você pode usar para personalizar o comportamento da síntese:

  • DefaultStackSynthesizer— Se você não especificar um sintetizador, este será usado automaticamente. Ele suporta implantações em várias contas e implantações usando a construção Pipelines. CDK Seu contrato de bootstrap exige um bucket Amazon S3 existente com um nome conhecido, um repositório ECR Amazon existente com um nome conhecido e cinco funções IAM existentes com nomes conhecidos. O modelo de inicialização padrão atende a esses requisitos.

  • CliCredentialsStackSynthesizer— O contrato de bootstrap desse sintetizador exige um bucket Amazon S3 existente e um repositório Amazon existente. ECR Não requer nenhuma IAM função. Para realizar implantações, esse sintetizador depende das permissões do CDK CLI usuário e é recomendado para organizações que desejam restringir as credenciais IAM de implantação. Esse sintetizador não é compatível com implantações entre contas ou pipelines. CDK

  • LegacyStackSynthesizer— Este sintetizador emula o comportamento de síntese CDK v1. Seu contrato de bootstrap exige um bucket Amazon S3 existente com um nome arbitrário e espera que as localizações dos ativos sejam passadas como parâmetros de pilha. CloudFormation Se você usa esse sintetizador, você deve usar o CDK CLI para realizar a implantação.

Se nenhum desses sintetizadores integrados for apropriado para seu caso de uso, você pode escrever seu próprio sintetizador como uma classe que implementa IStackSynthesizer ou examina sintetizadores do Construct Hub.

Personalizar o DefaultStackSynthesizer

DefaultStackSynthesizerÉ o sintetizador padrão para o. AWS CDK Ele foi projetado para permitir implantações de CDK aplicativos em várias contas, bem como a implantação de CDK aplicativos de um sistema de CI/CD que não tem suporte explícito para o AWS CDK, mas oferece suporte a implantações regulares, como. CloudFormation AWS CodePipeline Esse sintetizador é a melhor opção para a maioria dos casos de uso.

DefaultStackSynthesizercontrato de bootstrap

DefaultStackSynthesizerrequer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante a inicialização:

Recurso Bootstrap Descrição Nome padrão do recurso esperado Finalidade

Bucket do Amazon S3

Balde de armazenamento

cdk-hnb659fds-assets-ACCOUNT-REGION

Armazena ativos de arquivos.

ECRRepositório Amazon

Repositório de preparação

cdk-hnb659 - fds-container-assetsACCOUNT-REGION

Armazena e gerencia Docker ativos de imagem.

IAMpapel

Implantar função

cdk-hnb659 - fds-deploy-roleACCOUNT-REGION

Assumido pelo CDK CLI e potencialmente CodePipeline para assumir outras funções e iniciar a AWS CloudFormation implantação.

A política de confiança dessa função controla quem pode implantar com o AWS CDK nesse AWS ambiente.

IAMpapel

AWS CloudFormation função de execução

cdk-hnb659 - fds-cfn-exec-roleACCOUNT-REGION

Essa função é usada por AWS CloudFormation para realizar a implantação.

As políticas dessa função controlam quais operações a CDK implantação pode realizar.

IAMpapel

Função de pesquisa

cdk-hnb659 - fds-lookup-roleACCOUNT-REGION

Essa função é usada quando o CDK CLI precisa realizar pesquisas de contexto ambiental.

A política de confiança dessa função controla quem pode pesquisar informações no ambiente.

IAMpapel

Função de publicação de arquivos

cdk-hnb659 - fds-file-publishing-roleACCOUNT-REGION

Essa função é usada para fazer upload de ativos para o bucket de preparação do Amazon S3. É assumido a partir da função de implantação.

IAMpapel

Função de publicação de imagens

cdk-hnb659 - fds-image-publishing-roleACCOUNT-REGION

Essa função é usada para fazer upload Docker imagens para o repositório ECR de teste da Amazon. É assumido a partir da função de implantação.

SSMparâmetro

Parâmetro de versão do Bootstrap

/cdk-bootstrap/hnb659fds/version

A versão do modelo de bootstrap. É usado pelo modelo de bootstrap e pelo CDK CLI para validar os requisitos.

Uma forma de personalizar a síntese da CDK pilha é modificando o. DefaultStackSynthesizer Você pode personalizar esse sintetizador para uma única CDK pilha usando a synthesizer propriedade da sua instância. Stack Você também pode modificar todas DefaultStackSynthesizer as pilhas do seu CDK aplicativo usando a defaultStackSynthesizer propriedade da sua App instância.

Alterar o qualificador

O qualificador é adicionado ao nome dos recursos criados durante a inicialização. Por padrão, esse valor é hnb659fds. Ao modificar o qualificador durante a inicialização, você precisa personalizar a síntese da CDK pilha para usar o mesmo qualificador.

Para alterar o qualificador, configure a qualifier propriedade DefaultStackSynthesizer ou configure o qualificador como uma chave de contexto no arquivo do cdk.json seu CDK projeto.

Veja a seguir um exemplo de configuração da qualifier propriedade doDefaultStackSynthesizer:

TypeScript
new MyStack(this, 'MyStack', { synthesizer: new DefaultStackSynthesizer({ qualifier: 'MYQUALIFIER', }), });
JavaScript
new MyStack(this, 'MyStack', { synthesizer: new DefaultStackSynthesizer({ qualifier: 'MYQUALIFIER', }), })
Python
MyStack(self, "MyStack", synthesizer=DefaultStackSynthesizer( qualifier="MYQUALIFIER" ))
Java
new MyStack(app, "MyStack", StackProps.builder() .synthesizer(DefaultStackSynthesizer.Builder.create() .qualifier("MYQUALIFIER") .build()) .build();
C#
new MyStack(app, "MyStack", new StackProps { Synthesizer = new DefaultStackSynthesizer(new DefaultStackSynthesizerProps { Qualifier = "MYQUALIFIER" }) });
Go
func NewMyStack(scope constructs.Construct, id string, props *MyStackProps) awscdk.Stack { var sprops awscdk.StackProps if props != nil { sprops = props.StackProps } stack := awscdk.NewStack(scope, &id, &sprops) synth := awscdk.NewDefaultStackSynthesizer(&awscdk.DefaultStackSynthesizerProps{ Qualifier: jsii.String("MYQUALIFIER"), }) stack.SetSynthesizer(synth) return stack }

Veja a seguir um exemplo de configuração do qualificador como uma chave de contexto em: cdk.json

{ "app": "...", "context": { "@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER" } }

Alterar nomes de recursos

Todas as outras DefaultStackSynthesizer propriedades 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 bootstrap 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 qualifier parâmetro e da AWS partição, ID da conta e Região da AWS valores do ambiente da pilha, respectivamente.

O exemplo a seguir mostra as propriedades mais usadas DefaultStackSynthesizer junto com seus valores padrão, como se você estivesse instanciando o sintetizador. Para obter uma lista completa, consulte DefaultStackSynthesizerProps:

TypeScript
new DefaultStackSynthesizer({ // Name of the S3 bucket for file assets fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}', bucketPrefix: '', // Name of the ECR repository for Docker image assets imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}', dockerTagPrefix: '', // ARN of the role assumed by the CLI and Pipeline to deploy here deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}', deployRoleExternalId: '', // ARN of the role used for file asset publishing (assumed from the CLI role) fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}', fileAssetPublishingExternalId: '', // ARN of the role used for Docker asset publishing (assumed from the CLI role) imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}', imageAssetPublishingExternalId: '', // ARN of the role passed to CloudFormation to execute the deployments cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}', // ARN of the role used to look up context information in an environment lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}', lookupRoleExternalId: '', // Name of the SSM parameter which describes the bootstrap stack version number bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version', // Add a rule to every template which verifies the required bootstrap stack version generateBootstrapVersionRule: true, })
JavaScript
new DefaultStackSynthesizer({ // Name of the S3 bucket for file assets fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}', bucketPrefix: '', // Name of the ECR repository for Docker image assets imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}', dockerTagPrefix: '', // ARN of the role assumed by the CLI and Pipeline to deploy here deployRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}', deployRoleExternalId: '', // ARN of the role used for file asset publishing (assumed from the CLI role) fileAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}', fileAssetPublishingExternalId: '', // ARN of the role used for Docker asset publishing (assumed from the CLI role) imageAssetPublishingRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}', imageAssetPublishingExternalId: '', // ARN of the role passed to CloudFormation to execute the deployments cloudFormationExecutionRole: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}', // ARN of the role used to look up context information in an environment lookupRoleArn: 'arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}', lookupRoleExternalId: '', // Name of the SSM parameter which describes the bootstrap stack version number bootstrapStackVersionSsmParameter: '/cdk-bootstrap/${Qualifier}/version', // Add a rule to every template which verifies the required bootstrap stack version generateBootstrapVersionRule: true, })
Python
DefaultStackSynthesizer( # Name of the S3 bucket for file assets file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}", bucket_prefix="", # Name of the ECR repository for Docker image assets image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}", docker_tag_prefix="", # ARN of the role assumed by the CLI and Pipeline to deploy here deploy_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}", deploy_role_external_id="", # ARN of the role used for file asset publishing (assumed from the CLI role) file_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}", file_asset_publishing_external_id="", # ARN of the role used for Docker asset publishing (assumed from the CLI role) image_asset_publishing_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}", image_asset_publishing_external_id="", # ARN of the role passed to CloudFormation to execute the deployments cloud_formation_execution_role="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", # ARN of the role used to look up context information in an environment lookup_role_arn="arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}", lookup_role_external_id="", # Name of the SSM parameter which describes the bootstrap stack version number bootstrap_stack_version_ssm_parameter="/cdk-bootstrap/${Qualifier}/version", # Add a rule to every template which verifies the required bootstrap stack version generate_bootstrap_version_rule=True, )
Java
DefaultStackSynthesizer.Builder.create() // Name of the S3 bucket for file assets .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}") .bucketPrefix('') // Name of the ECR repository for Docker image assets .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}") .dockerTagPrefix('') // ARN of the role assumed by the CLI and Pipeline to deploy here .deployRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}") .deployRoleExternalId("") // ARN of the role used for file asset publishing (assumed from the CLI role) .fileAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}") .fileAssetPublishingExternalId("") // ARN of the role used for Docker asset publishing (assumed from the CLI role) .imageAssetPublishingRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}") .imageAssetPublishingExternalId("") // ARN of the role passed to CloudFormation to execute the deployments .cloudFormationExecutionRole("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}") .lookupRoleArn("arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}") .lookupRoleExternalId("") // Name of the SSM parameter which describes the bootstrap stack version number .bootstrapStackVersionSsmParameter("/cdk-bootstrap/${Qualifier}/version") // Add a rule to every template which verifies the required bootstrap stack version .generateBootstrapVersionRule(true) .build()
C#
new DefaultStackSynthesizer(new DefaultStackSynthesizerProps { // Name of the S3 bucket for file assets FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}", BucketPrefix = "", // Name of the ECR repository for Docker image assets ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}", DockerTagPrefix = "", // ARN of the role assumed by the CLI and Pipeline to deploy here DeployRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region}", DeployRoleExternalId = "", // ARN of the role used for file asset publishing (assumed from the CLI role) FileAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-file-publishing-role-${AWS::AccountId}-${AWS::Region}", FileAssetPublishingExternalId = "", // ARN of the role used for Docker asset publishing (assumed from the CLI role) ImageAssetPublishingRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-image-publishing-role-${AWS::AccountId}-${AWS::Region}", ImageAssetPublishingExternalId = "", // ARN of the role passed to CloudFormation to execute the deployments CloudFormationExecutionRole = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-cfn-exec-role-${AWS::AccountId}-${AWS::Region}", LookupRoleArn = "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/cdk-${Qualifier}-lookup-role-${AWS::AccountId}-${AWS::Region}", LookupRoleExternalId = "", // Name of the SSM parameter which describes the bootstrap stack version number BootstrapStackVersionSsmParameter = "/cdk-bootstrap/${Qualifier}/version", // Add a rule to every template which verifies the required bootstrap stack version GenerateBootstrapVersionRule = true, })

Usar o CliCredentialsStackSynthesizer

Para modificar as credenciais de segurança usadas para fornecer permissões durante as CDK implantações, você pode personalizar a síntese usando. CliCredentialsStackSynthesizer Esse sintetizador funciona com os AWS recursos padrão que são criados durante a inicialização para armazenar ativos, como o bucket do Amazon S3 e o repositório da Amazon. ECR Em vez de usar as IAM funções padrão criadas pelo CDK durante a inicialização, 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:

Fluxograma do processo de AWS CDK implantação padrão.

Ao usarCliCredentialsStackSynthesizer:

  • Por padrão, CloudFormation realiza API chamadas 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 AWS recursos na CloudFormation pilha, junto com as permissões para realizar as CloudFormation operações necessárias, como CreateStack ouUpdateStack. Os recursos de implantação serão limitados às permissões do ator.

  • A publicação e CloudFormation as implantações de ativos serão feitas usando a IAM identidade 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 IAM identidade atual e estão sujeitas às suas políticas.

Ao usar esse sintetizador, você pode usar uma função de CloudFormation execução separada especificando-a usando a --role-arn opção com qualquer CDK CLI comando.

CliCredentialsStackSynthesizercontrato de bootstrap

CliCredentialsStackSynthesizerrequer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante a inicialização:

Recurso Bootstrap Descrição Nome padrão do recurso esperado Finalidade

Bucket do Amazon S3

Balde de armazenamento

cdk-hnb659fds-assets-ACCOUNT-REGION

Armazena ativos de arquivos.

ECRRepositório Amazon

Repositório de preparação

cdk-hnb659 - fds-container-assetsACCOUNT-REGION

Armazena e gerencia Docker ativos de imagem.

A string hnb659fds no nome do recurso é chamada de qualificador. Seu valor padrão não tem nenhum significado especial. Você pode ter várias cópias dos recursos de bootstrap em um único ambiente, desde que eles tenham um qualificador diferente. Ter várias cópias pode ser útil para manter ativos de aplicativos diferentes separados no mesmo ambiente.

Você pode implantar o modelo de bootstrap padrão para satisfazer o contrato CliCredentialsStackSynthesizer de bootstrap. O modelo de bootstrap padrão criará IAM funções, mas esse sintetizador não as usará. Você também pode personalizar o modelo de bootstrap para remover as IAM funções.

Modificar a CliCredentialsStackSynthesizer

Se você alterar o qualificador ou qualquer um dos nomes de recursos de bootstrap padrão durante a inicialização, precisará modificar o sintetizador para usar os mesmos nomes. Você pode modificar o sintetizador para uma única pilha ou para todas as pilhas do seu aplicativo. Veja um exemplo a seguir:

TypeScript
new MyStack(this, 'MyStack', { synthesizer: new CliCredentialsStackSynthesizer({ qualifier: 'MYQUALIFIER', }), });
JavaScript
new MyStack(this, 'MyStack', { synthesizer: new CliCredentialsStackSynthesizer({ qualifier: 'MYQUALIFIER', }), })
Python
MyStack(self, "MyStack", synthesizer=CliCredentialsStackSynthesizer( qualifier="MYQUALIFIER" ))
Java
new MyStack(app, "MyStack", StackProps.builder() .synthesizer(CliCredentialsStackSynthesizer.Builder.create() .qualifier("MYQUALIFIER") .build()) .build();
C#
new MyStack(app, "MyStack", new StackProps { Synthesizer = new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps { Qualifier = "MYQUALIFIER" }) });

O exemplo a seguir mostra as propriedades mais usadas CliCredentialsStackSynthesizer junto com seus valores padrão. Para obter uma lista completa, consulte CliCredentialsStackSynthesizerProps:

TypeScript
new CliCredentialsStackSynthesizer({ // Value for '${Qualifier}' in the resource names qualifier: 'hnb659fds', // Name of the S3 bucket for file assets fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}', bucketPrefix: '', // Name of the ECR repository for Docker image assets imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}', dockerTagPrefix: '', })
JavaScript
new CliCredentialsStackSynthesizer({ // Value for '${Qualifier}' in the resource names qualifier: 'hnb659fds', // Name of the S3 bucket for file assets fileAssetsBucketName: 'cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}', bucketPrefix: '', // Name of the ECR repository for Docker image assets imageAssetsRepositoryName: 'cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}', dockerTagPrefix: '', })
Python
CliCredentialsStackSynthesizer( # Value for '${Qualifier}' in the resource names qualifier="hnb659fds", # Name of the S3 bucket for file assets file_assets_bucket_name="cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}", bucket_prefix="", # Name of the ECR repository for Docker image assets image_assets_repository_name="cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}", docker_tag_prefix="", )
Java
CliCredentialsStackSynthesizer.Builder.create() // Value for '${Qualifier}' in the resource names .qualifier("hnb659fds") // Name of the S3 bucket for file assets .fileAssetsBucketName("cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}") .bucketPrefix('') // Name of the ECR repository for Docker image assets .imageAssetsRepositoryName("cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}") .dockerTagPrefix('') .build()
C#
new CliCredentialsStackSynthesizer(new CliCredentialsStackSynthesizerProps { // Value for '${Qualifier}' in the resource names Qualifier = "hnb659fds", // Name of the S3 bucket for file assets FileAssetsBucketName = "cdk-${Qualifier}-assets-${AWS::AccountId}-${AWS::Region}", BucketPrefix = "", // Name of the ECR repository for Docker image assets ImageAssetsRepositoryName = "cdk-${Qualifier}-container-assets-${AWS::AccountId}-${AWS::Region}", DockerTagPrefix = "", })

Usar o LegacyStackSynthesizer

Ele LegacyStackSynthesizer emula o comportamento das implantações 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 enviados para um bucket que deve ser criado usando uma AWS CloudFormation pilha chamadaCDKToolkit. O CDK CLI criará um ECR repositório Amazon não gerenciado chamado aws-cdk/assets para armazenar Docker ativos de imagem. Você será responsável por limpar e gerenciar esse repositório. As pilhas sintetizadas usando o só LegacyStackSynthesizer podem ser implantadas usando o CDK CLI.

Você pode usar o LegacyStackSynthesizer se estiver migrando da CDK v1 para a CDK v2 e não conseguir reinicializar seus ambientes. Para novos projetos, recomendamos que você não useLegacyStackSynthesizer.

LegacyStackSynthesizercontrato de bootstrap

LegacyStackSynthesizerrequer o seguinte contrato de bootstrap. Estes são os recursos que devem ser criados durante a inicialização:

Recurso Bootstrap Descrição Nome padrão do recurso esperado Finalidade

Bucket do Amazon S3

Balde de armazenamento

cdk-hnb659fds-assets-ACCOUNT-REGION

Armazena ativos de arquivos.

CloudFormation saída

Saída do nome do bucket

Pilha — CDKToolkit

Nome da saída — BucketName

Uma CloudFormation saída descrevendo o nome do repositório de teste

LegacyStackSynthesizerNão pressupõe a existência de um bucket Amazon S3 com um nome fixo. Em vez disso, o CloudFormation modelo sintetizado conterá três CloudFormation parâmetros para cada ativo de arquivo. Esses parâmetros armazenarão o nome do bucket do Amazon S3, a chave de objeto do Amazon S3 e o hash do artefato para cada ativo do arquivo.

Docker os ativos de imagem serão publicados em um ECR repositório da Amazon chamadoaws-cdk/assets. Esse nome pode ser alterado por ativo. Os repositórios serão criados se não existirem.

Deve existir uma CloudFormation pilha com o nome CDKToolkit padrão. Essa pilha deve ter um nome de CloudFormation exportação BucketName que se refira ao intervalo de teste.

O modelo de bootstrap padrão satisfaz o contrato de LegacyStackSynthesizer bootstrap. No entanto, somente o bucket do Amazon S3 dos recursos de bootstrap do modelo de bootstrap será usado. Você pode personalizar o modelo de bootstrap para remover os recursos AmazonECR,IAM, e SSM bootstrap.

LegacyStackSynthesizerprocesso de implantação

Quando você usa esse sintetizador, o seguinte processo é executado durante a implantação:

  • O CDK CLI procura uma CloudFormation pilha nomeada CDKToolkit em seu ambiente. A partir dessa pilha, o CDK CLI lê a CloudFormation saída chamadaBucketName. Você pode usar a --toolkit-stack-name opção com cdk deploy para especificar um nome de pilha diferente.

  • 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 ECR repositório da Amazon, iniciar e monitorar AWS CloudFormation implantações e realizar todas API as chamadas 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, Docker os ativos de imagem são publicados no repositório nomeado pela repositoryName propriedade do 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 AWS CloudFormation implantação será executada. As localizações do bucket de armazenamento e das chaves do Amazon S3 são transmitidas como parâmetros. CloudFormation