Questa è la guida per sviluppatori AWS CDK v2. La versione precedente della CDK versione 1 è entrata 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à.
Personalizza la CDK sintesi dello stack
È possibile personalizzare la sintesi AWS Cloud Development Kit (AWS CDK) dello stack modificando il sintetizzatore predefinito, utilizzando altri sintetizzatori integrati disponibili o creando un sintetizzatore personalizzato.
AWS CDK Include i seguenti sintetizzatori integrati che è possibile utilizzare per personalizzare il comportamento di sintesi:
-
DefaultStackSynthesizer
— Se non si specifica un sintetizzatore, questo viene utilizzato automaticamente. Supporta distribuzioni e distribuzioni tra account utilizzando il costrutto Pipelines. CDK Il suo contratto bootstrap richiede un bucket Amazon S3 esistente con un nome noto, un repository ECR Amazon esistente con un nome noto e cinque ruoli IAM esistenti con nomi noti. Il modello di bootstrap predefinito soddisfa questi requisiti. -
CliCredentialsStackSynthesizer
— Il contratto bootstrap di questo sintetizzatore richiede un bucket Amazon S3 esistente e un repository Amazon esistente. ECR Non richiede alcun ruolo. IAM Per eseguire le distribuzioni, questo sintetizzatore si basa sulle autorizzazioni del CDK CLI utente ed è consigliato per le organizzazioni che desiderano limitare le credenziali di distribuzione. IAM Questo sintetizzatore non supporta distribuzioni tra account o Pipelines. CDK -
LegacyStackSynthesizer
— Questo sintetizzatore emula il comportamento di sintesi v1. CDK Il suo contratto bootstrap richiede un bucket Amazon S3 esistente con un nome arbitrario e prevede che le posizioni degli asset vengano passate come parametri dello stack. CloudFormation Se si utilizza questo sintetizzatore, è necessario utilizzare il CDK CLI per eseguire la distribuzione.
Personalizzazione di DefaultStackSynthesizer
È DefaultStackSynthesizer
il sintetizzatore predefinito per. AWS CDKÈ progettato per consentire la distribuzione di CDK applicazioni su più account, nonché la distribuzione di CDK app da un sistema CI/CD che non supporta esplicitamente, ma supporta distribuzioni regolari, come. AWS CDK CloudFormation AWS CodePipeline Questo sintetizzatore è l'opzione migliore per la maggior parte dei casi d'uso.
DefaultStackSynthesizer
contratto bootstrap
DefaultStackSynthesizer
richiede il seguente contratto bootstrap. Queste sono le risorse che devono essere create durante il bootstrap:
Risorsa Bootstrap | Descrizione | Nome predefinito della risorsa prevista | Scopo |
---|---|---|---|
Bucket Amazon S3 |
Secchio di staging |
cdk-hnb659fds-assets- |
Memorizza le risorse dei file. |
ECRArchivio Amazon |
Archivio di staging |
cdk-hnb659 - fds-container-assets |
Archivia e gestisce Docker risorse di immagini. |
IAMruolo |
Implementa ruolo |
cdk-hnb659 fds-deploy-role - |
Assunto dal CDK CLI e potenzialmente CodePipeline per assumere altri ruoli e avviare la AWS CloudFormation distribuzione. La politica di fiducia di questo ruolo controlla chi può utilizzare il servizio AWS CDK in questo AWS ambiente. |
IAMruolo |
AWS CloudFormation ruolo di esecuzione |
cdk-hnb659 - fds-cfn-exec-role |
Questo ruolo viene utilizzato da AWS CloudFormation per eseguire la distribuzione. Le politiche di questo ruolo controllano le operazioni che la CDK distribuzione può eseguire. |
IAMruolo |
Ruolo di ricerca |
cdk-hnb659 fds-lookup-role - |
Questo ruolo viene utilizzato quando CDK CLI deve eseguire ricerche nel contesto ambientale. La politica di fiducia di questo ruolo controlla chi può cercare informazioni nell'ambiente. |
IAMruolo |
Ruolo di pubblicazione di file |
cdk-hnb659 - fds-file-publishing-role |
Questo ruolo viene utilizzato per caricare risorse nel bucket di staging di Amazon S3. Viene assunto dal ruolo di distribuzione. |
IAMruolo |
Ruolo nella pubblicazione di immagini |
cdk-hnb659 - fds-image-publishing-role |
Questo ruolo viene utilizzato per il caricamento Docker immagini nell'archivio di ECR staging di Amazon. Viene assunto dal ruolo di implementazione. |
SSMparametro |
parametro della versione Bootstrap |
/cdk-bootstrap/hnb659fds/ |
La versione del modello bootstrap. Viene utilizzato dal modello bootstrap e dal CDK CLI per convalidare i requisiti. |
Un modo per personalizzare la sintesi CDK dello stack consiste nel modificare il. DefaultStackSynthesizer
Puoi personalizzare questo sintetizzatore per un singolo CDK stack utilizzando la proprietà della synthesizer
tua istanza. Stack
Puoi anche modificare tutti DefaultStackSynthesizer
gli stack dell'CDKapp utilizzando la defaultStackSynthesizer
proprietà dell'istanza. App
Cambia il qualificatore
Il qualificatore viene aggiunto al nome delle risorse create durante il bootstrap. Di default, il valore è hnb659fds
. Quando modificate il qualificatore durante il bootstrap, dovete personalizzare CDK la sintesi dello stack per utilizzare lo stesso qualificatore.
Per modificare il qualificatore, configura la qualifier
proprietà DefaultStackSynthesizer
o configura il qualificatore come chiave di contesto nel file del progetto. CDK cdk.json
Di seguito è riportato un esempio di configurazione della proprietà di: qualifier
DefaultStackSynthesizer
Di seguito è riportato un esempio di configurazione del qualificatore come chiave di contesto in: cdk.json
{ "app": "...", "context": { "@aws-cdk/core:bootstrapQualifier": "MYQUALIFIER" } }
Modificare i nomi delle risorse
Tutte le altre DefaultStackSynthesizer
proprietà si riferiscono ai nomi delle risorse nel modello di bootstrap. È necessario fornire una di queste proprietà solo se si è modificato il modello di bootstrap e si sono modificati i nomi delle risorse o lo schema di denominazione.
Tutte le proprietà accettano i segnaposto speciali${Qualifier}
,, e${AWS::Partition}
. ${AWS::AccountId}
${AWS::Region}
Questi segnaposto vengono sostituiti rispettivamente dai valori del qualifier
parametro e dalla AWS partizione, dall'ID dell'account e dai Regione AWS valori per l'ambiente dello stack.
L'esempio seguente mostra le proprietà più comunemente utilizzate DefaultStackSynthesizer
insieme ai relativi valori predefiniti, come se si stesse istanziando il sintetizzatore. Per un elenco completo, consulta: DefaultStackSynthesizerProps
Utilizzare CliCredentialsStackSynthesizer
Per modificare le credenziali di sicurezza utilizzate per fornire le autorizzazioni durante le CDK distribuzioni, è possibile personalizzare la sintesi utilizzando. CliCredentialsStackSynthesizer
Questo sintetizzatore funziona con le AWS risorse predefinite create durante il bootstrap per archiviare le risorse, come il bucket Amazon S3 e il repository Amazon. ECR Invece di utilizzare i IAM ruoli predefiniti creati da CDK durante il bootstrap, utilizza le credenziali di sicurezza dell'attore che avvia la distribuzione. Pertanto, le credenziali di sicurezza dell'attore devono disporre di autorizzazioni valide per eseguire tutte le azioni di distribuzione. Il diagramma seguente illustra il processo di distribuzione quando si utilizza questo sintetizzatore:
Quando si utilizzaCliCredentialsStackSynthesizer
:
-
Per impostazione predefinita, CloudFormation esegue API chiamate nel tuo account utilizzando le autorizzazioni dell'attore. Pertanto, l'identità corrente deve disporre dell'autorizzazione per apportare le modifiche necessarie alle AWS risorse dello CloudFormation stack, oltre alle autorizzazioni per eseguire le CloudFormation operazioni necessarie, ad esempio o.
CreateStack
UpdateStack
Le funzionalità di distribuzione saranno limitate alle autorizzazioni dell'attore. -
La pubblicazione e la CloudFormation distribuzione delle risorse verranno eseguite utilizzando l'identità corrente. IAM Questa identità deve disporre di autorizzazioni sufficienti sia per la lettura che per la scrittura nell'asset bucket e nell'archivio.
-
Le ricerche vengono eseguite utilizzando l'IAMidentità corrente e le ricerche sono soggette alle relative politiche.
Quando si utilizza questo sintetizzatore, è possibile utilizzare un ruolo di CloudFormation esecuzione separato specificandolo utilizzando l'opzione con any --role-arn
CDK CLI comando.
CliCredentialsStackSynthesizer
contratto bootstrap
CliCredentialsStackSynthesizer
richiede il seguente contratto bootstrap. Queste sono le risorse che devono essere create durante il bootstrap:
Risorsa Bootstrap | Descrizione | Nome predefinito della risorsa prevista | Scopo |
---|---|---|---|
Bucket Amazon S3 |
Secchio di staging |
cdk-hnb659fds-assets- |
Memorizza le risorse dei file. |
ECRArchivio Amazon |
Archivio di staging |
cdk-hnb659 - fds-container-assets |
Archivia e gestisce Docker risorse di immagini. |
La stringa hnb659fds
nel nome della risorsa è denominata qualificatore. Il suo valore predefinito non ha alcun significato particolare. È possibile avere più copie delle risorse di bootstrap in un unico ambiente purché abbiano un qualificatore diverso. Avere più copie può essere utile per tenere separate le risorse di diverse applicazioni nello stesso ambiente.
È possibile implementare il modello di bootstrap predefinito per soddisfare il contratto CliCredentialsStackSynthesizer
bootstrap. Il modello di bootstrap predefinito creerà IAM i ruoli, ma questo sintetizzatore non li utilizzerà. Puoi anche personalizzare il modello di bootstrap per rimuovere i ruoli. IAM
Modificare le CliCredentialsStackSynthesizer
Se si modifica il qualificatore o uno qualsiasi dei nomi di risorse bootstrap predefiniti durante il bootstrap, è necessario modificare il sintetizzatore in modo che utilizzi gli stessi nomi. Puoi modificare il sintetizzatore per un singolo stack o per tutti gli stack dell'app. Di seguito è riportato un esempio:
L'esempio seguente mostra le proprietà più comunemente utilizzate per CliCredentialsStackSynthesizer
insieme ai relativi valori predefiniti. Per un elenco completo, consulta CliCredentialsStackSynthesizerProps:
Utilizzare LegacyStackSynthesizer
LegacyStackSynthesizer
Emula il comportamento delle distribuzioni CDK v1. Le credenziali di sicurezza dell'attore che esegue la distribuzione verranno utilizzate per stabilire le autorizzazioni. Le risorse dei file verranno caricate in un bucket che deve essere creato utilizzando uno AWS CloudFormation stack denominato. CDKToolkit
Il CDK CLI creerà un ECR repository Amazon non gestito denominato store aws-cdk/assets
Docker risorse di immagini. Sarai responsabile della pulizia e della gestione di questo repository. Gli stack sintetizzati utilizzando il LegacyStackSynthesizer
possono essere distribuiti solo utilizzando CDK CLI.
Puoi utilizzare il LegacyStackSynthesizer
se stai migrando dalla CDK v1 alla CDK v2 e non riesci a riavviare i tuoi ambienti. Per i nuovi progetti, si consiglia di non utilizzarlo. LegacyStackSynthesizer
LegacyStackSynthesizer
contratto bootstrap
LegacyStackSynthesizer
richiede il seguente contratto bootstrap. Queste sono le risorse che devono essere create durante il bootstrap:
Risorsa Bootstrap | Descrizione | Nome predefinito della risorsa prevista | Scopo |
---|---|---|---|
Bucket Amazon S3 |
Secchio di staging |
cdk-hnb659fds-assets- |
Memorizza le risorse dei file. |
CloudFormation uscita |
Uscita del nome del bucket |
Pila — Nome dell'output — |
Un CloudFormation output che descrive il nome del bucket di staging |
LegacyStackSynthesizer
Non presuppone l'esistenza di un bucket Amazon S3 con un nome fisso. Invece, il CloudFormation modello sintetizzato conterrà tre CloudFormation parametri per ogni asset di file. Questi parametri memorizzeranno il nome del bucket Amazon S3, la chiave dell'oggetto Amazon S3 e l'hash degli artefatti per ogni asset di file.
Docker le risorse di immagini verranno pubblicate in un ECR repository Amazon denominatoaws-cdk/assets
. Questo nome può essere modificato in base alla risorsa. I repository verranno creati se non esistono.
Deve esistere uno CloudFormation stack con il nome predefinito. CDKToolkit
Questo stack deve avere un nome di CloudFormation esportazione BucketName
che si riferisca allo staging bucket.
Il modello di bootstrap predefinito soddisfa il contratto bootstrap. LegacyStackSynthesizer
Tuttavia, verrà utilizzato solo il bucket Amazon S3 contenuto nelle risorse di bootstrap del modello di bootstrap. Puoi personalizzare il modello di bootstrap per rimuovere Amazon e ECR IAM le risorse SSM bootstrap.
LegacyStackSynthesizer
processo di distribuzione
Quando si utilizza questo sintetizzatore, durante la distribuzione viene eseguito il seguente processo:
-
Il CDK CLI cerca uno CloudFormation stack denominato
CDKToolkit
nel tuo ambiente. Da questa pila, il CDK CLI legge l' CloudFormation output denominato.BucketName
È possibile utilizzare l'--toolkit-stack-name
opzione concdk deploy
per specificare un nome di pila diverso. -
Le credenziali di sicurezza dell'attore che avvia la distribuzione verranno utilizzate per stabilire le autorizzazioni per la distribuzione. Pertanto, l'attore deve disporre di autorizzazioni sufficienti per eseguire tutte le azioni di distribuzione. Ciò include la lettura e la scrittura nel bucket di staging Amazon S3, la creazione e la scrittura nel ECR repository Amazon, l'avvio e il monitoraggio delle AWS CloudFormation distribuzioni e l'esecuzione di tutte le chiamate necessarie per la distribuzione. API
-
Se necessario e se le autorizzazioni sono valide, gli asset di file verranno pubblicati nel bucket di staging di Amazon S3.
-
Se necessario e se le autorizzazioni sono valide, Docker le risorse di immagini vengono pubblicate nell'archivio denominato dalla
repositoryName
proprietà della risorsa. Il valore predefinito è'aws-cdk/assets'
se non fornite un nome per il repository. -
Se le autorizzazioni sono valide, viene eseguita la AWS CloudFormation distribuzione. Le posizioni del bucket di staging e delle chiavi di Amazon S3 vengono passate come parametri. CloudFormation