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 CfnCondition
Konstrukte 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 CfnParameter
Klasse, 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.
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.
Um beispielsweise einen Parameter in einer Bucket
Definition zu verwenden:
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
--parametersstack-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
Wert in der stack-name
--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
mitmynewbucketname
als Parameterwert für:bucketNameParam
$
cdk deploy
MySecondStack
--parametersbucketNameParam
='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
'*'
--parametersMyFirstDeployedStack
:bucketNameParam
='mynewfirststackbucketname'
--parametersMySecondDeployedStack
: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
'*'
--parametersMySecondDeployedStack
:bucketNameParam
='mynewbucketname'
$
cdk deploy
--all
--parametersMySecondDeployedStack
: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
'**'
--parametersMultiStackCdkApp/SecondStack
:bucketNameParam
='mysecondstackbucketname'
Weitere Informationen zu cdk deploy
Befehlsoptionen finden Sie unter. cdk deploy