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

Ini adalah Panduan Pengembang AWS CDK v2. CDK v1 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 tumpukan CDK dalam aplikasi Anda pada akhirnya harus dikaitkan dengan lingkungan untuk menentukan ke mana tumpukan akan digunakan.

Untuk pengenalan AWS lingkungan, lihatLingkungan.

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 memiliki config file credentials dan Anda dikonfigurasi, 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 kode CDK 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 dengan CDK, Anda mulai dengan mendefinisikan tumpukan CDK, yang berisi konstruksi yang mewakili sumber daya. AWS Selanjutnya, Anda mensintesis setiap tumpukan CDK ke dalam template. AWS CloudFormation Anda kemudian menyebarkan CloudFormation template ke lingkungan Anda. Bagaimana Anda menentukan lingkungan menentukan kapan informasi lingkungan Anda diterapkan dan dapat memengaruhi perilaku dan hasil CDK.

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 CLI perintah CDK 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 CDK Anda. 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 saat sintesis CloudFormation . 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 dan file saat penerapan. credentials config

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 kode CDK Anda: CDK_DEFAULT_ACCOUNT danCDK_DEFAULT_REGION. Saat Anda menggunakan variabel lingkungan ini dalam env properti instance tumpukan Anda, Anda dapat meneruskan informasi lingkungan dari kredensyal dan file konfigurasi Anda menggunakan opsi CLI --profile CDK.

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 tumpukan CDK yang sama yang disintesis ke AWS CloudFormation templat untuk lingkungan yang berbeda. Ini berarti Anda dapat menerapkan tumpukan CDK yang sama ke AWS lingkungan yang berbeda tanpa harus memodifikasi kode CDK 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 kode CDK 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 --profile opsi dengan CLI perintah CDK apa pun untuk menentukan profil yang akan digunakan. Berikut ini adalah contoh yang menyebarkan tumpukan CDK bernama myStack menggunakan prod profil yang didefinisikan dalam file credentials danconfig:

$ cdk deploy myStack --profile prod

Untuk informasi selengkapnya tentang --profile opsi, bersama dengan CLI perintah dan opsi CDK lainnya, lihatAWS CDKCLIreferensi 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 yang valid AWS Identity and Access Management (IAM) untuk melakukan penerapan tumpukan dengan ke dalam lingkungan yang Anda tentukan AWS CDK .

Contoh

Mensintesis template agnostik lingkungan dari tumpukan CDK CloudFormation

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

Berikut ini adalah contoh tumpukan CDK 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, 'myBucket', { 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, 'myBucket', { 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, 'myBucket', 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, "myBucket") .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, "myBucket", 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("myBucket"), &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 }

Saat kami menjalankancdk 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 %*