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á.
Configure construções com CDK Blueprints
nota
O CDK Blueprints está em versão prévia e está sujeito a alterações.
Use o AWS CDK Blueprints para padronizar e distribuir configurações de construção L2 em toda a sua organização. Com o Blueprints, você pode garantir que AWS os recursos sejam configurados de forma consistente de acordo com seus padrões organizacionais e melhores práticas. Por exemplo, você pode habilitar automaticamente a criptografia para todos os buckets do Amazon S3, aplicar configurações de registro específicas a todas as funções do AWS Lambda ou aplicar regras de segurança padrão para todos os grupos de segurança.
Os blueprints são alimentados pela injeção de propriedades, um mecanismo introduzido no AWS CDK v2.196.0
Os esquemas não são um mecanismo de fiscalização da conformidade. Os desenvolvedores ainda podem substituir os padrões, se necessário. Para uma fiscalização rigorosa da conformidade, considere usar o AWS CloudFormation Guard, as Políticas de Controle de Serviços ou o CDK Aspects, além dos Blueprints.
Para obter informações detalhadas sobre a implementação, consulte o Property Injection RFC
Componentes-chave dos Blueprints
Os blueprints são coleções de injetores de propriedades que aplicam propriedades padrão às construções quando elas são instanciadas. Um injetor de propriedades é um componente que implementa a IPropertyInjector
interface, que intercepta a criação da construção e modifica ou adiciona propriedades antes que a construção seja criada.
-
IPropertyInjetor - An
IPropertyInjector
define uma forma de injetar propriedades adicionais que não estão especificadas nos adereços. É específico para uma construção L2 e opera nas propriedades dessa construção. -
PropertyInjectors-
PropertyInjectors
são uma coleção de injetores conectados à árvore de construção. Os injetores podem ser conectados a qualquer construção, mas, na prática, esperamos que a maioria deles seja conectada aApp
,Stage
ouStack
.
Casos de uso comuns para Blueprints
Você pode usar o CDK Blueprints para padronizar muitos aspectos dos seus recursos da AWS. Aqui estão alguns casos de uso comuns:
- Padrões de segurança
-
-
Certifique-se de que todos os buckets do Amazon S3 tenham a criptografia do lado do servidor ativada.
-
Configure todos os grupos de segurança para bloquear o acesso público por padrão.
-
Aplique permissões de menor privilégio do AWS Identity and Access Management (IAM) às funções do Lambda. AWS
-
Aplique SSL para todas as comunicações de rede.
-
- Excelência operacional
-
-
Configure o registro padronizado para todas as funções do AWS Lambda.
-
Aplique estratégias de marcação consistentes em todos os recursos.
-
Configure limites padrão de monitoramento e alerta.
-
Implemente políticas de retenção padrão para registros e backups.
-
- Otimização de custo
-
-
Configure os tamanhos de instância apropriados com base no ambiente.
-
Aplique políticas de auto-scaling com padrões organizacionais.
-
Defina regras de ciclo de vida para buckets do Amazon S3 para fazer a transição de objetos para classes de armazenamento mais baratas.
-
Configure a taxa de transferência provisionada padrão para bancos de dados.
-
- Requisitos de conformidade
-
-
Implemente as configurações de criptografia necessárias para dados regulamentados.
-
Aplique as políticas de backup necessárias para atender aos requisitos de retenção de dados.
-
Defina as configurações padrão da Amazon VPC que atendam aos requisitos de segurança.
-
Certifique-se de que os recursos tenham etiquetas necessárias para alocação de custos.
-
- Produtividade do desenvolvedor
-
-
Forneça padrões sensatos que reduzam a necessidade de código padronizado.
-
Crie classes Stack específicas da organização com injetores integrados.
-
Compartilhe as melhores práticas entre as equipes por meio de injetores reutilizáveis.
-
Simplifique a integração codificando o conhecimento organizacional em código.
-
Começando com Blueprints
Aqui está um exemplo simples de como criar e usar um injetor de propriedades:
Primeiro, crie um injetor de propriedades para os buckets do Amazon S3:
import { IPropertyInjector, InjectionContext } from 'aws-cdk-lib'; import { Bucket, BucketProps, BlockPublicAccess } from 'aws-cdk-lib/aws-s3'; export class SecureBucketDefaults implements IPropertyInjector { public readonly constructUniqueId: string; constructor() { this.constructUniqueId = Bucket.PROPERTY_INJECTION_ID; } public inject(originalProps: BucketProps, _context: InjectionContext): BucketProps { return { // Set security defaults blockPublicAccess: BlockPublicAccess.BLOCK_ALL, enforceSSL: true, // Include original props to allow overrides ...originalProps, }; } }
Em seguida, use o injetor em seu aplicativo CDK:
import { App, Stack } from 'aws-cdk-lib'; import { Bucket } from 'aws-cdk-lib/aws-s3'; import { SecureBucketDefaults } from './secure-bucket-defaults'; // Attach injectors when creating the App const app = new App({ propertyInjectors: [new SecureBucketDefaults()] }); const stack = new Stack(app, 'MyStack'); // This bucket automatically gets the default properties const myBucket = new Bucket(stack, 'MyBucket');
Como alternativa, você pode usar o PropertyInjectors.of()
método:
import { App, Stack, PropertyInjectors } from 'aws-cdk-lib'; import { SecureBucketDefaults } from './secure-bucket-defaults'; const app = new App(); PropertyInjectors.of(app).add(new SecureBucketDefaults()); const stack = new Stack(app, 'MyStack'); const myBucket = new Bucket(stack, 'MyBucket');
Práticas recomendadas
-
Coloque as propriedades padrão antes
…originalProps
para permitir substituições. -
Coloque as propriedades forçadas depois
…originalProps
para evitar substituições. -
Use um sinalizador de salto ao criar recursos para evitar a recursão infinita. Para ver um exemplo, consulte O que acontece quando você precisa criar um accessLogBucket para um bucket?
no RFC de injeção de propriedades. -
Adicione registro para depuração.
-
Use o contexto CDK para ativar/desativar injetores para testes.
Para obter informações mais detalhadas sobre injeção de propriedades, incluindo detalhes de implementação, dicas de solução de problemas e informações de referência, consulte o RFC de injeção de propriedades