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à.
Implementa uno o più AWS CDK stack nel tuo ambiente. AWS
Durante la distribuzione, il CDK CLI emetterà indicatori di avanzamento, simili a quelli osservabili dalla AWS CloudFormation console.
Se l' AWS ambiente non è avviato, verranno implementati correttamente solo gli stack senza risorse e con modelli sintetizzati inferiori a 51.200 byte.
Utilizzo
$
cdk deploy
<arguments>
<options>
Argomenti
- ID dello stack CDK
-
L'ID di costruzione dello stack CDK dell'app da distribuire.
Tipo: Stringa
Required: No
Opzioni
Per un elenco di opzioni globali che funzionano con tutti i CDK CLI comandi, vediOpzioni globali.
--all
BOOLEAN
-
Implementa tutti gli stack nella tua app CDK.
Valore predefinito:
false
--asset-parallelism
BOOLEAN
-
Specificate se creare e pubblicare risorse in parallelo.
--asset-prebuild
BOOLEAN
-
Specificate se creare tutte le risorse prima di distribuire il primo stack. Questa opzione è utile in caso di errore Docker costruisce.
Valore predefinito:
true
--build-exclude, -E
ARRAY
-
Non ricostruite la risorsa con l'ID fornito.
Questa opzione può essere specificata più volte in un unico comando.
Valore predefinito:
[]
--change-set-name
STRING
-
Il nome del set di AWS CloudFormation modifiche da creare.
Questa opzione non è compatibile con
--method='direct'
. --concurrency
NUMBER
-
Implementa più stack in parallelo tenendo conto delle dipendenze tra stack. Utilizza questa opzione per velocizzare le implementazioni. È comunque necessario tenere conto di altri AWS CloudFormation limiti di Account AWS velocità.
Fornisci un numero per specificare il numero massimo di distribuzioni simultanee (in base alla dipendenza) da eseguire.
Valore predefinito:
1
--exclusively, -e
BOOLEAN
-
Implementa solo gli stack richiesti e non include le dipendenze.
--force, -f
BOOLEAN
-
Quando esegui la distribuzione per aggiornare uno stack esistente, il CDK CLI confronterà il modello e i tag dello stack distribuito con lo stack che sta per essere distribuito. Se non viene rilevata alcuna modifica, il CDK CLI salterà la distribuzione.
Per ignorare questo comportamento e distribuire sempre gli stack, anche se non viene rilevata alcuna modifica, utilizzate questa opzione.
Valore predefinito:
false
--help, -h
BOOLEAN
-
Mostra le informazioni di riferimento relative al comando.
cdk deploy
--hotswap
BOOLEAN
-
Implementazioni Hotswap per uno sviluppo più rapido. Questa opzione tenta di eseguire una distribuzione hotswap più rapida, se possibile. Ad esempio, se modifichi il codice di una funzione Lambda nella tua app CDK, il CDK CLI aggiornerà la risorsa direttamente tramite il servizio APIs anziché eseguire una distribuzione. CloudFormation
Se il CDK CLI rileva modifiche che non supportano l'hotswap, tali modifiche verranno ignorate e verrà visualizzato un messaggio. Se preferisci eseguire una CloudFormation distribuzione completa come alternativa, usa invece.
--hotswap-fallback
Il CDK CLI utilizza le tue AWS credenziali correnti per eseguire le chiamate API. Non assume i ruoli del tuo stack di bootstrap, anche se il flag della
@aws-cdk/core:newStyleStackSynthesis
funzionalità è impostato su.true
Questi ruoli non dispongono delle autorizzazioni necessarie per aggiornare le AWS risorse direttamente, senza utilizzarle. CloudFormation Per questo motivo, assicurati che le tue credenziali appartengano allo stesso Account AWS stack su cui esegui le distribuzioni hotswap e che dispongano delle autorizzazioni IAM necessarie per aggiornare le risorse.L'hotswapping è attualmente supportato per le seguenti modifiche:
-
Risorse di codice (tra cui Docker immagini e codice in linea), modifiche ai tag e modifiche alla configurazione (sono supportate solo le variabili di descrizione e ambiente) delle funzioni Lambda.
-
Versioni Lambda e modifiche agli alias.
-
Modifiche alla definizione delle macchine a AWS Step Functions stati.
-
Modifiche agli asset dei container dei servizi Amazon ECS.
-
Modifiche agli asset del sito Web delle distribuzioni di bucket Amazon S3.
-
Modifiche all'origine e all'ambiente dei progetti. AWS CodeBuild
-
Modifiche al modello di mappatura VTL per AWS AppSync resolver e funzioni.
-
Modifiche allo schema per AWS AppSync GraphQL APIs.
L'utilizzo di determinate funzioni CloudFormation intrinseche è supportato come parte di una distribuzione hotswap. Ciò include:
-
Ref
-
Fn::GetAtt
— Supportato solo parzialmente. Fai riferimento a questa implementazioneper le risorse e gli attributi supportati. -
Fn::ImportValue
-
Fn::Join
-
Fn::Select
-
Fn::Split
-
Fn::Sub
Questa opzione è compatibile anche con gli stack annidati.
Nota
-
Questa opzione introduce deliberatamente la deriva negli CloudFormation stack per velocizzare le distribuzioni. Per questo motivo, usatela solo per scopi di sviluppo. Non utilizzate questa opzione per le vostre implementazioni di produzione.
-
Questa opzione è considerata sperimentale e potrebbe subire cambiamenti epocali in futuro.
-
I valori predefiniti per alcuni parametri possono essere diversi con il parametro hotswap. Ad esempio, la percentuale minima di integrità di un servizio Amazon ECS sarà attualmente fissata a
0
. Se ciò si verifica, esamina la fonte di conseguenza.
Valore predefinito:
false
-
--hotswap-fallback
BOOLEAN
-
Questa opzione è simile a
--hotswap
. La differenza è che, se viene rilevata una modifica che lo richiede,--hotswap-fallback
verrà eseguita una CloudFormation distribuzione completa.Per ulteriori informazioni su questa opzione, consulta
--hotswap
.Valore predefinito:
false
--ignore-no-stacks
BOOLEAN
-
Esegui una distribuzione anche se l'app CDK non contiene pile.
Questa opzione è utile nel seguente scenario: potresti avere un'app con più ambienti, come
dev
e.prod
All'inizio dello sviluppo, l'app prod potrebbe non disporre di risorse o le risorse potrebbero essere commentate. Ciò comporterà un errore di distribuzione con un messaggio che indica che l'app non ha stack. Utilizzare--ignore-no-stacks
per aggirare questo errore.Valore predefinito:
false
--import-existing-resources
BOOLEAN
-
Importa AWS CloudFormation risorse esistenti e non gestite dal tuo. Account AWS
Quando utilizzi questa opzione, le risorse del tuo AWS CloudFormation modello sintetizzato con lo stesso nome personalizzato delle risorse non gestite esistenti nello stesso account verranno importate nel tuo stack.
È possibile utilizzare questa opzione per importare risorse esistenti in pile nuove o esistenti.
È possibile importare risorse esistenti e distribuire nuove risorse con lo stesso
cdk deploy
comando.Per ulteriori informazioni sui nomi personalizzati, consulta il tipo di nome nella Guida per l'AWS CloudFormation utente.
Per ulteriori informazioni sul
ImportExistingResources
CloudFormation parametro, consulta AWS CloudFormation Semplifica l'importazione delle risorse con un nuovo parametro per ChangeSets. Per ulteriori informazioni sull'utilizzo di questa opzione, consulta Importare risorse esistenti
in aws-cdk-cli GitHub archivio. --logs
BOOLEAN
-
Mostra Amazon CloudWatch Log nello standard output (
stdout
) per tutti gli eventi di tutte le risorse negli stack selezionati.Questa opzione è compatibile solo con
--watch
.Valore predefinito:
true
--method, -m
STRING
-
Configura il metodo per eseguire una distribuzione.
-
change-set
— Metodo predefinito. Il CDK CLI crea un set di CloudFormation modifiche con le modifiche che verranno distribuite, quindi esegue la distribuzione. -
direct
— Non creare un set di modifiche. Applica invece la modifica immediatamente. Questa operazione è in genere più rapida rispetto alla creazione di un set di modifiche, ma comporta la perdita delle informazioni sullo stato di avanzamento. -
prepare-change-set
— Create un set di modifiche ma non eseguite la distribuzione. Ciò è utile se si dispone di strumenti esterni che esamineranno il set di modifiche o se si dispone di un processo di approvazione per i set di modifiche.
Valori validi:
change-set
,,direct
prepare-change-set
Valore predefinito:
change-set
-
--notification-arns
ARRAY
-
Gli argomenti ARNs di Amazon SNS che CloudFormation notificheranno gli eventi relativi allo stack.
--outputs-file, -O
STRING
-
Il percorso in cui vengono scritti gli output dello stack delle distribuzioni.
Dopo la distribuzione, gli output dello stack verranno scritti nel file di output specificato in formato JSON.
Puoi configurare questa opzione nel
cdk.json
file del progetto o~/.cdk.json
sul tuo computer di sviluppo locale:{ "app": "npx ts-node bin/myproject.ts", // ... "outputsFile": "outputs.json" }
Se vengono distribuiti più stack, gli output vengono scritti nello stesso file di output, organizzato da chiavi che rappresentano il nome dello stack.
--parameters
ARRAY
-
Passa parametri aggiuntivi durante la distribuzione. CloudFormation
Questa opzione accetta un array nel seguente formato:
STACK:KEY=VALUE
.-
STACK
— Il nome dello stack a cui associare il parametro. -
KEY
— Il nome del parametro dello stack. -
VALUE
— Il valore da trasmettere al momento della distribuzione.
Se non viene fornito un nome dello stack o se
*
viene fornito come nome dello stack, i parametri verranno applicati a tutti gli stack distribuiti. Se uno stack non utilizza il parametro, la distribuzione avrà esito negativo.I parametri non si propagano agli stack annidati. Per passare i parametri agli stack nidificati, utilizzate il costrutto.
NestedStack
Valore predefinito:
{}
-
--previous-parameters
BOOLEAN
-
Utilizzate i valori precedenti per i parametri esistenti.
Quando questa opzione è impostata su
false
, è necessario specificare tutti i parametri in ogni distribuzione.Valore predefinito:
true
--progress
STRING
-
Configura come funziona il CDK CLI mostra lo stato di avanzamento della distribuzione.
-
bar
— Visualizza gli eventi di distribuzione dello stack come barra di avanzamento, con gli eventi per la risorsa attualmente distribuita. -
events
— Fornisci una cronologia completa, inclusi tutti gli CloudFormation eventi.
Puoi anche configurare questa opzione nel
cdk.json
file del progetto o~/.cdk.json
sul tuo computer di sviluppo locale:{ "progress": "events" }
Valori validi:
bar
,events
Valore predefinito:
bar
-
--require-approval
STRING
-
Specificate quali modifiche sensibili alla sicurezza richiedono l'approvazione manuale.
-
any-change
— È richiesta l'approvazione manuale per qualsiasi modifica allo stack. -
broadening
— È richiesta l'approvazione manuale se le modifiche comportano un ampliamento delle autorizzazioni o delle regole del gruppo di sicurezza. -
never
— L'approvazione non è richiesta.
Valori validi:
any-change
,broadening
,never
Valore predefinito:
broadening
-
--rollback
|--no-rollback
,-R
-
Durante la distribuzione, se una risorsa non viene creata o aggiornata, la distribuzione tornerà allo stato stabile più recente prima del CDK CLI restituisce. Tutte le modifiche apportate fino a quel momento verranno annullate. Le risorse create verranno eliminate e gli aggiornamenti apportati verranno ripristinati.
--no-rollback
Specificate di disattivare questo comportamento. Se una risorsa non viene creata o aggiornata, il CDK CLI lascerà invariate le modifiche apportate fino a quel momento e le restituirà. Ciò lascerà la distribuzione in uno stato di interruzione e interruzione. Da qui, puoi aggiornare il codice e riprovare a eseguire la distribuzione. Questo può essere utile negli ambienti di sviluppo in cui si eseguono iterazioni rapide.Se una distribuzione eseguita
--no-rollback
non riesce e si decide di eseguire il rollback della distribuzione, è possibile utilizzare ilcdk rollback
comando. Per ulteriori informazioni, consulta cdk rollback.Nota
--no-rollback
In caso contrario, le distribuzioni che causano la sostituzione delle risorse falliranno sempre. È possibile utilizzare questo valore di opzione solo per le distribuzioni che aggiornano o creano nuove risorse.Valore predefinito:
--rollback
--toolkit-stack-name
STRING
-
Il nome dello stack CDK Toolkit esistente.
Per impostazione predefinita,
cdk bootstrap
distribuisce uno stack denominatoCDKToolkit
nell'ambiente specificato. AWS Utilizzate questa opzione per fornire un nome diverso per lo stack di bootstrap.Il CDK CLI utilizza questo valore per verificare la versione dello stack di bootstrap.
--watch
BOOLEAN
-
Osserva continuamente i file di progetto CDK e distribuisci automaticamente gli stack specificati quando vengono rilevate modifiche.
Questa opzione implica
--hotswap
di default.Questa opzione ha un CDK equivalente CLI comando. Per ulteriori informazioni, consulta cdk watch.
Esempi
Distribuisci lo stack denominato MyStackName
$
cdk deploy MyStackName --app='node bin/main.js'
Distribuisci più stack in un'app
Usa cdk list
per elencare i tuoi stack:
$
cdk list
CdkHelloWorldStack CdkStack2 CdkStack3
Per distribuire tutti gli stack, usa l'opzione: --all
$
cdk deploy --all
Per scegliere quali stack distribuire, fornisci i nomi degli stack come argomenti:
$
cdk deploy CdkHelloWorldStack CdkStack3
Distribuisci gli stack di pipeline
Utilizzalo cdk list
per mostrare i nomi degli stack come percorsi, mostrando dove si trovano nella gerarchia della pipeline:
$
cdk list
PipelineStack PiplelineStack/Prod PipelineStack/Prod/MyService
Usa l'--all
opzione o la jolly *
per distribuire tutti gli stack. Se hai una gerarchia di pile come descritta sopra --all
e *
abbinerai solo le pile del livello più alto. Per abbinare tutte le pile della gerarchia, usa. **
È possibile combinare questi modelli. Quanto segue distribuisce tutti gli stack dello stage: Prod
$
cdk deploy PipelineStack/Prod/**
Passa i parametri al momento della distribuzione
Definisci i parametri nel tuo stack CDK. Di seguito è riportato un esempio che crea un parametro denominato TopicNameParam
per un argomento di Amazon SNS:
new sns.Topic(this, 'TopicParameter', {
topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString()
});
Per fornire il valore del parametroparameterized
, esegui quanto segue:
$
cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"
È possibile sovrascrivere i valori dei parametri utilizzando l'--force
opzione. Di seguito è riportato un esempio di sovrascrittura del nome dell'argomento di una distribuzione precedente:
$
cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force
Scrive gli output dello stack in un file dopo la distribuzione
Definisci gli output nel tuo file stack CDK. Di seguito è riportato un esempio che crea un output per una funzione ARN:
const fn = new lambda.Function(this, "fn", {
handler: "index.handler",
code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`),
runtime: lambda.Runtime.NODEJS_LATEST
});
new cdk.CfnOutput(this, 'FunctionArn', {
value: fn.functionArn,
});
Distribuisci lo stack e scrivi gli output su: outputs.json
$
cdk deploy --outputs-file outputs.json
Di seguito è riportato un esempio di outputs.json
post-implementazione:
{
"MyStack": {
"FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK"
}
}
In questo esempio, la chiave FunctionArn
corrisponde all'ID logico dell'CfnOutput
istanza.
Di seguito è riportato un esempio di outputs.json
post-distribuzione quando vengono distribuiti più stack:
{
"MyStack": {
"FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK"
},
"AnotherStack": {
"VPCId": "vpc-z0mg270fee16693f"
}
}
Modifica il metodo di distribuzione
Per una distribuzione più rapida, senza utilizzare set di modifiche, usa--method='direct'
:
$
cdk deploy --method='direct'
Per creare un set di modifiche ma non distribuirlo, usa. --method='prepare-change-set'
Per impostazione predefinita, cdk-deploy-change-set
verrà creato un set di modifiche denominato. Se esiste un set di modifiche precedente con questo nome, verrà sovrascritto. Se non viene rilevata alcuna modifica, viene comunque creato un set di modifiche vuoto.
È inoltre possibile assegnare un nome al set di modifiche. Di seguito è riportato un esempio:
$
cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'