AWS CDK에서 파라미터를 사용하는 방법은 무엇입니까?

12871 단어 cdk

CDK 매개변수 정의



선택적 매개변수 섹션을 사용하여 템플릿을 사용자 정의하십시오. 파라미터를 사용하면 스택을 생성하거나 업데이트할 때마다 템플릿에 사용자 지정 값을 입력할 수 있습니다.

매개변수를 정의하려면 CfnParameter 구성을 사용합니다.

// parameter of type String
const applicationPrefix = new CfnParameter(this, 'prefix', {
  description: 'parameter of type String',
  type: 'String',
  allowedPattern: '^[a-z0-9]*$', // allowed pattern for the parameter
  minLength: 3, // minimum length of the parameter
  maxLength: 20, // maximum length of the parameter
}).valueAsString // get the value of the parameter as string

console.log('application Prefix 👉', applicationPrefix)

// parameter of type Number
const applicationPort = new CfnParameter(this, 'port', {
  description: 'parameter of type Number',
  type: 'Number',
  minValue: 1, // minimum value of the parameter
  maxValue: 65535, // maximum value of the parameter
  allowedValues: ['8080', '8081'], // allowed values of the parameter
}).valueAsNumber // get the value of the parameter as number

console.log('application Port 👉', applicationPort)

// parameter of type CommaDelimitedList
const applicationDomains = new CfnParameter(this, 'domains', {
  description: 'parameter of type CommaDelimitedList',
  type: 'CommaDelimitedList',
}).valueAsList // get the value of the parameter as list of strings

console.log('application Domains 👉', applicationDomains)


매개변수의 이름(논리 ID)은 스택 내의 이름과 위치에서 파생됩니다. 따라서 매개변수는 스택 레벨에서 정의하는 것이 좋습니다.

위의 코드 스니펫에서 수행한 작업을 살펴보겠습니다.

3개의 매개변수를 정의했습니다.
  • prefix : 최소 길이가 3이고 최대 길이가 20인 문자열 유형의 매개변수입니다.
  • port : 최소값이 1이고 최대값이 65535인 숫자 유형의 매개변수입니다.
  • domains : CommaDelimitedList 유형의 매개변수입니다.

  • CloudFormation은 현재 다음 매개변수 유형을 지원합니다.
  • 문자열 – 리터럴 문자열
  • 숫자 – 정수 또는 실수
  • 목록 - 정수 또는 부동 소수점 배열
  • CommaDelimitedList – * 쉼표로 구분되는 리터럴 문자열의 배열
  • AWS-specific parameter types
  • SSM parameter types

  • 파라미터를 정의하지 않고 스택을 배포하려고 하면 스택이 실패합니다.
    CdkStarterStackStack failed: Error: The following CloudFormation Parameters are missing a value: port, domains
    매개변수prefix는 기본값이 있으므로 필요하지 않습니다.

    매개변수가 있는 스택 배포




    npx aws-cdk deploy \
        --parameters prefix=demo \
        --parameters port=8081 \
        --parameters domains=www.codewithyou.com,www.freedevtool.com \
        --outputs-file ./cdk-outputs.json
    


    템플릿에 전달하는 모든 매개변수에 대해 --parameters 플래그를 사용해야 합니다.

    이제 CDK 애플리케이션을 성공적으로 배포했으므로 CloudFormation 콘솔에서 매개 변수 섹션을 검사할 수 있습니다.

    Parameters in the CloudFormation console

    또는 cdk-outputs.json 파일을 사용하여 매개변수 값을 가져올 수 있습니다.

    CdkStarterStackStack.applicationDomains = www.codewithyou.com,www.freedevtool.com
    CdkStarterStackStack.applicationPort = 8081
    CdkStarterStackStack.applicationPrefix = demo
    

    cdk.out/CdkStarterStackStack.template.json 파일을 살펴보면 Parameters 섹션에 매개변수가 정의되어 있음을 알 수 있습니다.

    {
      "Parameters": {
        "prefix": {
          "Type": "String",
          "Default": "sample",
          "AllowedPattern": "^[a-z0-9]*$",
          "Description": "parameter of type String",
          "MaxLength": 20,
          "MinLength": 3
        },
        "port": {
          "Type": "Number",
          "AllowedValues": ["8080", "8081"],
          "Description": "parameter of type Number",
          "MaxValue": 65535,
          "MinValue": 1
        },
        "domains": {
          "Type": "CommaDelimitedList",
          "Description": "parameter of type CommaDelimitedList"
        },
        "BootstrapVersion": {
          "Type": "AWS::SSM::Parameter::Value<String>",
          "Default": "/cdk-bootstrap/hnb659fds/version",
          "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]"
        }
      }
    }
    


    대청소



    이 기사를 떠나기 전에 스택을 삭제하는 것을 잊지 마십시오. 읽어 주셔서 감사합니다!

    npx aws-cdk destroy
    


    The code for this article is available on GitHub

    좋은 웹페이지 즐겨찾기