Usa CloudFormation i parametri per ottenere un CloudFormation valore - AWS Cloud Development Kit (AWS CDK) v2

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à.

Usa CloudFormation i parametri per ottenere un CloudFormation valore

Utilizza AWS CloudFormation i parametri all'interno AWS Cloud Development Kit (AWS CDK) delle applicazioni per inserire valori personalizzati nei CloudFormation modelli sintetizzati al momento della distribuzione.

Per alcune informazioni introduttive consultare Parametri e AWS CDK.

Definisci i parametri nella tua app CDK

Usa la CfnParameterclasse 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.

TypeScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
JavaScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
Python
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String", description="The name of the Amazon S3 bucket where uploaded files will be stored.")
Java
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName") .type("String") .description("The name of the Amazon S3 bucket where uploaded files will be stored") .build();
C#
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps { Type = "String", Description = "The name of the Amazon S3 bucket where uploaded files will be stored" });

Usa i parametri

Un'CfnParameteristanza espone il suo valore alla tua 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.

TypeScript
Proprietà tipo di valore
value Tokenistanza di classe
valueAsList Il token rappresentato come un elenco di stringhe
valueAsNumber Il token rappresentato come numero
valueAsString Il token rappresentato come una stringa
JavaScript
Proprietà tipo di valore
value Tokenistanza di classe
valueAsList Il token rappresentato come un elenco di stringhe
valueAsNumber Il token rappresentato come numero
valueAsString Il token rappresentato come una stringa
Python
Proprietà tipo di valore
value Tokenistanza di classe
value_as_list Il token rappresentato come un elenco di stringhe
value_as_number Il token rappresentato come numero
value_as_string Il token rappresentato come una stringa
Java
Proprietà tipo di valore
getValue() Tokenistanza di classe
getValueAsList() Il token rappresentato come un elenco di stringhe
getValueAsNumber() Il token rappresentato come numero
getValueAsString() Il token rappresentato come una stringa
C#
Proprietà tipo di valore
Value Tokenistanza di classe
ValueAsList Il token rappresentato come un elenco di stringhe
ValueAsNumber Il token rappresentato come numero
ValueAsString Il token rappresentato come una stringa

Ad esempio, per utilizzare un parametro in una Bucket definizione:

TypeScript
const bucket = new Bucket(this, "amzn-s3-demo-bucket", { bucketName: uploadBucketName.valueAsString});
JavaScript
const bucket = new Bucket(this, "amzn-s3-demo-bucket", { bucketName: uploadBucketName.valueAsString});
Python
bucket = Bucket(self, "amzn-s3-demo-bucket", bucket_name=upload_bucket_name.value_as_string)
Java
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .bucketName(uploadBucketName.getValueAsString()) .build();
C#
var bucket = new Bucket(this, "amzn-s3-demo-bucket") { BucketName = uploadBucketName.ValueAsString };

Distribuisci CDK app contenenti 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 CDK CLI cdk deploycomando o specificando i valori dei parametri nel file stack del CDK progetto.

Fornisci i valori dei parametri con cdk deploy

Quando si esegue la distribuzione utilizzando il CDK CLI cdk deploycomando, è possibile fornire i valori dei parametri al momento della distribuzione con l'--parametersopzione.

Di seguito è riportato un esempio della struttura dei cdk deploy comandi:

$ cdk deploy stack-logical-id --parameters stack-name:parameter-name=parameter-value

Se CDK l'app contiene un singolo stack, non è necessario fornire l'argomento dell'ID logico dello stack o il stack-name valore nell'opzione. --parameters La 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 CDK app:

$ cdk deploy --parameters uploadBucketName=uploadbucket

Fornisci i valori dei parametri con cdk deploy per applicazioni multi-stack

Di seguito è riportato un esempio di applicazione in CDK TypeScript che contiene due CDK pile. 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 CDK le app 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 --parameters bucketNameParam='mynewbucketname'
  • Distribuisci tutti gli stack e specifica i valori dei parametri per ogni stack: fornisci la '*' jolly o l'--allopzione per distribuire tutti gli stack. Fornite l'--parametersopzione più volte in un unico comando per specificare i valori dei parametri per ogni stack. Di seguito è riportato un esempio:

    $ cdk deploy '*' --parameters MyFirstDeployedStack:bucketNameParam='mynewfirststackbucketname' --parameters MySecondDeployedStack:bucketNameParam='mynewsecondstackbucketname'
  • Distribuisci tutti gli stack e specifica i valori dei parametri per un singolo stack: fornisci la '*' wildcard o l'--allopzione 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'CDKapp 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 '*' --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname' $ cdk deploy --all --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname'

Fornisci i valori dei parametri con cdk deploy per applicazioni con stack annidati

La CDK CLI il comportamento 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 implementa gli stack nidificati specificando il valore del parametro per uno stack nidificato:

$ cdk deploy '**' --parameters MultiStackCdkApp/SecondStack:bucketNameParam='mysecondstackbucketname'

Per ulteriori informazioni sulle opzioni di comando, vedere. cdk deploy cdk deploy