Verwenden Sie CloudFormation Parameter, um einen CloudFormation Wert zu erhalten - AWS Cloud Development Kit (AWS CDK) v2

Dies ist der AWS CDK v2-Entwicklerhandbuch. Die ältere CDK Version 1 wurde am 1. Juni 2022 in die Wartung aufgenommen und der Support wurde am 1. Juni 2023 eingestellt.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Verwenden Sie CloudFormation Parameter, um einen CloudFormation Wert zu erhalten

Verwenden Sie AWS CloudFormation Parameter innerhalb von AWS Cloud Development Kit (AWS CDK) Anwendungen, um bei der Bereitstellung benutzerdefinierte Werte in Ihre synthetisierten CloudFormation Vorlagen einzugeben.

Eine Einführung finden Sie unter Parameter und die AWS CDK.

Definieren Sie Parameter in Ihrer App CDK

Verwenden Sie die CfnParameterKlasse, um einen Parameter zu definieren. Für die meisten Parameter sollten Sie mindestens einen Typ und eine Beschreibung angeben, obwohl beide technisch gesehen optional sind. Die Beschreibung wird angezeigt, wenn der Benutzer aufgefordert wird, den Wert des Parameters in der AWS CloudFormation Konsole einzugeben. Weitere Informationen zu den verfügbaren Typen finden Sie unter Typen.

Anmerkung

Sie können Parameter in jedem Bereich definieren. Wir empfehlen jedoch, Parameter auf Stack-Ebene zu definieren, damit sich ihre logische ID nicht ändert, wenn Sie Ihren Code umgestalten.

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" });

Verwenden Sie Parameter

Eine CfnParameter Instanz stellt ihren Wert Ihrer CDK App über ein Token zur Verfügung. Wie alle Token wird das Token des Parameters zur Synthesezeit aufgelöst. Es wird jedoch in einen Verweis auf den in der AWS CloudFormation Vorlage definierten Parameter (der zum Zeitpunkt der Bereitstellung aufgelöst wird) und nicht auf einen konkreten Wert aufgelöst.

Sie können das Token als Instanz der Token Klasse oder als Zeichenfolge, Zeichenkettenliste oder numerische Kodierung abrufen. Ihre Wahl hängt von der Art des Werts ab, der für die Klasse oder Methode erforderlich ist, mit der Sie den Parameter verwenden möchten.

TypeScript
Eigenschaft Art von Wert
value TokenKlasseninstanz
valueAsList Das als Stringliste dargestellte Token
valueAsNumber Das als Zahl dargestellte Token
valueAsString Das als Zeichenfolge dargestellte Token
JavaScript
Eigenschaft Art von Wert
value TokenKlasseninstanz
valueAsList Das als Stringliste dargestellte Token
valueAsNumber Das als Zahl dargestellte Token
valueAsString Das als Zeichenfolge dargestellte Token
Python
Eigenschaft Art von Wert
value TokenKlasseninstanz
value_as_list Das als Stringliste dargestellte Token
value_as_number Das als Zahl dargestellte Token
value_as_string Das als Zeichenfolge dargestellte Token
Java
Eigenschaft Art von Wert
getValue() TokenKlasseninstanz
getValueAsList() Das als Stringliste dargestellte Token
getValueAsNumber() Das als Zahl dargestellte Token
getValueAsString() Das als Zeichenfolge dargestellte Token
C#
Eigenschaft Art von Wert
Value TokenKlasseninstanz
ValueAsList Das als Stringliste dargestellte Token
ValueAsNumber Das als Zahl dargestellte Token
ValueAsString Das als Zeichenfolge dargestellte Token

Um beispielsweise einen Parameter in einer Bucket Definition zu verwenden:

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 };

Stellen Sie CDK Apps bereit, die Parameter enthalten

Wenn Sie eine generierte AWS CloudFormation Vorlage über die AWS CloudFormation Konsole bereitstellen, werden Sie aufgefordert, die Werte für jeden Parameter anzugeben.

