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à.
Avvia il tuo ambiente per utilizzarlo con AWS CDK
Avvia il tuo AWS ambiente per prepararlo alle distribuzioni in AWS Cloud Development Kit (AWS CDK) stack.
-
Per un'introduzione agli ambienti, consulta. Ambienti per AWS CDK
-
Per un'introduzione al bootstrap, vedere. AWS CDK bootstrap
Come avviare il proprio ambiente
È possibile utilizzare l'interfaccia a AWS CDK riga di comando (AWS CDK CLI) o lo strumento di AWS CloudFormation distribuzione preferito per avviare il proprio ambiente.
Usa il CDK CLI
È possibile utilizzare il CDK CLI cdk bootstrap
comando per avviare il tuo ambiente. Questo è il metodo che consigliamo se non hai bisogno di modifiche significative al bootstrap.
- Bootstrap da qualsiasi directory di lavoro
-
Per eseguire il bootstrap da qualsiasi directory di lavoro, fornisci l'ambiente a bootstrap come argomento della riga di comando. Di seguito è riportato un esempio:
$
cdk bootstrap
aws://123456789012/us-east-1
Suggerimento
Se non disponi del tuo numero di AWS account, puoi richiederlo da. AWS Management Console Puoi anche utilizzare il seguente AWS CLI comando per visualizzare le informazioni predefinite del tuo account, incluso il numero di account:
$
aws sts get-caller-identity
Se hai dei profili denominati nei tuoi
credentials
file AWSconfig
and, utilizza l'--profile
opzione per recuperare le informazioni sull'account per un profilo specifico. Di seguito è riportato un esempio:$
aws sts get-caller-identity --profile
prod
Per visualizzare la regione predefinita, usa il
aws configure get
comando:$
aws configure get region
$
aws configure get region --profile
prod
Quando si fornisce un argomento, il
aws://
prefisso è facoltativo. Quanto segue è valido:$
cdk bootstrap
123456789012/us-east-1
Per avviare più ambienti contemporaneamente, fornisci più argomenti:
$
cdk bootstrap
aws://123456789012/us-east-1 aws://123456789012/us-east-2
- Bootstrap dalla directory principale di un progetto CDK
-
È possibile eseguire
cdk bootstrap
dalla directory principale di un CDK progetto contenente uncdk.json
file. Se non fornite un ambiente come argomento, il CDK CLI otterrà informazioni sull'ambiente da fonti predefinite, come icredentials
fileconfig
and o qualsiasi informazione sull'ambiente specificata per lo CDK stack.Quando si esegue il bootstrap dalla directory principale di un CDK progetto, gli ambienti forniti dagli argomenti della riga di comando hanno la precedenza sulle altre fonti.
Per avviare un ambiente specificato nei tuoi
credentials
fileconfig
and, usa l'opzione:--profile
$
cdk bootstrap --profile
prod
Per ulteriori informazioni sul cdk bootstrap
comando e sulle opzioni supportate, consultacdk bootstrap.
Usa qualsiasi AWS CloudFormation strumento
Puoi copiare il modello di bootstrap da aws-cdkcdk bootstrap --show-template
Quindi, utilizza qualsiasi AWS CloudFormation strumento per distribuire il modello nel tuo ambiente.
Con questo metodo, puoi usare AWS CloudFormation StackSets o AWS Control Tower. Puoi anche usare la AWS CloudFormation console o il AWS Command Line Interface (AWS CLI). È possibile apportare modifiche al modello prima di distribuirlo. Questo metodo può essere più flessibile e adatto per implementazioni su larga scala.
Di seguito è riportato un esempio di utilizzo dell'--show-template
opzione per recuperare e salvare il modello di bootstrap sul computer locale:
Per distribuire questo modello utilizzando il CDK CLI, è possibile eseguire quanto segue:
$
cdk bootstrap --template
bootstrap-template.yaml
Di seguito è riportato un esempio di utilizzo di AWS CLI per distribuire il modello:
Per informazioni sull'utilizzo CloudFormation StackSets per avviare più ambienti, consulta Bootstrapping multiple Account AWS for AWS CDK
Quando avviare il proprio ambiente
È necessario avviare ogni AWS ambiente prima di distribuirlo nell'ambiente. Ti consigliamo di avviare in modo proattivo ogni ambiente che intendi utilizzare. Puoi farlo prima di pianificare l'effettiva distribuzione CDK delle app nell'ambiente. Avviando in modo proattivo i tuoi ambienti, previeni potenziali problemi futuri, come i conflitti tra i nomi dei bucket Amazon S3 o la distribuzione di CDK app in ambienti che non sono stati avviati.
È possibile avviare un ambiente più di una volta. Se un ambiente è già stato avviato, lo stack di bootstrap verrà aggiornato se necessario. Altrimenti non succederà nulla.
Se tenti di implementare uno CDK stack in un ambiente che non è stato avviato, vedrai un errore simile al seguente:
$
cdk deploy
✨ Synthesis time: 2.02s ❌ Deployment failed: Error: BootstrapExampleStack: 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)
Aggiorna lo stack di bootstrap
Periodicamente, il CDK team aggiornerà il modello di bootstrap a una nuova versione. Quando ciò accade, ti consigliamo di aggiornare lo stack di bootstrap. Se non hai personalizzato il processo di bootstrap, puoi aggiornare lo stack di bootstrap seguendo gli stessi passaggi utilizzati originariamente per avviare il tuo ambiente. Per ulteriori informazioni, consulta Cronologia delle versioni del modello Bootstrap.
Risorse predefinite create durante il bootstrap
IAMruoli creati durante il bootstrap
Per impostazione predefinita, il bootstrap prevede i seguenti AWS Identity and Access Management (IAM) ruoli nell'ambiente:
-
CloudFormationExecutionRole
-
DeploymentActionRole
-
FilePublishingRole
-
ImagePublishingRole
-
LookupRole
CloudFormationExecutionRole
-
Questo IAM ruolo è un ruolo di CloudFormation servizio che concede l' CloudFormation autorizzazione a eseguire distribuzioni di stack per conto dell'utente. Questo ruolo consente di eseguire CloudFormation AWS API chiamate nel tuo account, inclusa la distribuzione di stack.
Utilizzando un ruolo di servizio, le autorizzazioni fornite per il ruolo di servizio determinano quali azioni possono essere eseguite sulle risorse. CloudFormation Senza questo ruolo di servizio, le credenziali di sicurezza fornite con il CDK CLI determinerebbe cosa CloudFormation è consentito fare.
DeploymentActionRole
-
Questo IAM ruolo concede l'autorizzazione a eseguire distribuzioni nell'ambiente dell'utente. È assunto dal CDK CLI durante le distribuzioni.
Utilizzando un ruolo per le distribuzioni, è possibile eseguire distribuzioni tra account poiché il ruolo può essere assunto dalle identità di un account diverso. AWS
FilePublishingRole
-
Questo IAM ruolo concede l'autorizzazione a eseguire azioni sul bucket Amazon Simple Storage Service (Amazon S3) avviato, incluso il caricamento e l'eliminazione di risorse. È assunto dal CDK CLI durante le distribuzioni.
ImagePublishingRole
-
Questo IAM ruolo concede l'autorizzazione a eseguire azioni sul repository Amazon Elastic Container Registry (ECRAmazon) avviato. È assunto dal CDK CLI durante le distribuzioni.
LookupRole
-
Questo IAM ruolo concede
readOnly
l'autorizzazione a cercare valori di contesto dall'ambiente. AWS È assunto dal CDK CLI quando si eseguono attività come la sintesi e l'implementazione di modelli.
Risorsa IDs creata durante il bootstrap
Quando si distribuisce il modello di bootstrap predefinito, le risorse fisiche IDs per bootstrap vengono create utilizzando la seguente struttura:. cdk-
qualifier
-description
-account-ID
-Region
-
Qualificatore: un valore di stringa univoco di nove caratteri di.
hnb659fds
Il valore effettivo non ha alcun significato. -
Descrizione: una breve descrizione della risorsa. Ad esempio
container-assets
. -
ID account: l' Account AWS ID dell'ambiente.
-
Regione: Regione AWS l'ambiente.
Di seguito è riportato un esempio di ID fisico del bucket di staging Amazon S3 creato durante il bootstrap:. cdk-hnb659fds-assets-012345678910-us-west-1
Autorizzazioni da utilizzare durante il bootstrap del proprio ambiente
Quando si avvia un AWS ambiente, l'IAMidentità che esegue il bootstrap deve disporre almeno delle seguenti autorizzazioni:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudformation:*", "ecr:*", "ssm:*", "s3:*", "iam:*" ], "Resource": "*" } ] }
Nel tempo, lo stack di bootstrap, incluse le risorse create e le autorizzazioni necessarie, potrebbe cambiare. Con le modifiche future, potrebbe essere necessario modificare le autorizzazioni necessarie per avviare un ambiente.
Personalizza il bootstrap
Se il modello di bootstrap predefinito non soddisfa le tue esigenze, puoi personalizzare l'avvio delle risorse nel tuo ambiente nei seguenti modi:
-
Usa le opzioni della riga di comando con il
cdk bootstrap
comando: questo metodo è ideale per apportare piccole modifiche specifiche supportate tramite le opzioni della riga di comando. -
Modifica il modello di bootstrap predefinito e distribuiscilo: questo metodo è ideale per apportare modifiche complesse o se desideri il controllo completo sulla configurazione delle risorse fornite durante il bootstrap.
Per ulteriori informazioni sulla personalizzazione del bootstrap, consulta. Personalizza il AWS CDK bootstrap
Bootstrap con Pipeline CDK
Se utilizzi CDK Pipelines per la distribuzione nell'ambiente di un altro account e ricevi un messaggio simile al seguente:
Policy contains a statement with one or more invalid principals
Questo messaggio di errore indica che i IAM ruoli appropriati non esistono nell'altro ambiente. La causa più probabile è che l'ambiente non è stato avviato. Avvia l'ambiente e riprova.
Proteggere lo stack di bootstrap dall'eliminazione
Se uno stack di bootstrap viene eliminato, verranno eliminate anche le AWS risorse originariamente fornite nell'ambiente per supportare le CDK distribuzioni. Ciò causerà l'interruzione del funzionamento della pipeline. Se ciò accade, non esiste una soluzione generale per il ripristino.
Dopo aver avviato l'ambiente, non eliminate e ricreate lo stack di bootstrap dell'ambiente. Prova invece ad aggiornare lo stack di bootstrap a una nuova versione eseguendo nuovamente il comando. cdk bootstrap
Per evitare l'eliminazione accidentale dello stack di bootstrap, ti consigliamo di fornire l'--termination-protection
opzione con il cdk bootstrap
comando per abilitare la protezione dalla terminazione. È possibile abilitare la protezione dalla terminazione su stack di bootstrap nuovi o esistenti. Per istruzioni su come abilitare la protezione dalla terminazione, consulta Abilitare la protezione dalla terminazione per lo stack di bootstrap.
Cronologia delle versioni del modello Bootstrap
Il modello bootstrap è dotato di versioni e si evolve nel tempo con se stesso. AWS CDK Se fornisci il tuo modello di bootstrap, tienilo aggiornato con il modello canonico predefinito. Vuoi assicurarti che il tuo modello continui a funzionare con tutte le funzionalità. CDK
Nota
Le versioni precedenti del modello di bootstrap ne creavano uno AWS KMS key in ogni ambiente bootstrap per impostazione predefinita. Per evitare addebiti per la KMS chiave, riavvia questi ambienti utilizzando. --no-bootstrap-customer-key
L'impostazione predefinita attuale è no KMS key, il che aiuta a evitare questi addebiti.
Questa sezione contiene un elenco delle modifiche apportate in ogni versione.
Versione del modello | AWS CDK versione | Modifiche |
---|---|---|
1 | 1.40.0 | Versione iniziale del modello con Bucket, Key, Repository e Roles. |
2 | 1.45.0 | Dividi il ruolo di pubblicazione delle risorse in ruoli separati per la pubblicazione di file e immagini. |
3 | 1.46.0 | Aggiungi FileAssetKeyArn l'esportazione per poter aggiungere autorizzazioni di decrittografia ai consumatori di risorse. |
4 | 1.61.0 | AWS KMS le autorizzazioni sono ora implicite tramite Amazon S3 e non sono più necessarie. FileAsetKeyArn Aggiungi il CdkBootstrapVersion SSM parametro in modo che la versione dello stack di bootstrap possa essere verificata senza conoscere il nome dello stack. |
5 | 1.87.0 | Il ruolo di distribuzione può leggere i parametriSSM. |
6 | 1.108.0 | Aggiungi il ruolo di ricerca separato dal ruolo di distribuzione. |
6 | 1.109.0 | Allega aws-cdk:bootstrap-role tag ai ruoli di distribuzione, pubblicazione di file e pubblicazione di immagini. |
7 | 1.110.0 | Il ruolo di distribuzione non può più leggere direttamente i Bucket nell'account di destinazione. (Tuttavia, questo ruolo è effettivamente un amministratore e può sempre utilizzare le sue AWS CloudFormation autorizzazioni per rendere comunque leggibile il bucket). |
8 | 1.114.0 | Il ruolo di ricerca dispone di autorizzazioni complete di sola lettura per l'ambiente di destinazione e dispone anche di un tag. aws-cdk:bootstrap-role |
9 | 2.1.0 | Risolve il rifiuto dei caricamenti di risorse di Amazon S3 mediante una crittografia di riferimento comune. SCP |
10 | 2.4.0 | Amazon ECR ScanOnPush è ora abilitato per impostazione predefinita. |
11 | 2.18.0 | Aggiunge una politica che consente a Lambda di estrarre dai ECR repository Amazon in modo che sopravviva al riavvio. |
12 | 2.20.0 | Aggiunge il supporto per la sperimentazionecdk import. |
13 | 2.25.0 | Rende immutabili le immagini dei contenitori nei repository Amazon ECR creati con bootstrap. |
14 | 2.34.0 | Per impostazione predefinita, disattiva la scansione delle ECR immagini di Amazon a livello di repository per consentire l'avvio delle regioni che non supportano la scansione delle immagini. |
15 | 2,60,0 | KMSle chiavi non possono essere etichettate. |
16 | 2,69,0 | Risolve la ricerca di Security Hub KMS.2. |
17. | 2,72,0 | Risolve i risultati del Security Hub ECR.3. |
18. | 2,80,0 | Sono state annullate le modifiche apportate alla versione 16 in quanto non funzionano in tutte le partizioni e non sono consigliate. |
19. | 2106,1 | Sono state annullate le modifiche apportate alla versione 18 in cui la AccessControl proprietà è stata rimossa dal modello. (#27964 |
20 | 2,119,0 | Aggiungi ssm:GetParameters un'azione al ruolo di distribuzione. AWS CloudFormation IAM Per ulteriori informazioni, consulta #28336 |
21 | 2,149,0 | Aggiungi una condizione al ruolo di pubblicazione dei file. |
22 | 2,160,0 | Aggiungi sts:TagSession le autorizzazioni alla politica di fiducia dei ruoli bootstrap. IAM |
23. | 2,1161,0 | Aggiungi cloudformation:RollbackStack e cloudformation:ContinueUpdateRollback autorizzazioni alla politica di fiducia del ruolo di distribuzione. IAM Ciò fornisce le autorizzazioni per il comando. cdk
rollback |
Esegui l'aggiornamento dal modello bootstrap precedente a quello moderno
La AWS CDK v1 supportava due modelli di bootstrap, legacy e moderni. CDKv2 supporta solo il modello moderno. Per riferimento, ecco le differenze di alto livello tra questi due modelli.
Funzionalità | Legacy (solo v1) | Moderno (v1 e v2) |
---|---|---|
Implementazioni tra account | Non consentito | Consentito |
AWS CloudFormation Autorizzazioni | Esegue la distribuzione utilizzando le autorizzazioni dell'utente corrente (determinate dal AWS profilo, dalle variabili di ambiente, ecc.) | Esegue la distribuzione utilizzando le autorizzazioni specificate al momento del provisioning dello stack di bootstrap (ad esempio, utilizzando) --trust |
Funzione Versioni multiple | È disponibile solo una versione dello stack di bootstrap | Lo stack Bootstrap ha una versione; nuove risorse possono essere aggiunte nelle versioni future e le AWS CDK app possono richiedere una versione minima |
Risorse* | Bucket Amazon S3 | Bucket Amazon S3 |
AWS KMS key | ||
IAMruoli | ||
ECRArchivio Amazon | ||
SSMparametro per il controllo delle versioni | ||
Denominazione delle risorse | Generato automaticamente | Deterministico |
Crittografia Bucket | Chiave predefinita | AWS chiave gestita per impostazione predefinita. È possibile personalizzare per utilizzare una chiave gestita dal cliente. |
* Aggiungeremo risorse aggiuntive al modello di bootstrap secondo necessità.
Un ambiente che è stato avviato utilizzando il modello precedente deve essere aggiornato per utilizzare il modello moderno per la v2 mediante riavvio. CDK Ridistribuisci tutte le AWS CDK applicazioni nell'ambiente almeno una volta prima di eliminare il bucket legacy.
Indirizza i risultati del Security Hub
Se lo utilizzi AWS Security Hub, potresti vedere i risultati riportati su alcune delle risorse create dal processo di AWS CDK bootstrap. I risultati del Security Hub ti aiutano a trovare le configurazioni delle risorse che dovresti ricontrollare per verificarne l'accuratezza e la sicurezza. Abbiamo esaminato queste configurazioni specifiche delle risorse con AWS Security e siamo certi che non costituiscano un problema di sicurezza.
[KMS.2] IAM i principali non dovrebbero avere politiche in IAM linea che consentano azioni di decrittografia su tutte le chiavi KMS
Il deploy role (DeploymentActionRole
) concede l'autorizzazione a leggere i dati crittografati, necessaria per le distribuzioni tra account con Pipelines. CDK Le politiche in questo ruolo non concedono l'autorizzazione a tutti i dati. Concede l'autorizzazione a leggere i dati crittografati da Amazon S3 AWS KMS e solo quando tali risorse lo consentono tramite la policy del bucket o della chiave.
Di seguito è riportato un frammento di queste due istruzioni nel ruolo di distribuzione tratte dal modello bootstrap:
DeploymentActionRole: Type: AWS::IAM::Role Properties: ... Policies: - PolicyDocument: Statement: ... - Sid: PipelineCrossAccountArtifactsBucket Effect: Allow Action: - s3:GetObject* - s3:GetBucket* - s3:List* - s3:Abort* - s3:DeleteObject* - s3:PutObject* Resource: "*" Condition: StringNotEquals: s3:ResourceAccount: Ref: AWS::AccountId - Sid: PipelineCrossAccountArtifactsKey Effect: Allow Action: - kms:Decrypt - kms:DescribeKey - kms:Encrypt - kms:ReEncrypt* - kms:GenerateDataKey* Resource: "*" Condition: StringEquals: kms:ViaService: Fn::Sub: s3.${AWS::Region}.amazonaws.com ...
Perché Security Hub lo segnala?
Le politiche contengono una clausola Resource: *
combinata con una Condition
clausola. Security Hub contrassegna il carattere *
jolly. Questa jolly viene utilizzata perché al momento dell'avvio dell'account, la AWS KMS chiave creata da CDK Pipelines per il bucket degli CodePipeline artefatti non esiste ancora e quindi non può essere referenziata nel modello di bootstrap da. ARN Inoltre, Security Hub non prende in considerazione la Condition
clausola quando alza questa bandiera. Ciò Condition
si limita Resource: *
alle richieste effettuate dalla stessa Account AWS chiave. AWS KMS Queste richieste devono provenire da Amazon S3 nella Regione AWS stessa chiave. AWS KMS
Devo correggere questo risultato?
Finché non hai modificato la AWS KMS chiave sul tuo modello di bootstrap per renderla eccessivamente permissiva, il ruolo deploy non consente più accessi del necessario. Pertanto, non è necessario correggere questo risultato.
E se volessi correggere questo risultato?
Il modo in cui correggi questo risultato dipende dal fatto che utilizzerai o meno CDK Pipelines per le distribuzioni tra account.
Per correggere la ricerca del Security Hub e utilizzare CDK Pipelines per le distribuzioni tra account
-
Se non lo hai fatto, distribuisci lo stack di CDK bootstrap usando il comando.
cdk bootstrap
-
Se non l'hai ancora fatto, crea e distribuisci il tuo CDK PipelinePer istruzioni, consulta Integrazione e distribuzione continue (CI/CD) con CDK Pipelines.
-
Procurati la AWS KMS chiave ARN del secchio degli CodePipeline artefatti. Questa risorsa viene creata durante la creazione della pipeline.
-
Ottieni una copia del modello di CDK bootstrap per modificarlo. Di seguito è riportato un esempio, utilizzando il AWS CDK CLI:
$
cdk bootstrap --show-template > bootstrap-template.yaml
-
Modificate il modello sostituendo
Resource: *
l'PipelineCrossAccountArtifactsKey
istruzione con il vostro ARN valore. -
Implementa il modello per aggiornare lo stack di bootstrap. Di seguito è riportato un esempio, utilizzando il CDK CLI:
$
cdk bootstrap aws://
account-id
/region
--template bootstrap-template.yaml
Per correggere il problema relativo al Security Hub se non utilizzi CDK Pipelines per distribuzioni tra account
-
Procurati una copia del modello di CDK bootstrap per modificarlo. Di seguito è riportato un esempio, utilizzando il CDK CLI:
$
cdk bootstrap --show-template > bootstrap-template.yaml
-
Eliminare le
PipelineCrossAccountArtifactsKey
istruzioniPipelineCrossAccountArtifactsBucket
and dal modello. -
Implementa il modello per aggiornare lo stack di bootstrap. Di seguito è riportato un esempio, utilizzando il CDK CLI:
$
cdk bootstrap aws://
account-id
/region
--template bootstrap-template.yaml
Considerazioni
Poiché si esegue il provisioning delle risorse nell'ambiente in uso, è possibile che vengano AWS addebitati costi quando tali risorse vengono utilizzate con. AWS CDK