Konfigurasikan lingkungan untuk digunakan dengan AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

Ini adalah Panduan Pengembang AWS CDK v2. CDKV1 yang lebih lama memasuki pemeliharaan pada 1 Juni 2022 dan mengakhiri dukungan pada 1 Juni 2023.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Konfigurasikan lingkungan untuk digunakan dengan AWS CDK

Anda dapat mengonfigurasi AWS lingkungan dengan berbagai cara untuk digunakan dengan file AWS Cloud Development Kit (AWS CDK). Metode terbaik untuk mengelola AWS lingkungan akan bervariasi, berdasarkan kebutuhan spesifik Anda.

Setiap CDK tumpukan dalam aplikasi Anda pada akhirnya harus dikaitkan dengan lingkungan untuk menentukan ke mana tumpukan akan digunakan.

Untuk pengenalan AWS lingkungan, lihatLingkungan untuk AWS CDK.

Di mana Anda dapat menentukan lingkungan dari

Anda dapat menentukan lingkungan dalam kredensyal dan file konfigurasi, atau dengan menggunakan env properti konstruksi dari Stack Construct Library. AWS

Kredensial dan file konfigurasi

Anda dapat menggunakan AWS Command Line Interface (AWS CLI) untuk membuat credentials dan config file yang menyimpan, mengatur, dan mengelola informasi AWS lingkungan Anda. Untuk mempelajari lebih lanjut tentang file-file ini, lihat Pengaturan konfigurasi dan file kredensyal di Panduan AWS Command Line Interface Pengguna.

Nilai yang disimpan dalam file-file ini diatur oleh profil. Cara Anda memberi nama profil Anda dan pasangan nilai kunci dalam file-file ini akan bervariasi berdasarkan metode Anda mengonfigurasi akses terprogram. Untuk mempelajari lebih lanjut tentang metode yang berbeda, lihatKonfigurasikan kredensi keamanan untuk AWS CDKCLI.

Secara umum, AWS CDK menyelesaikan Akun AWS informasi dari credentials file Anda dan Wilayah AWS informasi dari file Andaconfig.

Setelah Anda mengkonfigurasi config file credentials dan Anda, Anda dapat menentukan lingkungan yang akan digunakan dengan AWS CDK CLI dan melalui variabel lingkungan.

properti env dari konstruksi Stack

Anda dapat menentukan lingkungan untuk setiap tumpukan dengan menggunakan env properti Stack konstruksi. Properti ini mendefinisikan akun dan Wilayah yang akan digunakan. Anda dapat meneruskan nilai hard-code ke properti ini atau meneruskan variabel lingkungan yang ditawarkan oleh. CDK

Untuk melewati variabel lingkungan, gunakan variabel AWS_DEFAULT_ACCOUNT dan AWS_DEFAULT_REGION lingkungan. Variabel lingkungan ini dapat meneruskan nilai dari config file Anda credentials dan. Anda juga dapat menggunakan logika dalam CDK kode Anda untuk menentukan nilai variabel lingkungan ini.

Prioritas lingkungan dengan AWS CDK

Jika Anda menggunakan beberapa metode menentukan lingkungan, AWS CDK mematuhi prioritas berikut:

  1. Nilai hard-code ditentukan dengan env properti konstruksi. Stack

  2. AWS_DEFAULT_ACCOUNTdan variabel AWS_DEFAULT_REGION lingkungan ditentukan dengan env properti Stack konstruksi.

  3. Informasi lingkungan yang terkait dengan profil dari Anda credentials dan config file dan diteruskan ke CDK CLI menggunakan --profile opsi.

  4. defaultProfil dari Anda credentials dan config file.

Kapan menentukan lingkungan

Ketika Anda mengembangkan denganCDK, Anda mulai dengan mendefinisikan CDK tumpukan, yang berisi konstruksi yang mewakili sumber daya. AWS Selanjutnya, Anda mensintesis setiap CDK tumpukan menjadi AWS CloudFormation template. Anda kemudian menyebarkan CloudFormation template ke lingkungan Anda. Bagaimana Anda menentukan lingkungan menentukan kapan informasi lingkungan Anda diterapkan dan dapat memengaruhi CDK perilaku dan hasil.

Tentukan lingkungan pada sintesis templat

Saat Anda menentukan informasi lingkungan menggunakan env properti Stack konstruksi, informasi lingkungan Anda diterapkan pada sintesis templat. Menjalankan cdk synth atau cdk deploy menghasilkan template khusus lingkungan CloudFormation .

