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.
Sie können AWS Umgebungen auf verschiedene Arten konfigurieren, um sie mit dem zu verwenden AWS Cloud Development Kit (AWS CDK). Die beste Methode zur Verwaltung von AWS Umgebungen hängt von Ihren spezifischen Anforderungen ab.
Jeder CDK-Stack in Ihrer Anwendung muss irgendwann einer Umgebung zugeordnet werden, um zu bestimmen, wo der Stack bereitgestellt wird.
Eine Einführung in AWS Umgebungen finden Sie unterUmgebungen für die AWS CDK.
Themen
Von wo aus können Sie Umgebungen angeben
Sie können Umgebungen in Anmeldeinformationen und Konfigurationsdateien angeben oder indem Sie die env
Eigenschaft des Stack
Konstrukts aus der AWS Construct-Bibliothek verwenden.
Anmeldeinformationen und Konfigurationsdateien
Sie können das AWS Command Line Interface (AWS CLI) verwenden, um config
Dateien zu erstellencredentials
, in denen Ihre AWS Umgebungsinformationen gespeichert, organisiert und verwaltet werden. Weitere Informationen zu diesen Dateien finden Sie im AWS Command Line Interface Benutzerhandbuch unter Konfiguration und Einstellungen für Anmeldeinformationsdateien.
Die in diesen Dateien gespeicherten Werte sind nach Profilen organisiert. Wie Sie Ihre Profile und die Schlüssel-Wert-Paare in diesen Dateien benennen, hängt von Ihrer Methode zur Konfiguration des programmatischen Zugriffs ab. Weitere Informationen zu den verschiedenen Methoden finden Sie unter. Konfigurieren Sie Sicherheitsanmeldedaten für AWS CDK CLI
Im Allgemeinen AWS CDK löst der AWS-Konto Informationen aus Ihrer credentials
Datei und AWS-Region Informationen aus Ihrer config
Datei auf.
Sobald Sie Ihre credentials
config
Dateien konfiguriert haben, können Sie die Umgebung angeben, die mit dem verwendet werden soll AWS CDK CLI und durch Umgebungsvariablen.
env-Eigenschaft des Stack-Konstrukts
Sie können die Umgebung für jeden Stapel angeben, indem Sie die env
Eigenschaft des Stack
Konstrukts verwenden. Diese Eigenschaft definiert ein Konto und eine Region, die verwendet werden sollen. Sie können hartcodierte Werte an diese Eigenschaft oder Umgebungsvariablen übergeben, die vom CDK angeboten werden.
Um Umgebungsvariablen zu übergeben, verwenden Sie die Umgebungsvariablen AWS_DEFAULT_ACCOUNT
undAWS_DEFAULT_REGION
. Diese Umgebungsvariablen können Werte aus Ihren config
Dateien credentials
und übergeben. Sie können auch Logik in Ihrem CDK-Code verwenden, um die Werte dieser Umgebungsvariablen zu bestimmen.
Priorität der Umgebung mit AWS CDK
Wenn Sie mehrere Methoden zur Angabe von Umgebungen verwenden, gilt AWS CDK für die folgende Priorität:
-
Hartcodierte Werte, die mit der
env
Eigenschaft des Konstrukts angegeben werden.Stack
-
AWS_DEFAULT_ACCOUNT
undAWS_DEFAULT_REGION
Umgebungsvariablen, die mit derenv
Eigenschaft desStack
Konstrukts angegeben sind. -
Dem Profil zugeordnete Umgebungsinformationen aus Ihren
credentials
undconfig
Dateien, die an das CDK übergeben wurden CLI mit der--profile
Option. -
Das
default
Profil aus Ihrencredentials
undconfig
Dateien.
Wann müssen Umgebungen angegeben werden
Wenn Sie mit dem CDK entwickeln, definieren Sie zunächst CDK-Stacks, die Konstrukte enthalten, die Ressourcen repräsentieren. AWS Als Nächstes synthetisieren Sie jeden CDK-Stapel zu einer Vorlage. AWS CloudFormation Anschließend stellen Sie die CloudFormation Vorlage in Ihrer Umgebung bereit. Die Art und Weise, wie Sie Umgebungen angeben, bestimmt, wann Ihre Umgebungsinformationen angewendet werden, und kann sich auf das Verhalten und die Ergebnisse von CDK auswirken.
Geben Sie Umgebungen bei der Vorlagensynthese an
Wenn Sie Umgebungsinformationen mithilfe der env
Eigenschaft des Stack
Konstrukts angeben, werden Ihre Umgebungsinformationen bei der Template-Synthese verwendet. Wird ausgeführt cdk synth
oder cdk
deploy
erzeugt eine umgebungsspezifische Vorlage CloudFormation .
Wenn Sie Umgebungsvariablen innerhalb der env
Eigenschaft verwenden, müssen Sie die --profile
Option mit CDK verwenden CLI Befehle zur Übergabe des Profils, das Ihre Umgebungsinformationen enthält, aus Ihren Anmeldeinformationen und Konfigurationsdateien. Diese Informationen werden dann bei der Vorlagensynthese verwendet, um eine umgebungsspezifische Vorlage zu erstellen.
Die in der CloudFormation Vorlage enthaltenen Umgebungsinformationen haben Vorrang vor anderen Methoden. Wenn Sie beispielsweise eine andere Umgebung angebencdk deploy --profile
, wird das Profil ignoriert.profile
Wenn Sie Umgebungsinformationen auf diese Weise bereitstellen, können Sie in Ihrer CDK-App umgebungsabhängigen Code und Logik verwenden. Das bedeutet auch, dass die synthetisierte Vorlage je nach Maschine, Benutzer oder Sitzung, unter der sie synthetisiert wurde, unterschiedlich sein kann. Dieser Ansatz ist während der Entwicklung oft akzeptabel oder wünschenswert, wird jedoch nicht für den Einsatz in der Produktion empfohlen.
Geben Sie die Umgebungen bei der Stack-Bereitstellung an
Wenn Sie keine Umgebung mithilfe der env
Eigenschaft des Stack
Konstrukts angeben, ist das CDK CLI erzeugt bei der Synthese ein umgebungsunabhängiges Template. CloudFormation Anschließend können Sie die Umgebung angeben, in der die Bereitstellung erfolgen soll, indem Sie cdk deploy --profile
profile
Wenn Sie bei der Bereitstellung einer umgebungsunabhängigen Vorlage kein Profil angeben, wird das CDK CLI wird versuchen, bei der Bereitstellung Umgebungswerte aus Ihrem default
credentials
Profil und den Dateien zu verwenden. config
Wenn Umgebungsinformationen bei der Bereitstellung nicht verfügbar sind, versucht AWS CloudFormation es, Umgebungsinformationen bei der Bereitstellung anhand von umgebungsbezogenen Attributen wie stack.account
stack.region
, und stack.availabilityZones
aufzulösen.
Bei umgebungsunabhängigen Stacks können Konstrukte innerhalb des Stacks keine Umgebungsinformationen verwenden, und Sie können keine Logik verwenden, die Umgebungsinformationen benötigt. Sie können beispielsweise keinen Code schreiben if (stack.region ====
'us-east-1')
oder Konstruktmethoden verwenden, für die Umgebungsinformationen erforderlich sind, wie z. Vpc.fromLookup
Um diese Funktionen verwenden zu können, müssen Sie eine Umgebung mit der env
Eigenschaft angeben.
Bei umgebungsunabhängigen Stacks verfügt jedes Konstrukt, das Availability Zones verwendet, über zwei Availability Zones, sodass der Stack in jeder Region bereitgestellt werden kann.
Wie spezifiziert man Umgebungen mit AWS CDK
Spezifizieren Sie hartcodierte Umgebungen für jeden Stack
Verwenden Sie die env
Eigenschaft des Stack
Konstrukts, um AWS Umgebungswerte für Ihren Stack anzugeben. Im Folgenden wird ein Beispiel gezeigt:
const envEU = { account: '2383838383', region: 'eu-west-1' };
const envUSA = { account: '8373873873', region: 'us-west-2' };
new MyFirstStack(app, 'first-stack-us', { env: envUSA });
new MyFirstStack(app, 'first-stack-eu', { env: envEU });
Wir empfehlen diesen Ansatz für Produktionsumgebungen. Indem Sie die Umgebung auf diese Weise explizit angeben, können Sie sicherstellen, dass der Stack immer in der spezifischen Umgebung bereitgestellt wird.
Geben Sie Umgebungen mithilfe von Umgebungsvariablen an
Das AWS CDK stellt zwei Umgebungsvariablen bereit, die Sie in Ihrem CDK-Code verwenden können: CDK_DEFAULT_ACCOUNT
undCDK_DEFAULT_REGION
. Wenn Sie diese Umgebungsvariablen innerhalb der env
Eigenschaft Ihrer Stack-Instance verwenden, können Sie Umgebungsinformationen aus Ihren Anmeldeinformationen und Konfigurationsdateien mithilfe des CDK übergeben CLI --profile
Option.
Im Folgenden finden Sie ein Beispiel für die Angabe dieser Umgebungsvariablen:
Greifen Sie über das process
Objekt von Node auf Umgebungsvariablen zu.
Anmerkung
Sie benötigen das DefinitelyTyped
Modul zur Verwendung process
in TypeScript. cdk
init
installiert dieses Modul für Sie. Sie sollten dieses Modul jedoch manuell installieren, wenn Sie mit einem Projekt arbeiten, das vor dem Hinzufügen erstellt wurde, oder wenn Sie Ihr Projekt nicht mit eingerichtet habencdk
init
.
npm install @types/node
new MyDevStack(app, 'dev', {
env: {
account: process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEFAULT_REGION
}});
Indem Sie Umgebungen mithilfe von Umgebungsvariablen angeben, können Sie denselben CDK-Stack zu AWS CloudFormation Vorlagen für verschiedene Umgebungen synthetisieren lassen. Das bedeutet, dass Sie denselben CDK-Stack in verschiedenen AWS Umgebungen bereitstellen können, ohne Ihren CDK-Code ändern zu müssen. Sie müssen nur das Profil angeben, das bei der Ausführung verwendet werden soll. cdk synth
Dieser Ansatz eignet sich hervorragend für Entwicklungsumgebungen, wenn derselbe Stack in verschiedenen Umgebungen bereitgestellt wird. Wir empfehlen diesen Ansatz jedoch nicht für Produktionsumgebungen, da derselbe CDK-Code je nach Maschine, Benutzer oder Sitzung, unter der er synthetisiert wird, unterschiedliche Vorlagen synthetisieren kann.
Spezifizieren Sie Umgebungen anhand Ihrer Anmeldeinformationen und Konfigurationsdateien mit dem CDK CLI
Wenn Sie eine umgebungsunabhängige Vorlage bereitstellen, verwenden Sie die Option mit einem beliebigen CDK --profile
CLI Befehl zur Angabe des zu verwendenden Profils. Im Folgenden finden Sie ein Beispiel für die Bereitstellung eines CDK-Stacks myStack
mit dem Namen des prod
Profils, das in den Dateien credentials
und config
definiert ist:
$
cdk deploy
myStack
--profileprod
Weitere Informationen zu dieser --profile
Option sowie zu anderen CDKs CLI Befehle und Optionen finden Sie unterAWS CDK CLI Befehlsreferenz.
Überlegungen bei der Konfiguration von Umgebungen mit dem AWS CDK
Dienste, die Sie mithilfe von Konstrukten in Ihren Stacks definieren, müssen die Region unterstützen, in der Sie die Bereitstellung durchführen. Eine Liste der unterstützten Dienste AWS-Services pro Region finden Sie unter AWS Dienste nach
Sie benötigen gültige AWS Identity and Access Management (IAM-) Anmeldeinformationen, um Stack-Bereitstellungen mit dem AWS CDK in Ihren angegebenen Umgebungen durchführen zu können.
Beispiele
Synthetisieren Sie eine umgebungsunabhängige Vorlage aus einem CDK-Stack CloudFormation
In diesem Beispiel erstellen wir eine CloudFormation umgebungsunabhängige Vorlage aus unserem CDK-Stack. Wir können diese Vorlage dann in jeder Umgebung bereitstellen.
Im Folgenden finden Sie unser Beispiel für einen CDK-Stack. Dieser Stack definiert einen Amazon S3 S3-Bucket und eine CloudFormation Stack-Ausgabe für die Region des Buckets. Für dieses Beispiel env
ist nicht definiert:
export class CdkAppStack extends cdk.Stack {
constructor(scope: Construct, id: string, props?: cdk.StackProps) {
super(scope, id, props);
// Create the S3 bucket
const bucket = new s3.Bucket(this, 'amzn-s3-demo-bucket', {
removalPolicy: cdk.RemovalPolicy.DESTROY,
});
// Create an output for the bucket's Region
new cdk.CfnOutput(this, 'BucketRegion', {
value: bucket.env.region,
});
}
}
Wenn wir laufencdk synth
, das CDK CLI erzeugt eine CloudFormation Vorlage mit dem Pseudo-Parameter AWS::Region
als Ausgabewert für die Region des Buckets. Dieser Parameter wird bei der Bereitstellung behoben:
Outputs:
BucketRegion:
Value:
Ref: AWS::Region
Um diesen Stack in einer Umgebung bereitzustellen, die im dev
Profil unserer Anmeldeinformationen und Konfigurationsdateien angegeben ist, führen wir Folgendes aus:
$
cdk deploy CdkAppStack --profile dev
Wenn wir kein Profil angeben, das CDK CLI wird versuchen, Umgebungsinformationen aus dem default
Profil in unseren Anmeldeinformationen und Konfigurationsdateien zu verwenden.
Verwenden Sie Logik, um Umgebungsinformationen bei der Vorlagensynthese zu ermitteln
In diesem Beispiel konfigurieren wir die env
Eigenschaft unserer stack
Instanz so, dass sie einen gültigen Ausdruck verwendet. Wir geben zwei zusätzliche Umgebungsvariablen an, CDK_DEPLOY_ACCOUNT
undCDK_DEPLOY_REGION
. Diese Umgebungsvariablen können bei der Synthese Standardwerte außer Kraft setzen, sofern sie existieren:
new MyDevStack(app, 'dev', {
env: {
account: process.env.CDK_DEPLOY_ACCOUNT || process.env.CDK_DEFAULT_ACCOUNT,
region: process.env.CDK_DEPLOY_REGION || process.env.CDK_DEFAULT_REGION
}});
Wenn die Umgebung unseres Stacks auf diese Weise deklariert ist, können wir dann ein kurzes Skript oder eine Batch-Datei schreiben, Variablen über Befehlszeilenargumente setzen und dann aufrufencdk deploy
. Im Folgenden wird ein Beispiel gezeigt. Alle Argumente, die über die ersten beiden hinausgehen, werden cdk deploy
zur Angabe von Befehlszeilenoptionen oder Argumenten weitergegeben:
#!/usr/bin/env bash
if [[ $# -ge 2 ]]; then
export CDK_DEPLOY_ACCOUNT=$1
export CDK_DEPLOY_REGION=$2
shift; shift
npx cdk deploy "$@"
exit $?
else
echo 1>&2 "Provide account and region as first two args."
echo 1>&2 "Additional args are passed through to cdk deploy."
exit 1
fi
Speichern Sie das Skript unter und führen Sie es dann auscdk-deploy-to.sh
, chmod +x
cdk-deploy-to.sh
um es ausführbar zu machen.
Wir können dann zusätzliche Skripts schreiben, die das cdk-deploy-to
Skript für die Bereitstellung in bestimmten Umgebungen verwenden. Im Folgenden wird ein Beispiel gezeigt:
#!/usr/bin/env bash
# cdk-deploy-to-test.sh
./cdk-deploy-to.sh 123457689 us-east-1 "$@"
Im Folgenden finden Sie ein Beispiel, in dem das cdk-deploy-to
Skript für die Bereitstellung in mehreren Umgebungen verwendet wird. Wenn die erste Bereitstellung fehlschlägt, wird der Prozess gestoppt:
#!/usr/bin/env bash
# cdk-deploy-to-prod.sh
./cdk-deploy-to.sh 135792468 us-west-1 "$@" || exit
./cdk-deploy-to.sh 246813579 eu-west-1 "$@"