쿠키 기본 설정 선택

당사는 사이트와 서비스를 제공하는 데 필요한 필수 쿠키 및 유사한 도구를 사용합니다. 고객이 사이트를 어떻게 사용하는지 파악하고 개선할 수 있도록 성능 쿠키를 사용해 익명의 통계를 수집합니다. 필수 쿠키는 비활성화할 수 없지만 '사용자 지정' 또는 ‘거부’를 클릭하여 성능 쿠키를 거부할 수 있습니다.

사용자가 동의하는 경우 AWS와 승인된 제3자도 쿠키를 사용하여 유용한 사이트 기능을 제공하고, 사용자의 기본 설정을 기억하고, 관련 광고를 비롯한 관련 콘텐츠를 표시합니다. 필수가 아닌 모든 쿠키를 수락하거나 거부하려면 ‘수락’ 또는 ‘거부’를 클릭하세요. 더 자세한 내용을 선택하려면 ‘사용자 정의’를 클릭하세요.

와 함께 사용할 환경 구성 AWS CDK

포커스 모드
와 함께 사용할 환경 구성 AWS CDK - AWS Cloud Development Kit (AWS CDK) v2

v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

v AWS CDK 2 개발자 안내서입니다. 이전 CDK v1은 2022년 6월 1일에 유지 관리에 들어갔으며 2023년 6월 1일에 지원이 종료되었습니다.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

에서 사용할 수 있도록 여러 가지 방법으로 AWS 환경을 구성할 수 있습니다 AWS Cloud Development Kit (AWS CDK). AWS 환경을 관리하는 가장 좋은 방법은 사용자의 특정 요구 사항에 따라 달라집니다.

스택이 배포되는 위치를 결정하기 위해 애플리케이션의 각 CDK 스택이 환경과 연결되어야 합니다.

AWS 환경에 대한 소개는 섹션을 참조하세요의 환경 AWS CDK.

환경을 지정할 수 있는 위치

자격 증명 및 구성 파일에서 환경을 지정하거나 AWS Construct Library에서 Stack 구문의 env 속성을 사용하여 환경을 지정할 수 있습니다.

자격 증명 및 구성 파일

AWS Command Line Interface (AWS CLI)를 사용하여 AWS 환경 정보를 저장, 구성 및 관리하는 credentialsconfig 파일을 생성할 수 있습니다. 이러한 파일에 대해 자세히 알아보려면 AWS Command Line Interface 사용 설명서Configuration and credential file settings를 참조하세요.

이러한 파일에 저장된 값은 프로파일별로 구성됩니다. 프로파일 이름과 이러한 파일에서 키 값 페어를 지정하는 방법은 프로그래밍 방식 액세스를 구성하는 방법에 따라 달라집니다. 다양한 방법에 대해 자세히 알아보려면 AWS CDKCLI에 대한 보안 자격 증명 구성 섹션을 참조하세요.

일반적으로는 credentials 파일의 AWS 계정 정보와 config 파일의 AWS 리전 정보를 AWS CDK 확인합니다.

credentialsconfig 파일을 구성한 후에는 및 환경 변수를 통해에 AWS CDK CLI 사용할 환경을 지정할 수 있습니다.

스택 구문의 env 속성

Stack 구문의 env 속성을 사용하여 각 스택의 환경을 지정할 수 있습니다. 이 속성은 사용할 계정과 리전을 정의합니다. 하드 코딩된 값을 이 속성에 전달하거나 CDK에서 제공하는 환경 변수를 전달할 수 있습니다.

환경 변수를 전달하려면 AWS_DEFAULT_ACCOUNTAWS_DEFAULT_REGION 환경 변수를 사용합니다. 이러한 환경 변수는 credentialsconfig 파일의 값을 전달할 수 있습니다. CDK 코드 내에서 로직을 사용하여 이러한 환경 변수의 값을 결정할 수도 있습니다.