Jika Anda menggunakan variabel lingkungan dalam env properti, Anda harus menggunakan --profile opsi dengan CDK CLI perintah untuk meneruskan profil yang berisi informasi lingkungan Anda dari kredensyal dan file konfigurasi Anda. Informasi ini kemudian akan diterapkan pada sintesis template untuk menghasilkan template khusus lingkungan.

Informasi lingkungan dalam CloudFormation template lebih diutamakan daripada metode lain. Misalnya, jika Anda menyediakan lingkungan yang berbedacdk deploy --profile profile, profil akan diabaikan.

Saat Anda memberikan informasi lingkungan dengan cara ini, Anda dapat menggunakan kode dan logika yang bergantung pada lingkungan dalam aplikasi Anda. CDK Ini juga berarti bahwa template yang disintesis bisa berbeda, berdasarkan mesin, pengguna, atau sesi yang disintesis di bawahnya. Pendekatan ini sering dapat diterima atau diinginkan selama pengembangan, tetapi tidak direkomendasikan untuk penggunaan produksi.

Tentukan lingkungan pada penyebaran tumpukan

Jika Anda tidak menentukan lingkungan menggunakan env properti Stack konstruksi, CDK CLI akan menghasilkan template agnostik lingkungan CloudFormation pada sintesis. Anda kemudian dapat menentukan lingkungan yang akan digunakan dengan menggunakancdk deploy --profile profile.

Jika Anda tidak menentukan profil saat menerapkan template agnostik lingkungan, CDK CLI akan mencoba menggunakan nilai lingkungan dari default profil Anda credentials dan config file saat penerapan.

Jika informasi lingkungan tidak tersedia saat penyebaran, AWS CloudFormation akan mencoba untuk menyelesaikan informasi lingkungan saat penyebaran melalui atribut terkait lingkungan seperti,, dan. stack.account stack.region stack.availabilityZones

Untuk tumpukan agnostik lingkungan, konstruksi dalam tumpukan tidak dapat menggunakan informasi lingkungan dan Anda tidak dapat menggunakan logika yang memerlukan informasi lingkungan. Misalnya, Anda tidak dapat menulis kode seperti if (stack.region ==== 'us-east-1') atau menggunakan metode konstruksi yang memerlukan informasi lingkungan sepertiVpc.fromLookup. Untuk menggunakan fitur ini, Anda harus menentukan lingkungan dengan env properti.

Untuk tumpukan agnostik lingkungan, konstruksi apa pun yang menggunakan Availability Zones akan melihat dua Availability Zone, memungkinkan tumpukan untuk diterapkan ke Wilayah mana pun.

Cara menentukan lingkungan dengan AWS CDK

Tentukan lingkungan hard-code untuk setiap tumpukan

Gunakan env properti Stack konstruksi untuk menentukan nilai AWS lingkungan untuk tumpukan Anda. Berikut adalah contohnya:

TypeScript
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 });
JavaScript
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 });
Python
env_EU = cdk.Environment(account="8373873873", region="eu-west-1") env_USA = cdk.Environment(account="2383838383", region="us-west-2") MyFirstStack(app, "first-stack-us", env=env_USA) MyFirstStack(app, "first-stack-eu", env=env_EU)
Java
public class MyApp { // Helper method to build an environment static Environment makeEnv(String account, String region) { return Environment.builder() .account(account) .region(region) .build(); } public static void main(final String argv[]) { App app = new App(); Environment envEU = makeEnv("8373873873", "eu-west-1"); Environment envUSA = makeEnv("2383838383", "us-west-2"); new MyFirstStack(app, "first-stack-us", StackProps.builder() .env(envUSA).build()); new MyFirstStack(app, "first-stack-eu", StackProps.builder() .env(envEU).build()); app.synth(); } }
C#
Amazon.CDK.Environment makeEnv(string account, string region) { return new Amazon.CDK.Environment { Account = account, Region = region }; } var envEU = makeEnv(account: "8373873873", region: "eu-west-1"); var envUSA = makeEnv(account: "2383838383", region: "us-west-2"); new MyFirstStack(app, "first-stack-us", new StackProps { Env=envUSA }); new MyFirstStack(app, "first-stack-eu", new StackProps { Env=envEU });
Go
env_EU := awscdk.Environment{ Account: jsii.String("8373873873"), Region: jsii.String("eu-west-1"), } env_USA := awscdk.Environment{ Account: jsii.String("2383838383"), Region: jsii.String("us-west-2"), } MyFirstStack(app, "first-stack-us", &awscdk.StackProps{ Env: &env_USA, }) MyFirstStack(app, "first-stack-eu", &awscdk.StackProps{ Env: &env_EU, })

Kami merekomendasikan pendekatan ini untuk lingkungan produksi. Dengan secara eksplisit menentukan lingkungan dengan cara ini, Anda dapat memastikan bahwa tumpukan selalu diterapkan ke lingkungan tertentu.

Tentukan lingkungan menggunakan variabel lingkungan

AWS CDK Ini menyediakan dua variabel lingkungan yang dapat Anda gunakan dalam CDK kode Anda: CDK_DEFAULT_ACCOUNT danCDK_DEFAULT_REGION. Bila Anda menggunakan variabel lingkungan ini dalam env properti instance tumpukan Anda, Anda dapat meneruskan informasi lingkungan dari kredensi dan file konfigurasi menggunakan file CDK CLI --profilepilihan.

Berikut ini adalah contoh bagaimana menentukan variabel lingkungan ini:

TypeScript

Akses variabel lingkungan melalui process objek Node.

catatan

Anda memerlukan DefinitelyTyped modul untuk process digunakan TypeScript. cdk initmenginstal modul ini untuk Anda. Namun, Anda harus menginstal modul ini secara manual jika Anda bekerja dengan proyek yang dibuat sebelum ditambahkan, atau jika Anda tidak menyiapkan proyek Anda menggunakancdk init.

npm install @types/node
new MyDevStack(app, 'dev', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }});
JavaScript