Sie können Parameterwerte auch mithilfe des CDK CLI cdk deployBefehl oder durch Angabe von Parameterwerten in der Stack-Datei Ihres CDK Projekts.

Geben Sie Parameterwerte an mit cdk deploy

Bei der Bereitstellung mit dem CDK CLI cdk deployMit der --parameters Option können Sie bei der Bereitstellung Parameterwerte angeben.

Das Folgende ist ein Beispiel für die cdk deploy Befehlsstruktur:

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

Wenn Ihre CDK App einen einzelnen Stapel enthält, müssen Sie weder das logische Stack-ID-Argument noch den stack-name Wert in der --parameters Option angeben. Das CDK CLI wird diese Werte automatisch finden und bereitstellen. Das Folgende ist ein Beispiel, das einen uploadbucket Wert für den uploadBucketName Parameter des einzelnen Stacks in unserer CDK App angibt:

$ cdk deploy --parameters uploadBucketName=uploadbucket

Stellen Sie Parameterwerte mit cdk deploy für Multi-Stack-Anwendungen bereit

Im Folgenden finden Sie eine CDK Beispielanwendung in TypeScript das enthält zwei CDK Stapel. Jeder Stack enthält eine Amazon S3 S3-Bucket-Instance und einen Parameter zum Festlegen des Amazon S3 S3-Bucket-Namens:

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', });

Für CDK Apps, die mehrere Stapel enthalten, können Sie Folgendes tun:

  • Einen Stack mit Parametern bereitstellen — Um einen einzelnen Stack aus einer Multi-Stack-Anwendung bereitzustellen, geben Sie die logische Stack-ID als Argument an.

    Im Folgenden finden Sie ein Beispiel für die Bereitstellung MySecondStack mit mynewbucketname als Parameterwert für: bucketNameParam

    $ cdk deploy MySecondStack --parameters bucketNameParam='mynewbucketname'
  • Alle Stacks bereitstellen und Parameterwerte für jeden Stack angeben — Geben Sie den '*' Platzhalter oder die --all Option zur Bereitstellung aller Stacks an. Geben Sie die --parameters Option mehrmals in einem einzigen Befehl an, um Parameterwerte für jeden Stack anzugeben. Im Folgenden wird ein Beispiel gezeigt:

    $ cdk deploy '*' --parameters MyFirstDeployedStack:bucketNameParam='mynewfirststackbucketname' --parameters MySecondDeployedStack:bucketNameParam='mynewsecondstackbucketname'
  • Alle Stapel bereitstellen und Parameterwerte für einen einzelnen Stapel angeben — Geben Sie den '*' Platzhalter oder die --all Option zum Bereitstellen aller Stapel an. Geben Sie dann in der Option den Stack an, für den der Parameter definiert werden soll. --parameters Im Folgenden finden Sie Beispiele, die alle Stacks in einer CDK App bereitstellen und einen Parameterwert für den MySecondDeployedStack AWS CloudFormation Stack angeben. Alle anderen Stacks werden den Standardparameterwert bereitstellen und verwenden:

    $ cdk deploy '*' --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname' $ cdk deploy --all --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname'

Geben Sie Parameterwerte an mit cdk deploy für Anwendungen mit verschachtelten Stacks

Das CDK CLI Das Verhalten bei der Arbeit mit Anwendungen, die verschachtelte Stacks enthalten, ähnelt dem von Multi-Stack-Anwendungen. Der Hauptunterschied besteht darin, dass Sie den Platzhalter verwenden müssen, wenn Sie alle verschachtelten Stacks bereitstellen möchten. '**' Der '*' Platzhalter stellt alle Stacks bereit, verteilt aber keine verschachtelten Stacks. Der '**' Platzhalter stellt alle Stapel bereit, einschließlich verschachtelter Stacks.

Das folgende Beispiel zeigt, wie verschachtelte Stacks bereitgestellt und gleichzeitig der Parameterwert für einen verschachtelten Stapel angegeben wird:

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

Weitere Informationen zu cdk deploy Befehlsoptionen finden Sie unter. cdk deploy