AWS announces preview of AWS Interconnect - multicloud
AWS announces AWS Interconnect – multicloud (preview), providing simple, resilient, high-speed private connections to other cloud service providers. AWS Interconnect - multicloud is easy to configure and provides high-speed, resilient connectivity with dedicated bandwidth, enabling customers to interconnect AWS networking services such as AWS Transit Gateway, AWS Cloud WAN, and Amazon VPC to other cloud service providers with ease.
Como personalizo meu bootstrap do AWS CDK e implanto a pilha CFNToolkit do CloudFormation?
Quero personalizar meu bootstrap do AWS Cloud Development Kit (AWS CDK) e implantar a pilha CFN do AWS CloudFormation.
Breve descrição
Para usar o AWS CDK, você deve executar um bootstrap na sua conta da AWS. A ação de bootstrap cria os recursos exigidos pelo AWS CDK na conta. É possível personalizar seu modelo de bootstrap para implementar requisitos de conformidade e segurança com as seguintes ações:
- Adicione tags aos recursos.
- Adicione criptografia para buckets do Amazon Simple Storage Service (Amazon S3).
- Use nomes de bucket personalizados do S3.
- Use buckets do S3 existentes ou aplique a entidade principal de privilégio mínimo nos perfis do AWS Identity and Access Management (AWS IAM) gerados pelo modelo de bootstrap.
O comando cdk bootstrap cria uma pilha do CloudFormation com o nome CDKToolkit. Os recursos implantados na pilha CDKToolkit do CloudFormation vêm do modelo.
Para mostrar seu modelo de bootstrap, execute o seguinte comando:
cdk bootstrap --show-template > bootstrap-template.yml
O modelo de bootstrap anterior tem os seguintes recursos:
- Recursos como o bucket do S3
- Chave do AWS Key Management Service (AWS KMS)
- Perfis do IAM
- Parâmetro SSM para versionamento
Para obter mais informações, consulte o AWS CDK Bootstrap Template for Custom Bootstrapping [Modelo de bootstrap do AWS CDK para processo de bootstrap personalizado] no site do GitHub.
É possível personalizar seu modelo de bootstrap para os seguintes casos de uso:
- Use o AWS CDK para implantar somente os recursos que você usa.
- Atualize ou crie um qualificador e um nome personalizados para um bucket do S3 para armazenar ativos de arquivos da aplicação AWS CDK.
- Use um bucket do S3 existente para armazenar ativos de arquivos da aplicação AWS CDK.
Resolução
Para personalizar seu modelo de bootstrap, use um dos seguintes métodos:
Use o AWS CDK para implantar somente os recursos que você usa
O bootstrap do AWS CDK cria um perfil CloudFormationExecutionRole que o CloudFormation assume para implantar sua pilha. Em seguida, o CloudFormation usa esse perfil para implantar a partir de sua máquina local com o comando cdk deploy ou para implantar por meio de CDK pipelines do AWS para CI/CD.
Para permitir que recursos sejam criados com o AWS CDK, o CloudFormationExecutionRole tem a política arn:aws:iam:aws:policy/AdministratorAccess que concede acesso total para realizar todas as ações. Observe que essa política vai contra o princípio do privilégio mínimo. Para restringir essa política, você deve criar uma nova política e, em seguida, executar um bootstrap no AWS CDK com a nova política personalizada.
Observação: Certifique-se de revisar todos os comandos e substituir todas as instâncias de strings de exemplo pelos valores necessários.
-
Crie uma política personalizada no IAM:
aws iam create-policy \ --policy-name cdkCFExecutionPolicy \ --policy-document file://example-custom-Execution-Policy-name.json -
Use a política do IAM recém-criada para executar um bootstrap no AWS CDK:
ACCOUNT_ID=$(aws sts get-caller-identity --query "Account" --output text) cdk bootstrap aws://$ACCOUNT_ID/example-Region \ --cloudformation-execution-policies "arn:aws:iam::$ACCOUNT_ID:policy/example-custom-Execution-Policy-name" -
(Opcional) se a conta já estiver inicializada, execute novamente o comando cdk bootstrap com a nova política personalizada.
-
(Opcional) Atualize sua política conforme exigido pela aplicação AWS CDK e crie uma nova versão da política. Novas versões da política podem ser definidas como a política padrão.
Observação: Somente cinco versões da política podem ser salvas no IAM. Exclua as versões anteriores conforme necessário se você atualizar sua política.
Atualize ou crie um qualificador e um nome personalizados para um bucket do S3 para armazenar ativos de arquivos da aplicação AWS CDK
-
Passe sinalizadores extras para qualificador e bootstrap-bucket-name para inicializar a conta. Esses sinalizadores criam ou atualizam a pilha CDKToolkit CloudFormation com novos valores para os recursos.
cdk bootstrap --template bootstrap-template.yml --qualifier <example-custom-qualifier-value> --bootstrap-bucket-name <example-custom-bucket-name> --profile <example-profile-name> -
Atualize o arquivo app.py com os seguintes valores:
import os import aws_cdk as cdk from myproject.myproject_stack import MyprojectStack app = cdk.App() MyprojectStack(app, "MyprojectStack", synthesizer=cdk.DefaultStackSynthesizer(qualifier="<example-custom-qualifier-value>", file_assets_bucket_name="<example-custom-bucket-name>")) app.synth()
Observação: Se a pilha CDKToolkit falhar na implantação devido a um recurso que já existe, primeiro identifique e exclua o recurso se ele não for necessário. Em seguida, execute o bootstrap a partir da pilha do CloudFormation novamente.
Use um bucket do S3 existente para armazenar ativos de arquivos da aplicação AWS CDK
As aplicações do AWS CDK usam o nome e a localização do bucket do S3 na seção Pilha CDKToolkit AWS CloudFormation > Saídas. Para usar um bucket do S3 existente, você deve modificar o bootstrap-template.yml:
-
Modifique o valor de Saídas para BucketName e BucketDomainName pelos detalhes do seu bucket do S3 existente:
Outputs: BucketName: Description: The name of S3 bucket owned by the CDK toolkit stack Value: <example-existing-bucket-name> BucketDomainName: Description: The domain name of the S3 bucket owned by the CDK toolkit stack Value: <example-existing-bucket-name>.s3.<example-Region>.amazonaws.com -
Adicione o ARN do bucket do S3 existente nos recursos DeploymentActionRole e FilePublishingRoleDefaultPolicy do bootstrap-template.yml:
Resources: DeploymentActionRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Statement: - Action: sts:AssumeRole Effect: Allow Principal: AWS: Ref: AWS::AccountId - Fn::If: - HasTrustedAccounts - Action: sts:AssumeRole Effect: Allow Principal: AWS: Ref: TrustedAccounts - Ref: AWS::NoValue Policies: - PolicyDocument: Statement: - Sid: CliStagingBucket Effect: Allow Action: - s3:GetObject* - s3:GetBucket* - s3:List* Resource: - Fn::Sub: ${StagingBucket.Arn} - Fn::Sub: ${StagingBucket.Arn}/* - arn:aws:s3:::<example-existing-bucket-name> - arn:aws:s3:::<example-existing-bucket-name>/ Version: "example-version" PolicyName: default RoleName: Fn::Sub: cdk-${Qualifier}-deploy-role-${AWS::AccountId}-${AWS::Region} Tags: - Key: aws-cdk:bootstrap-role Value: deploy FilePublishingRoleDefaultPolicy: Type: AWS::IAM::Policy Properties: PolicyDocument: Statement: - Action: - s3:GetObject* - s3:GetBucket* - s3:GetEncryptionConfiguration - s3:List* - s3:DeleteObject* - s3:PutObject* - s3:Abort* Resource: - Fn::Sub: ${StagingBucket.Arn} - Fn::Sub: ${StagingBucket.Arn}/* - arn:aws:s3:::<example-existing-bucket-name>/ - arn:aws:s3:::<example-existing-bucket-name> Effect: Allow - Action: - kms:Decrypt - kms:DescribeKey - kms:Encrypt - kms:ReEncrypt* - kms:GenerateDataKey* Effect: Allow Resource: Fn::If: - CreateNewKey - Fn::Sub: ${FileAssetsBucketEncryptionKey.Arn} - Fn::Sub: arn:${AWS::Partition}:kms:${AWS::Region}:${AWS::AccountId}:key/${FileAssetsBucketKmsKeyId} Version: "example-version" Roles: - Ref: FilePublishingRole PolicyName: Fn::Sub: cdk-${Qualifier}-file-publishing-role-default-policy-${AWS::AccountId}-${AWS::Region} -
Execute o comando cdk bootstrap. A pilha CDKToolkit do CloudFormation é criada ou atualizada com as alterações anteriores.
-
Para fazer o upload dos ativos do arquivo para seu bucket do S3 existente em seu projeto, edite o sintetizador de pilha para CDK. Inclua o seguinte em seu arquivo app.py:
MyprojectStack(app, "MyprojectStack", synthesizer=cdk.DefaultStackSynthesizer(file_assets_bucket_name="<example-existing-bucket-name>"))
Observação: É possível configurar e personalizar parâmetros extras. Para obter mais informações, consulte Personalizando o processo de bootstrap.
- Idioma
- Português
Vídeos relacionados

