Dies ist der AWS CDK v2-Entwicklerhandbuch. Das ältere CDK v1 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 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 CDK-App
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.
const uploadBucketName = new CfnParameter(this, "uploadBucketName", {
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.
Eigenschaft | Art von Wert |
---|---|
value |
Token Klasseninstanz |
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:
const 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 angeben CLI cdk deploy
Befehl oder durch Angabe von Parameterwerten in der Stack-Datei Ihres CDK-Projekts.
Geben Sie Parameterwerte an mit cdk deploy
Wenn Sie die Bereitstellung mit dem CDK durchführen CLI cdk deploy
Mit 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
--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 wird diese Werte automatisch finden und bereitstellen. 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
Stellen Sie mit cdk deploy Parameterwerte für Multi-Stack-Anwendungen bereit
Im Folgenden finden Sie ein Beispiel für eine CDK-Anwendung in TypeScript das enthält zwei CDK-Stacks. 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 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
'*'
--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'
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
'**'
--parametersMultiStackCdkApp/SecondStack
:bucketNameParam
='mysecondstackbucketname'
Weitere Informationen zu cdk deploy
Befehlsoptionen finden Sie unter. cdk deploy