환경 우선 순위 AWS CDK

환경을 지정하는 여러 방법을 사용하는 경우는 다음 우선 순위를 AWS CDK 준수합니다.

  1. Stack 구문의 env 속성으로 지정된 하드 코딩된 값

  2. Stack 구문의 env 속성으로 지정된 AWS_DEFAULT_ACCOUNTAWS_DEFAULT_REGION 환경 변수

  3. --profile 옵션을 사용하여 credentialsconfig 파일의 프로파일과 연결되고 CDK CLI에 전달되는 환경 정보

  4. credentialsconfig 파일의 default 프로파일

환경을 지정할 시기

CDK로 개발할 때는 먼저 AWS 리소스를 나타내는 구문이 포함된 CDK 스택을 정의해야 합니다. 다음으로 각 CDK 스택을 AWS CloudFormation 템플릿으로 합성합니다. 그런 다음 CloudFormation 템플릿을 환경에 배포합니다. 환경을 지정하는 방법은 환경 정보가 적용되는 시기를 결정하며 CDK 동작과 결과에 영향을 줄 수 있습니다.

템플릿 합성 시 환경 지정

Stack 구문의 env 속성을 사용하여 환경 정보를 지정하면 템플릿 합성 시 환경 정보가 적용됩니다. cdk synth 또는 cdk deploy를 실행하면 환경에 관련된 CloudFormation 템플릿이 생성됩니다.

env 속성 내에서 환경 변수를 사용하는 경우 CDK CLI 명령과 함께 --profile 옵션을 사용하여 자격 증명과 구성 파일의 환경 정보가 포함된 프로파일을 전달해야 합니다. 그러면 템플릿 합성 시 이 정보가 적용되어 환경에 관련된 템플릿이 생성됩니다.

CloudFormation 템플릿 내의 환경 정보가 다른 방법보다 우선합니다. 예를 들어 다른 환경에 cdk deploy --profile profile을 제공하면 프로파일이 무시됩니다.

이러한 방식으로 환경 정보를 제공하는 경우 CDK 앱 내에서 환경 종속 코드와 로직을 사용할 수 있습니다. 이는 또한 합성된 템플릿이 합성되는 시스템, 사용자 또는 세션에 따라 다를 수 있음을 의미합니다. 이러한 접근 방식은 개발 중에는 수락되거나 바람직한 경우가 많지만 프로덕션 용도로는 권장되지 않습니다.

스택 배포 시 환경 지정

Stack 구문의 env 속성을 사용하여 환경을 지정하지 않으면 CDK CLI는 합성 시 환경에 관계없는 CloudFormation 템플릿을 생성합니다. 그런 다음 cdk deploy --profile profile을 사용하여 배포할 환경을 지정할 수 있습니다.

환경에 관계없는 템플릿을 배포할 때 프로파일을 지정하지 않으면 CDK CLI는 배포 시 credentialsconfig 파일의 default 프로파일의 환경 값을 사용하려고 시도합니다.

배포 시 환경 정보를 사용할 수 없는 경우는 stack.account, stack.region및와 같은 환경 관련 속성을 통해 배포 시 환경 정보를 확인하려고 시도 AWS CloudFormation 합니다stack.availabilityZones.

환경에 관계없는 스택의 경우 스택 내의 구문은 환경 정보를 사용할 수 없으며 환경 정보가 필요한 로직을 사용할 수 없습니다. 예를 들어, if (stack.region ==== 'us-east-1')와 같은 코드를 작성하거나 Vpc.fromLookup 등의 환경 정보가 필요한 구문 메서드를 사용할 수 없습니다. 이러한 기능을 사용하려면 env 속성으로 환경을 지정해야 합니다.

환경에 관계없는 스택의 경우 가용 영역을 사용하는 모든 구문에는 가용 영역이 2개 표시되므로 스택을 모든 리전에 배포할 수 있습니다.

