Parameter - AWS Cloud Development Kit (AWS CDK) v2

Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 wurde am 1. Juni 2022 gewartet 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.

Parameter

Parameter sind benutzerdefinierte Werte, die bei der Bereitstellung bereitgestellt werden. Parameter sind ein Feature von AWS CloudFormation. Da es AWS CloudFormation Vorlagen AWS Cloud Development Kit (AWS CDK) synthetisiert, bietet es auch Unterstützung für Bereitstellungszeitparameter.

Über Parameter

Mithilfe von können Sie Parameter definieren, die dann in den Eigenschaften der von Ihnen erstellten Konstrukte verwendet werden können. AWS CDK Sie können auch Stacks bereitstellen, die Parameter enthalten.

Wenn Sie die AWS CloudFormation Vorlage mit dem AWS CDK Toolkit bereitstellen, geben Sie die Parameterwerte in der Befehlszeile an. Wenn Sie die Vorlage über die AWS CloudFormation Konsole bereitstellen, werden Sie zur Eingabe der Parameterwerte aufgefordert.

Im Allgemeinen empfehlen wir, keine AWS CloudFormation Parameter mit dem zu verwenden AWS CDK. Die üblichen Methoden, Werte an AWS CDK Apps zu übergeben, sind Kontextwerte und Umgebungsvariablen. Da sie zum Zeitpunkt der Synthese nicht verfügbar sind, können Parameterwerte nicht einfach für die Flusskontrolle und andere Zwecke in Ihrer CDK-App verwendet werden.

Anmerkung

Um die Ablaufsteuerung mit Parametern durchzuführen, können Sie CfnConditionKonstrukte verwenden, obwohl dies im Vergleich zu systemeigenen Anweisungen umständlich ist. if

Bei der Verwendung von Parametern müssen Sie darauf achten, wie sich der Code, den Sie schreiben, bei der Bereitstellung und auch bei der Synthese verhält. Dies macht es schwieriger, Ihre AWS CDK Anwendung zu verstehen und zu begründen, was in vielen Fällen kaum von Nutzen ist.

Im Allgemeinen ist es besser, wenn Ihre CDK-App die erforderlichen Informationen auf klar definierte Weise akzeptiert und sie direkt zur Deklaration von Konstrukten in Ihrer CDK-App verwendet. Eine ideale AWS CDK— generierte AWS CloudFormation Vorlage ist konkret, sodass zum Zeitpunkt der Bereitstellung keine Werte mehr spezifiziert werden müssen.

Es gibt jedoch Anwendungsfälle, für die AWS CloudFormation Parameter eindeutig geeignet sind. Wenn Sie beispielsweise über separate Teams verfügen, die die Infrastruktur definieren und bereitstellen, können Sie Parameter verwenden, um die generierten Vorlagen breiter nutzbar zu machen. Da der AWS CloudFormation Parameter AWS CDK unterstützt, können Sie den auch AWS CDK mit AWS Diensten verwenden, die AWS CloudFormation Vorlagen verwenden (z. B. Service Catalog). Diese AWS Dienste verwenden Parameter, um die Vorlage zu konfigurieren, die bereitgestellt wird.

Parameter definieren

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 von Parametern

Eine CfnParameter Instanz stellt ihren Wert Ihrer AWS 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 des Werts
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, "myBucket", { bucketName: uploadBucketName.valueAsString});
JavaScript
const bucket = new Bucket(this, "myBucket", { bucketName: uploadBucketName.valueAsString});
Python
bucket = Bucket(self, "myBucket", bucket_name=upload_bucket_name.value_as_string)
Java
Bucket bucket = Bucket.Builder.create(this, "myBucket") .bucketName(uploadBucketName.getValueAsString()) .build();
C#
var bucket = new Bucket(this, "myBucket") { BucketName = uploadBucketName.ValueAsString };

Bereitstellung mit Parametern

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 mit dem CLI cdk deploy CDK-Befehl oder durch Angabe von Parameterwerten in der Stack-Datei Ihres CDK-Projekts angeben.

Bereitstellung von Parameterwerten mit cdk deploy

Wenn Sie die Bereitstellung mit dem CLI cdk deploy CDK-Befehl durchführen, können Sie bei der Bereitstellung mit der --parameters Option Parameterwerte angeben.

Im Folgenden finden Sie 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 Stack enthält, müssen Sie weder das logische Stack-ID-Argument noch den stack-name Wert in der --parameters Option angeben. Das CDK CLI findet diese Werte automatisch und stellt sie bereit. Im Folgenden finden Sie ein Beispiel, das einen uploadbucket Wert für den uploadBucketName Parameter des einzelnen Stacks in unserer CDK-App angibt:

$ cdk deploy --parameters uploadBucketName=uploadbucket

Bereitstellung von Parameterwerten mit cdk deploy für Multi-Stack-Anwendungen

Im Folgenden finden Sie ein Beispiel für eine CDK-AnwendungTypeScript, die zwei CDK-Stacks enthält. 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 Stacks 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 Stapel 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 Stack angeben. MySecondDeployedStack AWS CloudFormation Alle anderen Stacks werden den Standardparameterwert bereitstellen und verwenden:

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

Bereitstellung von Parameterwerten cdk deploy für Anwendungen mit verschachtelten Stacks

Das CLI CDK-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