Akses variabel lingkungan melalui process objek Node.

new MyDevStack(app, 'dev', { env: { account: process.env.CDK_DEFAULT_ACCOUNT, region: process.env.CDK_DEFAULT_REGION }});
Python

Gunakan environ kamus os modul untuk mengakses variabel lingkungan.

import os MyDevStack(app, "dev", env=cdk.Environment( account=os.environ["CDK_DEFAULT_ACCOUNT"], region=os.environ["CDK_DEFAULT_REGION"]))
Java

Gunakan System.getenv() untuk mendapatkan nilai variabel lingkungan.

public class MyApp { // Helper method to build an environment static Environment makeEnv(String account, String region) { account = (account == null) ? System.getenv("CDK_DEFAULT_ACCOUNT") : account; region = (region == null) ? System.getenv("CDK_DEFAULT_REGION") : region; return Environment.builder() .account(account) .region(region) .build(); } public static void main(final String argv[]) { App app = new App(); Environment envEU = makeEnv(null, null); Environment envUSA = makeEnv(null, null); new MyDevStack(app, "first-stack-us", StackProps.builder() .env(envUSA).build()); new MyDevStack(app, "first-stack-eu", StackProps.builder() .env(envEU).build()); app.synth(); } }
C#

Gunakan System.Environment.GetEnvironmentVariable() untuk mendapatkan nilai variabel lingkungan.

Amazon.CDK.Environment makeEnv(string account=null, string region=null) { return new Amazon.CDK.Environment { Account = account ?? System.Environment.GetEnvironmentVariable("CDK_DEFAULT_ACCOUNT"), Region = region ?? System.Environment.GetEnvironmentVariable("CDK_DEFAULT_REGION") }; } new MyDevStack(app, "dev", new StackProps { Env = makeEnv() });
Go
import "os" MyDevStack(app, "dev", &awscdk.StackProps{ Env: &awscdk.Environment{ Account: jsii.String(os.Getenv("CDK_DEFAULT_ACCOUNT")), Region: jsii.String(os.Getenv("CDK_DEFAULT_REGION")), }, })

Dengan menentukan lingkungan menggunakan variabel lingkungan, Anda dapat memiliki CDK tumpukan yang sama disintesis ke AWS CloudFormation template untuk lingkungan yang berbeda. Ini berarti Anda dapat menerapkan CDK tumpukan yang sama ke AWS lingkungan yang berbeda tanpa harus memodifikasi CDK kode Anda. Anda hanya perlu menentukan profil yang akan digunakan saat menjalankancdk synth.

Pendekatan ini sangat bagus untuk lingkungan pengembangan saat menerapkan tumpukan yang sama ke lingkungan yang berbeda. Namun, kami tidak merekomendasikan pendekatan ini untuk lingkungan produksi karena CDK kode yang sama dapat mensintesis template yang berbeda, tergantung pada mesin, pengguna, atau sesi yang disintesis di bawahnya.

Tentukan lingkungan dari kredensi dan file konfigurasi Anda dengan CDK CLI

Saat menerapkan template agnostik lingkungan, gunakan opsi dengan apa pun --profile CDK CLI perintah untuk menentukan profil yang akan digunakan. Berikut ini adalah contoh yang menyebarkan CDK tumpukan bernama myStack menggunakan prod profil yang didefinisikan dalam config file credentials dan:

$ cdk deploy myStack --profile prod

Untuk informasi lebih lanjut tentang --profile opsi, bersama dengan lainnya CDK CLI perintah dan opsi, lihatAWS CDK CLI referensi perintah.

Pertimbangan saat mengonfigurasi lingkungan dengan AWS CDK

Layanan yang Anda tentukan dengan menggunakan konstruksi dalam tumpukan Anda harus mendukung Wilayah yang Anda gunakan. Untuk daftar yang didukung Layanan AWS per wilayah, lihat AWS Layanan menurut Wilayah.

Anda harus memiliki kredensyal valid AWS Identity and Access Management (IAM) untuk melakukan penerapan tumpukan dengan AWS CDK ke dalam lingkungan yang Anda tentukan.

Contoh

Mensintesis template agnostik lingkungan dari tumpukan CloudFormation CDK

Dalam contoh ini, kami membuat template agnostik lingkungan dari CloudFormation tumpukan kami. CDK Kami kemudian dapat menyebarkan template ini ke lingkungan apa pun.

Berikut ini adalah contoh CDK tumpukan kami. Tumpukan ini mendefinisikan bucket Amazon S3 dan output CloudFormation tumpukan untuk Wilayah bucket. Untuk contoh ini, tidak env didefinisikan:

TypeScript
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, }); } }
JavaScript
class CdkAppStack extends cdk.Stack { constructor(scope, id, props) { 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, }); } }
Python
class CdkAppStack(cdk.Stack): def __init__(self, scope: cdk.Construct, id: str, **kwargs) -> None: super().__init__(scope, id, **kwargs) # Create the S3 bucket bucket = s3.Bucket(self, 'amzn-s3-demo-bucket', removal_policy=cdk.RemovalPolicy.DESTROY ) # Create an output for the bucket's Region cdk.CfnOutput(self, 'BucketRegion', value=bucket.env.region )
Java
public class CdkAppStack extends Stack { public CdkAppStack(final Construct scope, final String id, final StackProps props) { super(scope, id, props); // Create the S3 bucket Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .removalPolicy(RemovalPolicy.DESTROY) .build(); // Create an output for the bucket's Region CfnOutput.Builder.create(this, "BucketRegion") .value(this.getRegion()) .build(); } }
C#
namespace MyCdkApp { public class CdkAppStack : Stack { public CdkAppStack(Construct scope, string id, IStackProps props = null) : base(scope, id, props) { // Create the S3 bucket var bucket = new Bucket(this, "amzn-s3-demo-bucket", new BucketProps { RemovalPolicy = RemovalPolicy.DESTROY }); // Create an output for the bucket's Region new CfnOutput(this, "BucketRegion", new CfnOutputProps { Value = this.Region }); } } }
Go
func NewCdkAppStack(scope constructs.Construct, id string, props *CdkAppStackProps) awscdk.Stack { stack := awscdk.NewStack(scope, &id, &props.StackProps) // Create the S3 bucket bucket := awss3.NewBucket(stack, jsii.String("amzn-s3-demo-bucket"), &awss3.BucketProps{ RemovalPolicy: awscdk.RemovalPolicy_DESTROY, }) // Create an output for the bucket's Region awscdk.NewCfnOutput(stack, jsii.String("BucketRegion"), &awscdk.CfnOutputProps{ Value: stack.Region(), }) return stack }

Ketika kita berlaricdk synth, CDK CLI menghasilkan CloudFormation template dengan parameter semu AWS::Region sebagai nilai output untuk Wilayah bucket. Parameter ini akan diselesaikan saat penerapan:

Outputs: BucketRegion: Value: Ref: AWS::Region

Untuk menyebarkan tumpukan ini ke lingkungan yang ditentukan dalam dev profil kredensyal dan file konfigurasi kami, kami menjalankan yang berikut ini:

$ cdk deploy CdkAppStack --profile dev

Jika kami tidak menentukan profil, CDK CLI akan mencoba menggunakan informasi lingkungan dari default profil di kredensi dan file konfigurasi kami.

Gunakan logika untuk menentukan informasi lingkungan pada sintesis template

Dalam contoh ini, kita mengkonfigurasi env properti stack instance kita untuk menggunakan ekspresi yang valid. Kami menentukan dua variabel lingkungan tambahan, CDK_DEPLOY_ACCOUNT danCDK_DEPLOY_REGION. Variabel lingkungan ini dapat mengesampingkan default pada waktu sintesis jika ada:

TypeScript
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 }});
JavaScript
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 }});
Python
MyDevStack(app, "dev", env=cdk.Environment( account=os.environ.get("CDK_DEPLOY_ACCOUNT", os.environ["CDK_DEFAULT_ACCOUNT"]), region=os.environ.get("CDK_DEPLOY_REGION", os.environ["CDK_DEFAULT_REGION"])
Java
public class MyApp { // Helper method to build an environment static Environment makeEnv(String account, String region) { account = (account == null) ? System.getenv("CDK_DEPLOY_ACCOUNT") : account; region = (region == null) ? System.getenv("CDK_DEPLOY_REGION") : region; account = (account == null) ? System.getenv("CDK_DEFAULT_ACCOUNT") : account; region = (region == null) ? System.getenv("CDK_DEFAULT_REGION") : region; return Environment.builder() .account(account) .region(region) .build(); } public static void main(final String argv[]) { App app = new App(); Environment envEU = makeEnv(null, null); Environment envUSA = makeEnv(null, null); new MyDevStack(app, "first-stack-us", StackProps.builder() .env(envUSA).build()); new MyDevStack(app, "first-stack-eu", StackProps.builder() .env(envEU).build()); app.synth(); } }
C#
Amazon.CDK.Environment makeEnv(string account=null, string region=null) { return new Amazon.CDK.Environment { Account = account ?? System.Environment.GetEnvironmentVariable("CDK_DEPLOY_ACCOUNT") ?? System.Environment.GetEnvironmentVariable("CDK_DEFAULT_ACCOUNT"), Region = region ?? System.Environment.GetEnvironmentVariable("CDK_DEPLOY_REGION") ?? System.Environment.GetEnvironmentVariable("CDK_DEFAULT_REGION") }; } new MyDevStack(app, "dev", new StackProps { Env = makeEnv() });
Go
var account, region string var b bool if account, b = os.LookupEnv("CDK_DEPLOY_ACCOUNT"); !b || len(account) == 0 { account = os.Getenv("CDK_DEFAULT_ACCOUNT") } if region, b = os.LookupEnv("CDK_DEPLOY_REGION"); !b || len(region) == 0 { region = os.Getenv("CDK_DEFAULT_REGION") } MyDevStack(app, "dev", &awscdk.StackProps{ Env: &awscdk.Environment{ Account: &account, Region: &region, }, })

Dengan lingkungan tumpukan kami dideklarasikan dengan cara ini, kami kemudian dapat menulis skrip pendek atau file batch dan mengatur variabel dari argumen baris perintah, lalu memanggilcdk deploy. Berikut adalah contohnya. Argumen apa pun di luar dua yang pertama diteruskan cdk deploy untuk menentukan opsi atau argumen baris perintah:

macOS/Linux
#!/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

Simpan skrip sebagaicdk-deploy-to.sh, lalu jalankan chmod +x cdk-deploy-to.sh untuk membuatnya dapat dieksekusi.

Windows
@findstr /B /V @ %~dpnx0 > %~dpn0.ps1 && powershell -ExecutionPolicy Bypass %~dpn0.ps1 %* @exit /B %ERRORLEVEL% if ($args.length -ge 2) { $env:CDK_DEPLOY_ACCOUNT, $args = $args $env:CDK_DEPLOY_REGION, $args = $args npx cdk deploy $args exit $lastExitCode } else { [console]::error.writeline("Provide account and region as first two args.") [console]::error.writeline("Additional args are passed through to cdk deploy.") exit 1 }

Versi Windows skrip digunakan PowerShell untuk menyediakan fungsionalitas yang sama dengan versi macOS/Linux. Ini juga berisi instruksi untuk memungkinkannya dijalankan sebagai file batch sehingga dapat dengan mudah dipanggil dari baris perintah. Itu harus disimpan sebagaicdk-deploy-to.bat. File cdk-deploy-to.ps1 akan dibuat ketika file batch dipanggil.

Kami kemudian dapat menulis skrip tambahan yang menggunakan cdk-deploy-to skrip untuk menyebarkan ke lingkungan tertentu. Berikut adalah contohnya:

macOS/Linux
#!/usr/bin/env bash # cdk-deploy-to-test.sh ./cdk-deploy-to.sh 123457689 us-east-1 "$@"
Windows
@echo off rem cdk-deploy-to-test.bat cdk-deploy-to 135792469 us-east-1 %*

Berikut ini adalah contoh yang menggunakan cdk-deploy-to skrip untuk menyebarkan ke beberapa lingkungan. Jika penerapan pertama gagal, proses berhenti:

macOS/Linux
#!/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 "$@"
Windows
@echo off rem cdk-deploy-to-prod.bat cdk-deploy-to 135792469 us-west-1 %* || exit /B cdk-deploy-to 245813579 eu-west-1 %*