Questa è la guida per sviluppatori AWS CDK v2. 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à.
La versione 2 di AWS Cloud Development Kit (AWS CDK) è progettata per semplificare la scrittura dell'infrastruttura come codice nel linguaggio di programmazione preferito. Questo argomento descrive le modifiche tra la v1 e la v2 di. AWS CDK
Suggerimento
Le principali modifiche dalla AWS CDK v1 alla CDK v2 sono le seguenti.
-
AWS CDK v2 consolida le parti stabili della AWS Construct Library, inclusa la libreria principale, in un unico pacchetto,.
aws-cdk-lib
Gli sviluppatori non devono più installare pacchetti aggiuntivi per i singoli AWS servizi che utilizzano. Questo approccio a pacchetto singolo significa anche che non è necessario sincronizzare le versioni dei vari pacchetti della libreria CDK.I costrutti L1 (CFNxxxx), che rappresentano le esatte risorse disponibili in AWS CloudFormation, sono sempre considerati stabili e quindi sono inclusi.
aws-cdk-lib
-
I moduli sperimentali, in cui stiamo ancora collaborando con la comunità per sviluppare nuovi costrutti L2 o L3, non sono inclusi.
aws-cdk-lib
Vengono invece distribuiti come pacchetti singoli. I pacchetti sperimentali sono denominati con unalpha
suffisso e un numero di versione semantico. Il numero di versione semantico corrisponde alla prima versione della AWS Construct Library con cui sono compatibili, anch'essa con un suffisso.alpha
I costrutti entrano in giocoaws-cdk-lib
dopo essere stati designati come stabili, permettendo alla Construct Library principale di aderire a un rigoroso sistema di versioni semantiche.La stabilità è specificata a livello di servizio. Ad esempio, se iniziamo a creare uno o più costrutti L2 per Amazon AppFlow, che al momento della stesura di questo documento ha solo costrutti L1, questi appaiono per la prima volta in un modulo denominato.
@aws-cdk/aws-appflow-alpha
Poi, passano aaws-cdk-lib
quando riteniamo che i nuovi costrutti soddisfino le esigenze fondamentali dei clienti.Una volta che un modulo è stato designato stabile e incorporato
aws-cdk-lib
, APIs ne vengono aggiunti di nuovi utilizzando la convenzione «BetAN» descritta nel prossimo bullet.Una nuova versione di ogni modulo sperimentale viene rilasciata con ogni versione di. AWS CDK Per la maggior parte, tuttavia, non è necessario mantenerli sincronizzati. Puoi aggiornare
aws-cdk-lib
il modulo sperimentale ogni volta che vuoi. L'eccezione è che quando due o più moduli sperimentali correlati dipendono l'uno dall'altro, devono avere la stessa versione. -
Per i moduli stabili a cui vengono aggiunte nuove funzionalità, i nuovi APIs (siano essi costrutti completamente nuovi o nuovi metodi o proprietà su un costrutto esistente) ricevono un
Beta1
suffisso mentre il lavoro è in corso. (Seguito daBeta2
Beta3
, e così via quando sono necessarie modifiche sostanziali). Una versione dell'API senza il suffisso viene aggiunta quando l'API è designata stabile. Tutti i metodi tranne il più recente (versione beta o finale) vengono quindi obsoleti.Ad esempio, se aggiungiamo un nuovo metodo
grantPower()
a un costrutto, inizialmente appare come.grantPowerBeta1()
Se sono necessarie modifiche sostanziali (ad esempio, un nuovo parametro o proprietà obbligatorio), verrà denominatagrantPowerBeta2()
la versione successiva del metodo e così via. Quando il lavoro è completo e l'API è finalizzata, viene aggiunto il metodograntPower()
(senza suffisso) e i metodi BetAN diventano obsoleti.Tutte le versioni beta APIs rimarranno nella Construct Library fino alla prossima versione principale (3.0) e le relative firme non cambieranno. Se li utilizzate, vedrete degli avvisi di obsolescenza, quindi dovreste passare alla versione finale dell'API il prima possibile. Tuttavia, nessuna futura release AWS CDK 2.x interromperà l'applicazione.
-
La
Construct
classe è stata estratta da una libreria separata, insieme ai tipi correlati. AWS CDK Questo viene fatto per supportare gli sforzi volti ad applicare il Construct Programming Model ad altri domini. Se state scrivendo i vostri costrutti o state usando related APIs, dovete dichiarare ilconstructs
modulo come dipendenza e apportare piccole modifiche alle importazioni. Se utilizzi funzionalità avanzate, come il collegamento al ciclo di vita dell'app CDK, potrebbero essere necessarie ulteriori modifiche. Per tutti i dettagli, consulta la RFC. -
Le proprietà, i metodi e i tipi obsoleti nella AWS CDK v1.x e nella relativa Construct Library sono stati rimossi completamente dall'API CDK v2. Nella maggior parte delle lingue supportate, questi APIs generano avvisi nella versione 1.x, quindi potresti aver già effettuato la migrazione alla versione sostitutiva. APIs Un elenco completo delle versioni obsolete di CDK v1.x è disponibile su. APIs
GitHub -
Il comportamento limitato dai flag di funzionalità nella v1.x è abilitato di default in CDK AWS CDK v2. I flag di funzionalità precedenti non sono più necessari e nella maggior parte dei casi non sono supportati. Alcuni sono ancora disponibili per consentire di ripristinare il comportamento di CDK v1 in circostanze molto specifiche. Per ulteriori informazioni, consulta Aggiornamento dei contrassegni delle funzionalità.
-
Con CDK v2, gli ambienti in cui vengono implementati devono essere avviati utilizzando il moderno stack di bootstrap. Lo stack di bootstrap legacy (predefinito nella versione v1) non è più supportato. CDK v2 richiede inoltre una nuova versione dello stack moderno. Per aggiornare gli ambienti esistenti, riavviali. Non è più necessario impostare alcun flag di funzionalità o variabile di ambiente per utilizzare il moderno stack di bootstrap.
Importante
Il moderno modello di bootstrap concede efficacemente le autorizzazioni implicite da a qualsiasi account nell'--cloudformation-execution-policies
elenco. AWS --trust
Per impostazione predefinita, questo estende le autorizzazioni di lettura e scrittura a qualsiasi risorsa nell'account avviato. Assicurati di configurare lo stack di bootstrap con politiche e account affidabili con cui ti senti a tuo agio.
Nuovi prerequisiti
La maggior parte dei requisiti per la AWS CDK v2 è la stessa della v1.x. AWS CDK I requisiti aggiuntivi sono elencati qui.
-
Per TypeScript gli sviluppatori, è richiesta la versione TypeScript 3.8 o successiva.
-
È necessaria una nuova versione del CDK Toolkit per l'uso con CDK v2. Ora che CDK v2 è generalmente disponibile, la v2 è la versione predefinita per l'installazione di CDK Toolkit. È retrocompatibile con i progetti CDK v1, quindi non è necessario mantenere installata la versione precedente a meno che non si desideri creare progetti CDK v1. Per eseguire l'aggiornamento, emetti.
npm install -g aws-cdk
Aggiornamento dalla versione 2 Developer AWS CDK Preview
Se utilizzi la CDK v2 Developer Preview, il tuo progetto dipende da una versione Release Candidate di, ad esempio. AWS CDK2.0.0-rc1
Aggiorna questi moduli a2.0.0
, quindi aggiorna i moduli installati nel progetto.
npm install
o yarn install
Dopo aver aggiornato le dipendenze, esegui l'aggiornamento npm update -g aws-cdk
di CDK Toolkit alla versione di rilascio.
Migrazione dalla AWS CDK v1 alla CDK v2
Per migrare la tua app alla AWS CDK v2, aggiorna prima i flag delle funzionalità in. cdk.json
Aggiorna quindi le dipendenze e le importazioni dell'app in base alle esigenze del linguaggio di programmazione in cui è scritta.
Aggiornamento a una versione v1 recente
Stiamo assistendo all'aggiornamento da una vecchia versione della AWS CDK v1 alla versione più recente della v2 in un unico passaggio. Anche se è certamente possibile farlo, si comporterebbe sia l'aggiornamento dopo diversi anni di modifiche (che sfortunatamente non sono stati tutti sottoposti alla stessa quantità di test evolutivi che abbiamo oggi), sia l'aggiornamento tra versioni con nuove impostazioni predefinite e un'organizzazione del codice diversa.
Per un'esperienza di aggiornamento più sicura e per diagnosticare più facilmente l'origine di eventuali modifiche impreviste, ti consigliamo di separare questi due passaggi: prima esegui l'aggiornamento alla versione v1 più recente, quindi passa alla v2.
Aggiornamento dei contrassegni delle funzionalità
Rimuovi i seguenti flag di funzionalità della v1, cdk.json
se esistono, poiché sono tutti attivi per impostazione predefinita nella v2. AWS CDK Se il loro vecchio effetto è importante per l'infrastruttura, sarà necessario apportare modifiche al codice sorgente. Per ulteriori informazioni, consulta l'elenco delle bandiere su GitHub
-
@aws-cdk/core:enableStackNameDuplicates
-
aws-cdk:enableDiffNoFail
-
@aws-cdk/aws-ecr-assets:dockerIgnoreSupport
-
@aws-cdk/aws-secretsmanager:parseOwnedSecretName
-
@aws-cdk/aws-kms:defaultKeyPolicies
-
@aws-cdk/aws-s3:grantWriteWithoutAcl
-
@aws-cdk/aws-efs:defaultEncryptionAtRest
È possibile impostare una serie di flag di funzionalità della v1 per false
ripristinare comportamenti specifici della AWS CDK v1; per un riferimento completo, consulta l'elenco qui Ripristino del comportamento v1 sotto. GitHub
Per entrambi i tipi di flag, utilizzate il cdk diff
comando per controllare le modifiche al modello sintetizzato per vedere se le modifiche a uno di questi flag influiscono sulla vostra infrastruttura.
Compatibilità con CDK Toolkit
CDK v2 richiede la versione 2 o successiva del CDK Toolkit. Questa versione è retrocompatibile con le app CDK v1. Pertanto, puoi utilizzare un'unica versione di CDK Toolkit installata a livello globale con tutti i tuoi AWS CDK progetti, indipendentemente dal fatto che utilizzino la v1 o la v2. Un'eccezione è che CDK Toolkit v2 crea solo progetti CDK v2.
Se è necessario creare progetti CDK v1 e v2, non installate CDK Toolkit v2 a livello globale. (Rimuovilo se lo hai già installato:.) npm remove -g aws-cdk
Per richiamare CDK Toolkit, usate npx to run v1 o v2 del CDK Toolkit come desiderate.
npx aws-cdk@1.x init app --language typescript npx aws-cdk@2.x init app --language typescript
Suggerimento
Aggiornamento delle dipendenze e delle importazioni
Aggiorna le dipendenze dell'app, quindi installa i nuovi pacchetti. Infine, aggiorna le importazioni nel codice.
Applicazioni
Per le app CDK, esegui l'aggiornamento package.json
come segue. Rimuovi le dipendenze dai singoli moduli stabili in stile v1 e stabilisci la versione più bassa richiesta per la tua applicazione (2.0.0 qui). aws-cdk-lib
I costrutti sperimentali sono forniti in pacchetti separati, con versioni indipendenti, con nomi che terminano con e un numero di versione alfa. alpha
Il numero di versione alpha corrisponde alla prima versione aws-cdk-lib
con cui sono compatibili. Qui, abbiamo aggiunto la versione aws-codestar
v2.0.0-alpha.1.
{
"dependencies": {
"aws-cdk-lib": "^2.0.0",
"@aws-cdk/aws-codestar-alpha": "2.0.0-alpha.1",
"constructs": "^10.0.0"
}
}
Costruisci librerie
Per le librerie di costruzione, stabilisci la versione più bassa richiesta per la tua applicazione (2.0.0 qui) e aggiorna come segue. aws-cdk-lib
package.json
Nota che aws-cdk-lib
appare sia come dipendenza tra pari che come dipendenza di sviluppo.
{
"peerDependencies": {
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0"
},
"devDependencies": {
"aws-cdk-lib": "^2.0.0",
"constructs": "^10.0.0",
"typescript": "~3.9.0"
}
}
Nota
Quando si rilascia una libreria compatibile con v2, è necessario eseguire un aumento importante della versione del numero di versione della libreria, poiché si tratta di una modifica fondamentale per gli utenti delle librerie. Non è possibile supportare sia CDK v1 che v2 con una singola libreria. Per continuare a supportare i clienti che utilizzano ancora la v1, puoi mantenere la versione precedente in parallelo o creare un nuovo pacchetto per la v2.
Sei tu a decidere per quanto tempo vuoi continuare a supportare i clienti AWS CDK v1. Potresti prendere spunto dal ciclo di vita del CDK v1 stesso, che è entrato in manutenzione il 1° giugno 2022 e terminerà il 1° giugno 2023. end-of-life Per tutti i dettagli, consulta la Politica di manutenzione.AWS CDK
Librerie e app
Installa le nuove dipendenze eseguendo npm install
oyarn install
.
Modificate le importazioni in modo Construct
da importare dal nuovo constructs
modulo i tipi principali (ad esempio App
e Stack
dal livello superiore diaws-cdk-lib
) e i moduli stabili di Construct Library per i servizi utilizzati dai namespace sottostanti. aws-cdk-lib
import { Construct } from 'constructs';
import { App, Stack } from 'aws-cdk-lib'; // core constructs
import { aws_s3 as s3 } from 'aws-cdk-lib'; // stable module
import * as codestar from '@aws-cdk/aws-codestar-alpha'; // experimental module
Verifica dell'app migrata prima della distribuzione
Prima di distribuire gli stack, usali per verificare eventuali modifiche impreviste cdk diff
alle risorse. Non sono previste modifiche alla logica IDs (che causano la sostituzione delle risorse).
Le modifiche previste includono, a titolo esemplificativo ma non esaustivo:
-
Modifiche alla
CDKMetadata
risorsa. -
Hash degli asset aggiornati.
-
Modifiche relative alla sintesi dello stack di nuova concezione. Si applica se l'app utilizzava il sintetizzatore stack legacy nella v1.
-
L'aggiunta di una regola.
CheckBootstrapVersion
Le modifiche impreviste in genere non sono causate dall'aggiornamento alla AWS CDK v2 di per sé. Di solito, sono il risultato di un comportamento obsoleto che in precedenza era stato modificato dai flag di funzionalità. Questo è un sintomo dell'aggiornamento da una versione di CDK precedente alla 1.85.x circa. Le stesse modifiche si vedrebbero eseguendo l'aggiornamento all'ultima versione v1.x. Di solito puoi risolvere questo problema effettuando le seguenti operazioni:
-
Aggiorna la tua app all'ultima versione v1.x
-
Rimuovi i contrassegni delle funzionalità
-
Se necessario, modificate il codice
-
Implementazione
-
Esegui l'aggiornamento alla v2
Nota
Quando sei pronto per distribuire gli stack nella tua app, valuta la possibilità di distribuirne prima una copia in modo da poterla testare. Il modo più semplice per farlo è distribuirla in un'altra regione. Tuttavia, puoi anche modificare lo IDs stack. Dopo il test, assicurati di distruggere la copia di prova concdk destroy.
Risoluzione dei problemi
TypeScript 'from' expected
o ';' expected
errore nelle importazioni
Aggiornamento alla versione TypeScript 3.8 o successiva.
Esegui 'cdk bootstrap'
Se vedi un errore come il seguente:
❌ MyStack failed: Error: MyStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html) at CloudFormationDeployments.validateBootstrapStackVersion (.../aws-cdk/lib/api/cloudformation-deployments.ts:323:13) at processTicksAndRejections (internal/process/task_queues.js:97:5) MyStack: SSM parameter /cdk-bootstrap/hnb659fds/version not found. Has the environment been bootstrapped? Please run 'cdk bootstrap' (see https://docs.aws.amazon.com/cdk/latest/guide/bootstrapping.html)
AWS CDK v2 richiede uno stack di bootstrap aggiornato e, inoltre, tutte le distribuzioni v2 richiedono risorse bootstrap. (Con la v1, puoi distribuire stack semplici senza bootstrap.) Per tutti i dettagli completi, consultare AWS CDK bootstrap.
Trovare gli stack v1
Durante la migrazione dell'applicazione CDK dalla v1 alla v2, potresti voler identificare gli stack distribuiti AWS CloudFormation che sono stati creati utilizzando v1. Per fare ciò, esegui il seguente comando:
npx awscdk-v1-stack-finder
Per i dettagli sull'utilizzo, consulta il file README di awscdk-v1-stack-finder.