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à.
È possibile personalizzare il AWS Cloud Development Kit (AWS CDK) bootstrap utilizzando l'interfaccia a AWS CDK riga di comando (AWS CDK CLI) o modificando e distribuendo il modello bootstrap. AWS CloudFormation
Per un'introduzione al bootstrap, vedi. AWS CDK bootstrap
Argomenti
Usa il CDK CLI per personalizzare il bootstrap
Di seguito sono riportati alcuni esempi di come personalizzare il bootstrap utilizzando il CDK CLI. Per un elenco di tutte le cdk bootstrap
opzioni, vederecdk bootstrap.
- Sostituisci il nome del bucket Amazon S3
-
Utilizza l'
--bootstrap-bucket-name
opzione per sovrascrivere il nome predefinito del bucket Amazon S3. Ciò potrebbe richiedere la modifica della sintesi del modello. Per ulteriori informazioni, consulta Personalizza la sintesi dello stack CDK. - Modifica le chiavi di crittografia lato server per il bucket Amazon S3
-
Per impostazione predefinita, il bucket Amazon S3 nello stack di bootstrap è configurato per utilizzare chiavi AWS gestite per la crittografia lato server. Per utilizzare una chiave gestita dal cliente esistente, utilizza l'
--bootstrap-kms-key-id
opzione e fornisci un valore da utilizzare per la AWS Key Management Service chiave ().AWS KMS Se desideri un maggiore controllo sulla chiave di crittografia, fornisci di--bootstrap-customer-key
utilizzare una chiave gestita dal cliente. - Associa le politiche gestite al ruolo di implementazione assunto da AWS CloudFormation
-
Per impostazione predefinita, gli stack vengono distribuiti con autorizzazioni di amministratore complete utilizzando la policy.
AdministratorAccess
Per utilizzare le tue politiche gestite, utilizza l'--cloudformation-execution-policies
opzione e fornisci le ARNs politiche gestite da allegare al ruolo di distribuzione.Per fornire più policy, passa loro una singola stringa, separata da virgole:
$
cdk bootstrap --cloudformation-execution-policies
"arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
Per evitare errori di distribuzione, assicurati che le politiche specificate siano sufficienti per tutte le distribuzioni che eseguirai nell'ambiente da avviare.
- Modifica il qualificatore che viene aggiunto ai nomi delle risorse nello stack di bootstrap
-
Per impostazione predefinita, il
hnb659fds
qualificatore viene aggiunto all'ID fisico delle risorse nello stack di bootstrap. Per modificare questo valore, usa l'opzione.--qualifier
Questa modifica è utile quando si effettua il provisioning di più stack di bootstrap nello stesso ambiente per evitare conflitti di nomi.
La modifica del qualificatore ha lo scopo di isolare i nomi tra i test automatici del CDK stesso. A meno che non sia possibile definire in modo molto preciso le autorizzazioni IAM assegnate al ruolo di CloudFormation esecuzione, non vi sono vantaggi in termini di isolamento delle autorizzazioni nell'avere due diversi stack di bootstrap in un unico account. Pertanto, in genere non è necessario modificare questo valore.
Quando modificate il qualificatore, l'app CDK deve passare il valore modificato al sintetizzatore stack. Per ulteriori informazioni, consulta Personalizza la sintesi dello stack CDK.
-
Usa l'
--tags
opzione nel formato diKEY=VALUE
per aggiungere CloudFormation tag allo stack di bootstrap. - Specificane altri Account AWS che possono essere implementati nell'ambiente da avviare
-
Utilizzate l'
--trust
opzione per fornire informazioni aggiuntive Account AWS che possono essere distribuite nell'ambiente in cui si sta effettuando l'avvio. Per impostazione predefinita, l'account che esegue il bootstrap sarà sempre considerato attendibile.Questa opzione è utile quando si avvia un ambiente che è un CDK Pipeline da un altro ambiente verrà distribuito in.
Quando si utilizza questa opzione, è necessario fornire
--cloudformation-execution-policies
anche.Per aggiungere account attendibili a uno stack di bootstrap esistente, devi specificare tutti gli account da considerare attendibili, inclusi quelli che potresti aver fornito in precedenza. Se fornisci solo nuovi account da considerare attendibili, gli account precedentemente attendibili verranno rimossi.
Di seguito è riportato un esempio in cui vengono considerati attendibili due account:
$
cdk bootstrap
⏳ Bootstrapping environment aws://123456789012/us-west-2... Trusted accounts for deployment: 234567890123, 987654321098 Trusted accounts for lookup: (none) Execution policies: arn:aws:iam::aws:policy/AdministratorAccess CDKToolkit: creating CloudFormation changeset... ✅ Environment aws://123456789012/us-west-2 bootstrapped.aws://123456789012/us-west-2
--trust234567890123
--trust987654321098
--cloudformation-execution-policiesarn:aws:iam::aws:policy/AdministratorAccess
- Specificate altri Account AWS che possano cercare informazioni nell'ambiente da avviare
-
Utilizzate l'
--trust-for-lookup
opzione per specificare Account AWS che è consentito cercare informazioni di contesto dall'ambiente che viene avviato. Questa opzione è utile per concedere agli account il permesso di sintetizzare gli stack che verranno distribuiti nell'ambiente, senza concedere loro effettivamente il permesso di distribuire direttamente tali stack. - Abilita la protezione dalla terminazione per lo stack di bootstrap
-
Se uno stack di bootstrap viene eliminato, verranno eliminate anche le AWS risorse originariamente fornite nell'ambiente. Dopo aver avviato l'ambiente, si consiglia di non eliminare e ricreare lo stack di bootstrap dell'ambiente, a meno che non lo si stia facendo intenzionalmente. Prova invece ad aggiornare lo stack di bootstrap a una nuova versione eseguendo nuovamente il comando.
cdk bootstrap
Usa l'
--termination-protection
opzione per gestire le impostazioni di protezione dalla terminazione per lo stack di bootstrap. Abilitando la protezione dalla terminazione, si evita che lo stack di bootstrap e le relative risorse vengano eliminati accidentalmente. Ciò è particolarmente importante se si utilizza CDK Pipelines poiché non esiste un'opzione di ripristino generale se si elimina accidentalmente lo stack di bootstrap.Dopo aver abilitato la protezione dalla terminazione, puoi utilizzare la console AWS CLI or AWS CloudFormation per verificare.
Per abilitare la protezione dalla terminazione
-
Esegui il comando seguente per abilitare la protezione dalla terminazione su uno stack di bootstrap nuovo o esistente:
$
cdk bootstrap --termination-protection
-
Usa la CloudFormation console AWS CLI o per verificare. L'esempio seguente utilizza la AWS CLI. Se hai modificato il nome dello stack di bootstrap, sostituiscilo
CDKToolkit
con il nome dello stack:$
aws cloudformation describe-stacks --stack-name
" trueCDKToolkit
--query "Stacks[0].EnableTerminationProtection
-
Modifica il modello di bootstrap predefinito
Quando hai bisogno di una maggiore personalizzazione rispetto al CDK CLI può fornire, è possibile modificare il modello di bootstrap secondo necessità. Quindi, distribuisci il modello per avviare il tuo ambiente.
Per modificare e distribuire il modello di bootstrap predefinito
-
Ottieni il modello di bootstrap predefinito utilizzando l'opzione.
--show-template
Per impostazione predefinita, il CDK CLI mostrerà il modello nella finestra del terminale. È possibile modificare il CDK CLI comando per salvare il modello sul computer locale. Di seguito è riportato un esempio:$
cdk bootstrap --show-template
> my-bootstrap-template.yaml
-
Modifica il modello di bootstrap secondo necessità. Qualsiasi modifica apportata deve rispettare il contratto del modello di bootstrap. Per ulteriori informazioni sul modello di contratto bootstrap, consulta. Segui il contratto bootstrap
Per evitare che le personalizzazioni vengano sovrascritte accidentalmente in un secondo momento da qualcuno che
cdk bootstrap
utilizza il modello predefinito, modifica il valore predefinito del parametro template.BootstrapVariant
Il CDK CLI consentirà la sovrascrittura dello stack di bootstrap solo con modelli che hanno la stessa versioneBootstrapVariant
e una versione uguale o superiore a quella del modello attualmente distribuito. -
Distribuisci il modello modificato utilizzando il metodo di distribuzione preferito. AWS CloudFormation Di seguito è riportato un esempio che utilizza il CDK CLI:
$
cdk bootstrap --template
my-bootstrap-template.yaml
Segui il contratto bootstrap
Affinché le app CDK vengano distribuite correttamente, i CloudFormation modelli prodotti durante la sintesi devono specificare correttamente le risorse create durante il bootstrap. Queste risorse vengono comunemente chiamate risorse bootstrap. Il bootstrap crea risorse nell' AWS ambiente che vengono utilizzate per eseguire distribuzioni e AWS CDK gestire gli asset delle applicazioni. Synthesis produce CloudFormation modelli da ogni stack CDK dell'applicazione. Questi modelli non si limitano a definire le AWS risorse che verranno fornite dall'applicazione. Specificano inoltre le risorse di bootstrap da utilizzare durante la distribuzione.
Durante la sintesi, il CDK CLI non sa esattamente come sia stato avviato il vostro AWS ambiente. Invece, il CDK CLI produce CloudFormation modelli basati sul sintetizzatore configurato. Pertanto, quando si personalizza il bootstrap, potrebbe essere necessario personalizzare la sintesi. Per istruzioni sulla personalizzazione della sintesi, vedere. Personalizza la sintesi dello stack CDK Lo scopo è garantire che i CloudFormation modelli sintetizzati siano compatibili con l'ambiente di avvio. Questa compatibilità è denominata contratto bootstrap.
Il metodo più semplice per personalizzare la sintesi dello stack consiste nel modificare la DefaultStackSynthesizer
classe nell'istanza. Stack
Se avete bisogno di una personalizzazione che vada oltre a ciò che questa classe può offrire, potete scrivere il vostro sintetizzatore come classe che IStackSynthesizer
implementa (magari derivando da). DefaultStackSynthesizer
Quando personalizzi il bootstrap, segui il contratto del modello bootstrap per rimanere compatibile con. DefaultStackSynthesizer
Se modifichi il bootstrap oltre il contratto del modello bootstrap, dovrai scrivere il tuo sintetizzatore.
Controllo delle versioni
Il modello di bootstrap deve contenere una risorsa per creare un parametro Amazon EC2 Systems Manager (SSM) con un nome noto e un output che rifletta la versione del modello:
Resources:
CdkBootstrapVersion:
Type: AWS::SSM::Parameter
Properties:
Type: String
Name:
Fn::Sub: '/cdk-bootstrap/${Qualifier}/version'
Value: 4
Outputs:
BootstrapVersion:
Value:
Fn::GetAtt: [CdkBootstrapVersion, Value]
Roles
DefaultStackSynthesizer
Richiede cinque ruoli IAM per cinque scopi diversi. Se non utilizzi i ruoli predefiniti, devi specificare il tuo ruolo IAM ARNs all'interno DefaultStackSynthesizer
dell'oggetto. I ruoli sono i seguenti:
-
Il ruolo di distribuzione è assunto dal CDK CLI e da AWS CodePipeline implementare in un ambiente.
AssumeRolePolicy
Controlla chi può dispiegarsi nell'ambiente. Nel modello, puoi vedere le autorizzazioni necessarie per questo ruolo. -
Il ruolo di ricerca è assunto dal CDK CLI per eseguire ricerche contestuali in un ambiente.
AssumeRolePolicy
Controlla chi può dispiegarsi nell'ambiente. Le autorizzazioni necessarie per questo ruolo possono essere visualizzate nel modello. -
Il ruolo di pubblicazione dei file e il ruolo di pubblicazione delle immagini sono assunti dal CDK CLI e mediante AWS CodeBuild progetti di pubblicazione di risorse in un ambiente. Vengono utilizzati per scrivere rispettivamente nel bucket Amazon S3 e nel repository Amazon ECR. Questi ruoli richiedono l'accesso in scrittura a queste risorse.
-
Il ruolo di AWS CloudFormation esecuzione viene passato AWS CloudFormation a eseguire la distribuzione effettiva. Le relative autorizzazioni sono le autorizzazioni in base alle quali verrà eseguita la distribuzione. Le autorizzazioni vengono passate allo stack come parametro che elenca la politica gestita. ARNs
Output
Il CDK CLI richiede che nello stack di bootstrap siano presenti i seguenti CloudFormation output:
-
BucketName
— Il nome del file asset bucket. -
BucketDomainName
— Il bucket di risorse di file nel formato del nome di dominio. -
BootstrapVersion
— La versione attuale dello stack bootstrap.
Cronologia dei modelli
Il modello bootstrap ha una versione 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à di CDK. Per ulteriori informazioni, consulta Cronologia delle versioni del modello Bootstrap.