를 사용하여 환경을 지정하는 방법 AWS CDK

각 스택에 대해 하드 코딩된 환경 지정

Stack 구문의 env 속성을 사용하여 스택의 AWS 환경 값을 지정합니다. 다음은 예제입니다.

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, })
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 });

프로덕션 환경에는 이 접근 방식을 권장합니다. 이러한 방식으로 환경을 명시적으로 지정하여 스택이 항상 특정 환경에 배포되도록 할 수 있습니다.

환경 변수를 사용하여 환경 지정

는 CDK 코드 내에서 사용할 수 있는 두 가지 환경 변수인 CDK_DEFAULT_ACCOUNT 및를 AWS CDK 제공합니다CDK_DEFAULT_REGION. 스택 인스턴스의 env 속성 내에서 이러한 환경 변수를 사용하면 CDK CLI --profile 옵션을 사용하여 자격 증명과 구성 파일의 환경 정보를 전달할 수 있습니다.

다음은 이러한 환경 변수를 지정하는 방법의 예입니다.

TypeScript

노드의 process 객체를 통해 환경 변수에 액세스합니다.

참고

TypeScript로 process를 사용하려면 DefinitelyTyped 모듈이 필요합니다. cdk init가 이 모듈을 설치해줍니다. 그러나 이 모듈이 추가되기 전에 생성된 프로젝트로 작업하거나 cdk init를 사용하여 프로젝트를 설정하지 않은 경우 이 모듈을 수동으로 설치해야 합니다.

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

노드의 process 객체를 통해 환경 변수에 액세스합니다.

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

os 모듈의 environ 사전을 사용하여 환경 변수에 액세스합니다.

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

System.getenv()를 사용하여 환경 변수의 값을 가져옵니다.

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#

System.Environment.GetEnvironmentVariable()를 사용하여 환경 변수의 값을 가져옵니다.

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")), }, })

노드의 process 객체를 통해 환경 변수에 액세스합니다.

참고

TypeScript로 process를 사용하려면 DefinitelyTyped 모듈이 필요합니다. cdk init가 이 모듈을 설치해줍니다. 그러나 이 모듈이 추가되기 전에 생성된 프로젝트로 작업하거나 cdk init를 사용하여 프로젝트를 설정하지 않은 경우 이 모듈을 수동으로 설치해야 합니다.

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

환경 변수로 환경을 지정하여 동일한 CDK 스택이 다양한 환경에 대한 AWS CloudFormation 템플릿으로 합성되도록 할 수 있습니다. 즉, CDK 코드를 수정하지 않고도 동일한 CDK 스택을 서로 다른 AWS 환경에 배포할 수 있습니다. cdk synth를 실행할 때 사용할 프로파일만 지정하면 됩니다.

이 접근 방식은 동일한 스택을 서로 다른 환경에 배포할 때 개발 환경에 적합합니다. 그러나 동일한 CDK 코드가 합성되는 시스템, 사용자 또는 세션에 따라 서로 다른 템플릿을 합성할 수 있으므로 프로덕션 환경에는 이러한 접근 방식이 권장되지 않습니다.

CDK CLI를 사용하여 자격 증명 및 구성 파일에서 환경 지정

환경에 관계없는 템플릿을 배포할 때는 CDK CLI 명령과 함께 --profile 옵션을 사용하여 사용하려는 프로파일을 지정합니다. 다음은 credentialsconfig 파일에 정의된 prod 프로파일을 사용하여 myStack이라는 CDK 스택을 배포하는 예입니다.

$ cdk deploy myStack --profile prod

--profile 옵션과 다른 CDK CLI 명령 및 옵션에 대한 자세한 내용은 AWS CDK CLI 명령 참조 섹션을 참조하세요.

를 사용하여 환경을 구성할 때 고려 사항 AWS CDK

