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à.
Parametri
I parametri sono valori personalizzati forniti al momento della distribuzione. I parametri sono una funzionalità di AWS CloudFormation. Poiché AWS Cloud Development Kit (AWS CDK) sintetizza i AWS CloudFormation modelli, offre anche supporto per i parametri relativi al tempo di implementazione.
Argomenti
Informazioni sui parametri
Utilizzando AWS CDK, è possibile definire i parametri, che possono quindi essere utilizzati nelle proprietà dei costrutti creati. È inoltre possibile distribuire pile che contengono parametri.
Quando si distribuisce il AWS CloudFormation modello utilizzando il AWS CDK Toolkit, si forniscono i valori dei parametri sulla riga di comando. Se si distribuisce il modello tramite la AWS CloudFormation console, vengono richiesti i valori dei parametri.
In generale, si sconsiglia di utilizzare AWS CloudFormation parametri con. AWS CDK I metodi usuali per passare valori nelle AWS CDK app sono i valori di contesto e le variabili di ambiente. Poiché non sono disponibili al momento della sintesi, i valori dei parametri non possono essere utilizzati facilmente per il controllo del flusso e per altri scopi nell'app CDK.
Nota
Per controllare il flusso con i parametri, è possibile utilizzare CfnCondition
i costrutti, sebbene ciò sia scomodo rispetto alle istruzioni native. if
L'utilizzo dei parametri richiede di prestare attenzione al comportamento del codice che state scrivendo al momento della distribuzione e anche in fase di sintesi. Ciò rende più difficile comprendere e ragionare sull' AWS CDK applicazione, in molti casi con scarsi vantaggi.
In genere, è meglio fare in modo che l'app CDK accetti le informazioni necessarie in un modo ben definito e le utilizzi direttamente per dichiarare i costrutti nell'app CDK. Un AWS CloudFormation modello ideale AWS CDK generato è concreto, senza altri valori da specificare al momento dell'implementazione.
Esistono, tuttavia, casi d'uso per i quali AWS CloudFormation i parametri si adattano in modo univoco. Se disponi di team separati che definiscono e implementano l'infrastruttura, ad esempio, puoi utilizzare i parametri per rendere i modelli generati più utili. Inoltre, poiché AWS CDK supporta i AWS CloudFormation parametri, è possibile utilizzarli AWS CDK con AWS servizi che utilizzano AWS CloudFormation modelli (come Service Catalog). Questi AWS servizi utilizzano parametri per configurare il modello che viene distribuito.
Definizione dei parametri
Utilizzate la CfnParameter
classe per definire un parametro. Ti consigliamo di specificare almeno un tipo e una descrizione per la maggior parte dei parametri, sebbene entrambi siano tecnicamente opzionali. La descrizione viene visualizzata quando all'utente viene richiesto di immettere il valore del parametro nella AWS CloudFormation console. Per ulteriori informazioni sui tipi disponibili, vedere Tipi.
Nota
È possibile definire i parametri in qualsiasi ambito. Tuttavia, consigliamo di definire i parametri a livello di stack in modo che il loro ID logico non cambi quando rifattorizzate il codice.
Utilizzo dei parametri
Un'CfnParameter
istanza espone il suo valore all' AWS CDK app tramite un token. Come tutti i token, il token del parametro viene risolto al momento della sintesi. Ma si risolve in un riferimento al parametro definito nel AWS CloudFormation modello (che verrà risolto al momento della distribuzione), piuttosto che a un valore concreto.
È possibile recuperare il token come istanza della Token
classe o in una stringa, in un elenco di stringhe o in una codifica numerica. La scelta dipende dal tipo di valore richiesto dalla classe o dal metodo con cui si desidera utilizzare il parametro.
Ad esempio, per utilizzare un parametro in una Bucket
definizione:
Distribuzione con parametri
Quando distribuisci un AWS CloudFormation modello generato tramite la AWS CloudFormation console, ti verrà richiesto di fornire i valori per ogni parametro.
È inoltre possibile fornire i valori dei parametri utilizzando il CLI cdk deploy
comando CDK o specificando i valori dei parametri nel file stack del progetto CDK.
Fornire i valori dei parametri con cdk deploy
Quando si esegue la distribuzione utilizzando il CLI cdk deploy
comando CDK, è possibile fornire i valori dei parametri al momento della distribuzione con l'--parameters
opzione.
Di seguito è riportato un esempio della struttura dei cdk deploy
comandi:
$
cdk deploy
stack-logical-id
--parametersstack-name
:parameter-name
=parameter-value
Se l'app CDK contiene un singolo stack, non è necessario fornire l'argomento dell'ID logico dello stack o il
valore dell'opzione. stack-name
--parameters
Il CDK CLI troverà e fornirà automaticamente questi valori. Di seguito è riportato un esempio che specifica un uploadbucket
valore per il uploadBucketName
parametro del single stack nella nostra app CDK:
$
cdk deploy --parameters
uploadBucketName
=uploadbucket
Fornire valori dei parametri con cdk deploy per applicazioni multi-stack
Di seguito è riportato un esempio di applicazione CDK TypeScript che contiene due stack CDK. Ogni stack contiene un'istanza del bucket Amazon S3 e un parametro per impostare il nome del bucket Amazon S3:
import * as cdk from 'aws-cdk-lib'; import { Construct } from 'constructs'; import * as s3 from 'aws-cdk-lib/aws-s3'; // Define the CDK app const app = new cdk.App(); // First stack export class MyFirstStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Set a default parameter name const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', { type: 'String', default: 'myfirststackdefaultbucketname' }); // Define an S3 bucket new s3.Bucket(this, 'MyFirstBucket', { bucketName: bucketNameParam.valueAsString }); } } // Second stack export class MySecondStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { super(scope, id, props); // Set a default parameter name const bucketNameParam = new cdk.CfnParameter(this, 'bucketNameParam', { type: 'String', default: 'mysecondstackdefaultbucketname' }); // Define an S3 bucket new s3.Bucket(this, 'MySecondBucket', { bucketName: bucketNameParam.valueAsString }); } } // Instantiate the stacks new MyFirstStack(app, 'MyFirstStack', { stackName: 'MyFirstDeployedStack', }); new MySecondStack(app, 'MySecondStack', { stackName: 'MySecondDeployedStack', });
Per le app CDK che contengono più stack, puoi fare quanto segue:
-
Distribuisci uno stack con parametri: per distribuire un singolo stack da un'applicazione multi-stack, fornisci l'ID logico dello stack come argomento.
Di seguito è riportato un esempio che utilizza
MySecondStack
come valore del parametro per:mynewbucketname
bucketNameParam
$
cdk deploy
MySecondStack
--parametersbucketNameParam
='mynewbucketname'
-
Distribuisci tutti gli stack e specifica i valori dei parametri per ogni stack: fornisci la
'*'
jolly o l'--all
opzione per distribuire tutti gli stack. Fornite l'--parameters
opzione più volte in un unico comando per specificare i valori dei parametri per ogni stack. Di seguito è riportato un esempio:$
cdk deploy
'*'
--parametersMyFirstDeployedStack
:bucketNameParam
='mynewfirststackbucketname'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewsecondstackbucketname'
-
Distribuisci tutti gli stack e specifica i valori dei parametri per un singolo stack: fornisci la
'*'
wildcard o l'--all
opzione per distribuire tutti gli stack. Quindi, specifica lo stack per definire il parametro dell'opzione.--parameters
Di seguito sono riportati alcuni esempi che distribuiscono tutti gli stack in un'app CDK e specificano un valore di parametro per lo stack.MySecondDeployedStack
AWS CloudFormation Tutti gli altri stack verranno distribuiti e utilizzeranno il valore del parametro predefinito:$
cdk deploy
'*'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
$
cdk deploy
--all
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
Fornitura di valori di parametro cdk deploy per applicazioni con stack annidati
Il CLI comportamento CDK quando si lavora con applicazioni contenenti stack annidati è simile alle applicazioni multi-stack. La differenza principale è che, se vuoi distribuire tutti gli stack annidati, usa la wildcard. '**'
La '*'
jolly distribuisce tutte le pile ma non distribuirà le pile nidificate. La '**'
jolly distribuisce tutte le pile, incluse le pile nidificate.
Di seguito è riportato un esempio che distribuisce gli stack nidificati specificando il valore del parametro per uno stack nidificato:
$
cdk deploy
'**'
--parametersMultiStackCdkApp/SecondStack
:bucketNameParam
='mysecondstackbucketname'
Per ulteriori informazioni sulle opzioni di comando, vedere. cdk deploy
cdk deploy