Questa è la AWS CDK v2 Developer Guide. Il vecchio CDK v1 è entrato in manutenzione il 1° giugno 2022 e ha terminato il supporto il 1° giugno 2023.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Configura i costrutti con CDK Blueprints
Nota
CDK Blueprints è in versione di anteprima ed è soggetto a modifiche.
Utilizzate AWS CDK Blueprints per standardizzare e distribuire le configurazioni di costruzione L2 in tutta l'organizzazione. Con Blueprints, potete garantire che le AWS risorse siano configurate in modo coerente in base agli standard e alle migliori pratiche organizzative. Ad esempio, puoi abilitare automaticamente la crittografia per tutti i bucket Amazon S3, applicare configurazioni di registrazione specifiche a tutte le funzioni AWS Lambda o applicare regole di sicurezza standard per tutti i gruppi di sicurezza.
I blueprint si basano sull'iniezione di proprietà, un meccanismo introdotto in AWS CDK v2.196.0
I blueprint non sono un meccanismo di applicazione della conformità. Gli sviluppatori possono comunque sovrascrivere le impostazioni predefinite, se necessario. Per una rigorosa applicazione della conformità, prendi in considerazione l'utilizzo di AWS CloudFormation Guard, Service Control Policies o CDK Aspects oltre a Blueprints.
Per informazioni dettagliate sull'implementazione, vedere Property Injection
Componenti chiave di Blueprints
I blueprint sono raccolte di iniettori di proprietà che applicano proprietà predefinite ai costrutti quando vengono istanziati. Un iniettore di proprietà è un componente che implementa l'IPropertyInjector
interfaccia, che intercetta la creazione di costrutti e modifica o aggiunge proprietà prima della creazione del costrutto.
-
IPropertyInjector - An
IPropertyInjector
definisce un modo per iniettare proprietà aggiuntive che non sono specificate negli oggetti di scena. È specifico di un costrutto L2 e opera sulle proprietà di quel costrutto. -
PropertyInjectors-
PropertyInjectors
sono una raccolta di iniettori collegati all'albero di costruzione. Gli iniettori possono essere collegati a qualsiasi struttura, ma in pratica ci aspettiamo che la maggior parte di essi venga collegata a, o.App
Stage
Stack
Casi d'uso comuni per Blueprints
Puoi usare CDK Blueprints per standardizzare molti aspetti delle tue risorse AWS. Ecco alcuni casi d'uso comuni:
- Standard di sicurezza
-
-
Assicurati che tutti i bucket Amazon S3 abbiano la crittografia lato server abilitata.
-
Configura tutti i gruppi di sicurezza per bloccare l'accesso pubblico per impostazione predefinita.
-
Applica le autorizzazioni AWS Identity and Access Management (IAM) con privilegi minimi alle funzioni Lambda. AWS
-
Applica SSL per tutte le comunicazioni di rete.
-
- Eccellenza operativa
-
-
Configura la registrazione standardizzata per tutte le funzioni Lambda AWS .
-
Applica strategie di tagging coerenti tra le risorse.
-
Imposta soglie di monitoraggio e avviso predefinite.
-
Implementa politiche di conservazione standard per log e backup.
-
- Ottimizzazione dei costi
-
-
Configura le dimensioni delle istanze appropriate in base all'ambiente.
-
Applica politiche di auto-scaling con impostazioni organizzative predefinite.
-
Imposta le regole del ciclo di vita per i bucket Amazon S3 per trasferire gli oggetti a classi di storage più economiche.
-
Configura il throughput predefinito assegnato per i database.
-
- Requisiti di conformità
-
-
Implementa le impostazioni di crittografia richieste per i dati regolamentati.
-
Applica le politiche di backup necessarie per i requisiti di conservazione dei dati.
-
Configura le impostazioni Amazon VPC predefinite che soddisfano i requisiti di sicurezza.
-
Assicurati che le risorse abbiano i tag necessari per l'allocazione dei costi.
-
- Produttività degli sviluppatori
-
-
Fornisci impostazioni predefinite ragionevoli che riducono la necessità di utilizzare codice standard.
-
Crea classi Stack specifiche per l'organizzazione con iniettori integrati.
-
Condividi le migliori pratiche tra i team tramite iniettori riutilizzabili.
-
Semplifica l'onboarding codificando le conoscenze organizzative in codice.
-
Guida introduttiva a Blueprints
Ecco un semplice esempio di come creare e utilizzare un property injector:
Innanzitutto, crea un property injector per i bucket 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, }; } }
Quindi, usa l'iniettore nella tua applicazione 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');
In alternativa, puoi usare il PropertyInjectors.of()
metodo:
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');
Best practice
-
Inserite prima le proprietà predefinite
…originalProps
per consentire le sostituzioni. -
Posiziona le proprietà forzate dopo
…originalProps
per evitare sostituzioni. -
Usa un flag Skip quando crei risorse per evitare una ricorsione infinita. Per un esempio, vedi Cosa succede quando devi creare un file accessLogBucket for a
Bucket? nella RFC di Property Injection. -
Aggiungi la registrazione per il debug.
-
Usa il contesto CDK per abilitare/disabilitare gli iniettori per i test.