스택 내에서 구문을 사용하여 정의하는 서비스는 배포하려는 리전을 지원해야 합니다. 리전 AWS 서비스 별로 지원되는 목록은 AWS 리전별 서비스를 참조하세요.

AWS CDK 를 사용하여 지정된 환경에 스택 배포를 수행하려면 valid AWS Identity and Access Management (IAM) 보안 인증 정보가 있어야 합니다.

예시

CDK 스택에서 환경에 관계없는 CloudFormation 템플릿 동기화

이 예에서는 CDK 스택에서 환경에 관계없는 CloudFormation 템플릿을 생성합니다. 그런 다음 모든 환경에 이 템플릿을 배포할 수 있습니다.

다음은 예제 CDK 스택입니다. 이 스택은 버킷의 리전에 대한 Amazon S3 버킷과 CloudFormation 스택 출력을 정의합니다. 이 예에서는 env가 정의되지 않았습니다.

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 }
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, }); } }

cdk synth를 실행하면 CDK CLI는 버킷의 리전에 대한 출력 값으로 의사 파라미터 AWS::Region을 사용하여 CloudFormation 템플릿을 생성합니다. 이 파라미터는 배포 시 확인됩니다.

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

자격 증명과 구성 파일의 dev 프로파일에 지정된 환경에 이 스택을 배포하기 위해 다음을 실행합니다.

$ cdk deploy CdkAppStack --profile dev

프로파일을 지정하지 않으면 CDK CLI는 자격 증명 및 구성 파일에 있는 default 프로파일의 환경 정보를 사용하려고 시도합니다.

로직을 사용하여 템플릿 합성 시 환경 정보 확인

이 예에서는 유효한 표현식을 사용하도록 stack 인스턴스의 env 속성을 구성합니다. 두 가지 추가 환경 변수인 CDK_DEPLOY_ACCOUNTCDK_DEPLOY_REGION을 지정합니다. 이러한 환경 변수는 존재하는 경우 합성 시 기본값을 재정의할 수 있습니다.

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, }, })
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 }});

스택의 환경을 이런 방식으로 선언하면 짧은 스크립트나 배치 파일을 작성하고 명령줄 인수에서 변수를 설정한 다음 cdk deploy를 직접적으로 호출할 수 있습니다. 다음은 예입니다. 처음 2개를 제외한 모든 인수는 명령줄 옵션 또는 인수를 지정하기 위해 cdk deploy에 전달됩니다.

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

스크립트를 cdk-deploy-to.sh로 저장한 다음 chmod +x cdk-deploy-to.sh를 실행하여 실행 가능하게 만듭니다.

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 }

Windows 버전의 스크립트는 PowerShell을 사용하여 macOS/Linux 버전과 동일한 기능을 제공합니다. 또한 명령줄에서 쉽게 간접적으로 호출할 수 있게 배치 파일로 실행할 수 있도록 하는 지침도 포함되어 있습니다. Windows 버전의 스크립트를 cdk-deploy-to.bat로 저장해야 합니다. 배치 파일이 간접적으로 호출되면 cdk-deploy-to.ps1 파일이 생성됩니다.

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

스크립트를 cdk-deploy-to.sh로 저장한 다음 chmod +x cdk-deploy-to.sh를 실행하여 실행 가능하게 만듭니다.

그런 다음 cdk-deploy-to 스크립트를 사용하여 특정 환경에 배포하는 추가 스크립트를 작성할 수 있습니다. 다음은 예제입니다.

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 %*
#!/usr/bin/env bash # cdk-deploy-to-test.sh ./cdk-deploy-to.sh 123457689 us-east-1 "$@"

다음은 cdk-deploy-to 스크립트를 사용하여 여러 환경에 배포하는 예입니다. 첫 번째 배포가 실패하면 프로세스가 중지됩니다.

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 %*
#!/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 "$@"
프라이버시사이트 이용 약관쿠키 기본 설정
© 2025, Amazon Web Services, Inc. 또는 계열사. All rights reserved.