CloudFormation 파라미터를 사용하여 CloudFormation 값 가져오기 - AWS Cloud Development Kit (AWS CDK) v2

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

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

CloudFormation 파라미터를 사용하여 CloudFormation 값 가져오기

AWS Cloud Development Kit (AWS CDK) 애플리케이션 내의 AWS CloudFormation 파라미터를 사용하여 배포 시 합성된 CloudFormation 템플릿에 사용자 지정 값을 입력합니다.

버전 관리에 관한 소개 부분은 파라미터 및 AWS CDK 단원을 참조하십시오.

CDK 앱에서 파라미터 정의

CfnParameter 클래스를 사용하여 파라미터를 정의합니다. 최소한 대부분의 파라미터에 유형과 설명을 지정해야 하지만 둘 다 기술적으로 선택 사항입니다. 사용자에게 AWS CloudFormation 콘솔에 파라미터 값을 입력하라는 메시지가 표시되면 설명이 나타납니다. 사용 가능한 유형에 대한 자세한 내용은 유형을 참조하세요.

참고

모든 범위에서 파라미터를 정의할 수 있습니다. 그러나 코드를 리팩터링할 때 논리적 ID가 변경되지 않도록 스택 수준에서 파라미터를 정의하는 것이 좋습니다.

TypeScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
JavaScript
const uploadBucketName = new CfnParameter(this, "uploadBucketName", { type: "String", description: "The name of the Amazon S3 bucket where uploaded files will be stored."});
Python
upload_bucket_name = CfnParameter(self, "uploadBucketName", type="String", description="The name of the Amazon S3 bucket where uploaded files will be stored.")
Java
CfnParameter uploadBucketName = CfnParameter.Builder.create(this, "uploadBucketName") .type("String") .description("The name of the Amazon S3 bucket where uploaded files will be stored") .build();
C#
var uploadBucketName = new CfnParameter(this, "uploadBucketName", new CfnParameterProps { Type = "String", Description = "The name of the Amazon S3 bucket where uploaded files will be stored" });

파라미터 사용

CfnParameter 인스턴스는 토큰을 통해 CDK 앱에 해당 값을 노출합니다. 모든 토큰과 마찬가지로 파라미터의 토큰은 합성 시 확인됩니다. 그러나 템플릿에 정의된 파라미터 AWS CloudFormation (배포 시 확인됨)에 대한 참조로 확인되며 구체적인 값이 아닙니다.

토큰을 Token 클래스의 인스턴스로 검색하거나 문자열, 문자열 목록 또는 숫자 인코딩으로 검색할 수 있습니다. 선택 사항은 파라미터를 사용하려는 클래스 또는 메서드에 필요한 값의 종류에 따라 달라집니다.

TypeScript
Property kind of value
토큰 class instance
valueAsList The token represented as a string list
valueAsNumber The token represented as a number
valueAsString The token represented as a string
JavaScript
Property kind of value
토큰 class instance
valueAsList The token represented as a string list
valueAsNumber The token represented as a number
valueAsString The token represented as a string
Python
Property kind of value
토큰 class instance
value_as_list The token represented as a string list
value_as_number The token represented as a number
value_as_string The token represented as a string
Java
Property kind of value
getValue() 토큰 class instance
getValueAsList() The token represented as a string list
getValueAsNumber() The token represented as a number
getValueAsString() The token represented as a string
C#
Property kind of value
토큰 class instance
ValueAsList The token represented as a string list
ValueAsNumber The token represented as a number
ValueAsString The token represented as a string

예를 들어 Bucket 정의에서 파라미터를 사용하려면 다음을 수행하세요.

TypeScript
const bucket = new Bucket(this, "amzn-s3-demo-bucket", { bucketName: uploadBucketName.valueAsString});
JavaScript
const bucket = new Bucket(this, "amzn-s3-demo-bucket", { bucketName: uploadBucketName.valueAsString});
Python
bucket = Bucket(self, "amzn-s3-demo-bucket", bucket_name=upload_bucket_name.value_as_string)
Java
Bucket bucket = Bucket.Builder.create(this, "amzn-s3-demo-bucket") .bucketName(uploadBucketName.getValueAsString()) .build();
C#
var bucket = new Bucket(this, "amzn-s3-demo-bucket") { BucketName = uploadBucketName.ValueAsString };

파라미터가 포함된 CDK 앱 배포

AWS CloudFormation 콘솔을 통해 생성된 AWS CloudFormation 템플릿을 배포하면 각 파라미터의 값을 제공하라는 메시지가 표시됩니다.

CDK CLI cdk deploy 명령을 사용하거나 CDK 프로젝트의 스택 파일에 파라미터 값을 지정하여 파라미터 값을 제공할 수도 있습니다.

cdk deploy로 파라미터 값 제공

CDK CLI cdk deploy 명령을 사용하여 배포하는 경우 배포 시 --parameters 옵션을 사용하여 파라미터 값을 제공할 수 있습니다.

다음은 cdk deploy 명령 구조의 예입니다.

$ cdk deploy stack-logical-id --parameters stack-name:parameter-name=parameter-value

CDK 앱에 단일 스택이 포함된 경우 --parameters 옵션에서 스택 논리적 ID 인수나 stack-name 값을 제공할 필요가 없습니다. CDK CLI는 이러한 값을 자동으로 찾아 제공합니다. 다음은 CDK 앱에서 단일 스택의 uploadBucketName 파라미터에 대한 uploadbucket 값을 지정하는 예입니다.

$ cdk deploy --parameters uploadBucketName=uploadbucket

멀티 스택 애플리케이션에 cdk deploy로 파라미터 값 제공

다음은 2개의 CDK 스택이 포함된 TypeScript의 예제 CDK 애플리케이션입니다. 각 스택에는 Amazon S3 버킷 인스턴스와 Amazon S3 버킷 이름을 설정하는 파라미터가 포함되어 있습니다.

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

여러 스택이 포함된 CDK 앱에 대해 다음을 수행할 수 있습니다.

  • 파라미터를 사용하여 하나의 스택 배포 - 다중 스택 애플리케이션에서 단일 스택을 배포하려면 스택 논리적 ID를 인수로 제공합니다.

    다음은 bucketNameParam의 파라미터 값으로 mynewbucketname을 사용하여 MySecondStack을 배포하는 예입니다.

    $ cdk deploy MySecondStack --parameters bucketNameParam='mynewbucketname'
  • 모든 스택을 배포하고 각 스택에 대한 파라미터 값 지정 - 모든 스택을 배포하려면 '*' 와일드카드나 --all 옵션을 제공합니다. 각 스택에 대한 파라미터 값을 지정하려면 단일 명령에서 --parameters 옵션을 여러 번 제공합니다. 다음은 예제입니다.

    $ cdk deploy '*' --parameters MyFirstDeployedStack:bucketNameParam='mynewfirststackbucketname' --parameters MySecondDeployedStack:bucketNameParam='mynewsecondstackbucketname'
  • 모든 스택을 배포하고 단일 스택에 대한 파라미터 값 지정 - 모든 스택을 배포하려면 '*' 와일드카드나 --all 옵션을 제공합니다. 그런 다음 --parameters 옵션에서 파라미터를 정의할 스택을 지정합니다. 다음은 CDK 앱의 모든 스택을 배포하고 MySecondDeployedStack AWS CloudFormation 스택의 파라미터 값을 지정하는 예제입니다. 다른 모든 스택은 기본 파라미터 값을 배포하고 사용합니다.

    $ cdk deploy '*' --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname' $ cdk deploy --all --parameters MySecondDeployedStack:bucketNameParam='mynewbucketname'

중첩된 스택이 있는 애플리케이션에 대해 cdk deploy로 파라미터 값 제공

중첩된 스택이 포함된 애플리케이션으로 작업할 때의 CDK CLI 동작은 다중 스택 애플리케이션과 유사합니다. 주요 차이점은 중첩된 스택을 모두 배포하려면 '**' 와일드카드를 사용하는 것입니다. '*' 와일드카드는 모든 스택을 배포하지만 중첩된 스택은 배포하지 않습니다. '**' 와일드카드는 중첩된 스택을 포함한 모든 스택을 배포합니다.

다음은 중첩된 스택에 대한 파라미터 값을 지정하면서 중첩된 스택을 배포하는 예입니다.

$ cdk deploy '**' --parameters MultiStackCdkApp/SecondStack:bucketNameParam='mysecondstackbucketname'

cdk deploy 명령줄 옵션에 대한 자세한 내용은 cdk deploy 섹션을 참조하세요.