메뉴
AWS CloudFormation
사용 설명서 (API Version 2010-05-15)

매개 변수

Parameters(선택 사항) 섹션을 사용하여 스택을 생성할 때 값을 템플릿으로 전달할 수 있습니다. 파라미터를 사용하여 스택을 생성할 때마다 사용자 지정되는 템플릿을 생성할 수 있습니다. 스택 생성 시 각 파라미터에 값이 포함되어야 합니다. 파라미터를 선택적 파라미터로 설정하도록 기본값을 지정하면 스택 생성 시 값을 전달할 필요가 없습니다. AWS CloudFormation에서 이 기본값이 사용됩니다. 스택 생성에 대한 자세한 내용은 스택 작업 단원을 참조하십시오.

EC2 인스턴스 유형 파라미터

다음 예제에서는 Amazon EC2 인스턴스 유형 파라미터를 생성합니다. 스택 생성 시 InstanceTypeParameter 파라미터의 값을 지정할 수 있습니다. 즉, 스택 생성 시 원하는 인스턴스 유형을 선택할 수 있습니다. 기본적으로 템플릿에는 t2.micro가 사용됩니다.

JSON

Copy
"Parameters" : { "InstanceTypeParameter" : { "Type" : "String", "Default" : "t2.micro", "AllowedValues" : ["t2.micro", "m1.small", "m1.large"], "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro." } }

YAML

Copy
Parameters: InstanceTypeParameter: Type: String Default: t2.micro AllowedValues: - t2.micro - m1.small - m1.large Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro.

EC2 인스턴스 유형 파라미터 사용

동일한 템플릿 내에서 Ref 내장 함수를 사용하여 템플릿의 다양한 부분에서 파라미터 값을 지정할 수 있습니다. 다음 코드 조각에서는 InstanceTypeParameter 파라미터를 사용하여 EC2 인스턴스 리소스의 인스턴스 유형을 지정합니다.

JSON

Copy
"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceTypeParameter" }, "ImageId" : "ami-2f726546" } }

YAML

Copy
Ec2Instance: Type: AWS::EC2::Instance Properties: InstanceType: Ref: InstanceTypeParameter ImageId: ami-2f726546

구문

Parameters 섹션은 키 이름 Parameters로 이루어집니다. AWS CloudFormation 템플릿에는 최대 60개 파라미터를 지정할 수 있습니다.

각 파라미터마다 논리적 이름을 선언해야 합니다. 이 이름은 템플릿 내 모든 논리적 이름 간에 고유해야 하며 영숫자로 지정해야 합니다. 파라미터의 논리적 이름을 선언한 후에는 파라미터의 속성을 지정할 수 있습니다. 파라미터를 String, Number, CommaDelimitedList 또는 AWS 관련 유형 중 하나로 선언해야 합니다. String, Number 및 AWS 관련 파라미터 유형의 경우, AWS CloudFormation에서 파라미터 값을 확인하는 데 사용하는 제약을 정의할 수 있습니다.

AWS 관련 파라미터 유형은 Amazon EC2 키 페어 이름 및 VPC ID 같은 AWS 값입니다. AWS CloudFormation에서는 사용자의 AWS 계정의 기존 값과 대조하여 이러한 파라미터 값을 확인합니다. AWS 관련 파라미터 유형은 스택 생성 또는 업데이트 시작 시 유효하지 않은 값을 찾아내는 데 유용합니다.

중요

중요 파라미터 값(예: 암호)의 경우, NoEcho 속성을 true로 설정합니다. 그러면 누구든 해당 스택을 설명할 때마다 해당 파라미터 값이 별표(*****)로 표시됩니다.

JSON

Copy
"Parameters" : { "ParameterLogicalID" : { "Type" : "DataType", "ParameterProperty" : "value" } }

YAML

Copy
Parameters: ParameterLogicalID: Type: DataType ParameterProperty: value

Properties

AllowedPattern

String 유형에 허용할 패턴을 나타내는 정규식입니다.

Required: No

AllowedValues

파라미터에 허용되는 값 목록을 포함하는 어레이입니다.

Required: No

ConstraintDescription

제약 위반 시 해당 제약을 설명하는 문자열입니다. 예를 들어 제약 설명이 없으면 [A-Za-z0-9]+ 패턴이 허용된 파라미터에 사용자가 유효하지 않은 값을 지정할 때 다음과 같은 오류 메시지가 표시됩니다.

Copy
Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+

must only contain upper- and lowercase letters, and numbers와 같은 제약 설명을 추가하여 사용자 지정 오류 메시지를 표시할 수 있습니다.

Copy
Malformed input-Parameter MyParameter must only contain upper and lower case letters and numbers

Required: No

Default

스택 생성 시 지정된 값이 없는 경우에 사용할 템플릿에 적합한 유형의 값입니다. 파라미터에 대한 제약을 정의하는 경우 이러한 제약을 준수하는 값을 지정해야 합니다.

Required: No

Description

파라미터를 설명하는 최대 4000자 문자열입니다.

Required: No

MaxLength

String 유형에 허용할 최대 문자 수를 결정하는 정수 값입니다.

Required: No

MaxValue

Number 유형에 허용할 최대 숫자 값을 결정하는 숫자 값입니다.

Required: No

MinLength

String 유형에 허용할 최소 문자 수를 결정하는 정수 값입니다.

Required: No

MinValue

Number 유형에 허용할 최소 숫자 값을 결정하는 숫자 값입니다.

Required: No

NoEcho

누구든 호출하여 스택을 설명할 때마다 파라미터 값을 마스킹할지 여부를 나타냅니다. 값을 true로 설정하면 파라미터 값이 별표(*****)로 표시됩니다.

Required: No

Type

파라미터(DataType)의 데이터 유형입니다.

Required: Yes

Type 속성에 대해 다음 값을 지정할 수 있습니다.

String

리터럴 문자열입니다.

예를 들면 사용자는 "MyUserName"을 지정할 수 있습니다.

Number

정수 또는 부동 소수점입니다. AWS CloudFormation에서 파라미터 값이 숫자로 확인되지만, 템플릿 내에서 이 파라미터를 사용하는 경우(예를 들면, Ref 내장 함수를 사용하여) 파라미터 값이 문자열이 됩니다.

예를 들면 사용자는 "8888"을 지정할 수 있습니다.

List<Number>

쉼표로 구분되는 정수 또는 부동 소수점 어레이입니다. AWS CloudFormation에서 파라미터 값이 숫자로 확인되지만, 템플릿 내에서 이 파라미터를 사용하는 경우(예를 들면, Ref 내장 함수를 사용하여) 파라미터 값이 문자열 목록이 됩니다.

예를 들어 사용자가 "80,20"을 지정하면 Ref["80","20"]이 됩니다.

CommaDelimitedList

쉼표로 구분된 리터럴 문자열 어레이입니다. 총 문자열 수는 총 쉼표 수보다 하나 더 많아야 합니다. 또한 각 멤버 문자열에는 공백이 삽입됩니다.

예를 들어 사용자가 "test,dev,prod"을 지정하면 Ref["test","dev","prod"]가 됩니다.

AWS 관련 파라미터 유형

AWS 관련 파라미터 유형의 경우 템플릿 사용자는 계정에 있는 기존 AWS 값을 지정해야 합니다. AWS CloudFormation에서는 다음과 같은 AWS 관련 유형을 지원합니다.

AWS::EC2::AvailabilityZone::Name

가용 영역(예: us-west-2a).

AWS::EC2::Image::Id

Amazon EC2 이미지 ID(예: ami-ff527ecf). AWS CloudFormation 콘솔은 이 파라미터 유형에 대해 드롭다운 값 목록을 표시하지 않습니다.

AWS::EC2::Instance::Id

Amazon EC2 인스턴스 ID(예: i-1e731a32).

AWS::EC2::KeyPair::KeyName

Amazon EC2 키 페어 이름.

AWS::EC2::SecurityGroup::GroupName

EC2-Classic 또는 기본 VPC 보안 그룹 이름(예: my-sg-abc).

AWS::EC2::SecurityGroup::Id

보안 그룹 ID(예: sg-a123fd85).

AWS::EC2::Subnet::Id

서브넷 ID(예: subnet-123a351e).

AWS::EC2::Volume::Id

Amazon EBS 볼륨 ID(예: vol-3cdd3f56).

AWS::EC2::VPC::Id

VPC ID(예: vpc-a123baa3).

AWS::Route53::HostedZone::Id

Amazon Route 53 호스팅 영역 ID(예: Z23YXV4OVPL04A).

List<AWS::EC2::AvailabilityZone::Name>

리전 가용 영역 어레이(예: us-west-2a, us-west-2b).

List<AWS::EC2::Image::Id>

Amazon EC2 이미지 ID 어레이(예: ami-ff527ecf, ami-e7527ed7). AWS CloudFormation 콘솔은 이 파라미터 유형에 대해 드롭다운 값 목록을 표시하지 않습니다.

List<AWS::EC2::Instance::Id>

Amazon EC2 인스턴스 ID 어레이(예: i-1e731a32, i-1e731a34).

List<AWS::EC2::SecurityGroup::GroupName>

EC2-Classic 또는 기본 VPC 보안 그룹 이름 어레이(예: my-sg-abc, my-sg-def).

List<AWS::EC2::SecurityGroup::Id>

보안 그룹 ID 어레이(예: sg-a123fd85, sg-b456fd85).

List<AWS::EC2::Subnet::Id>

서브넷 ID 어레이(예: subnet-123a351e, subnet-456b351e).

List<AWS::EC2::Volume::Id>

Amazon EBS 볼륨 ID 어레이(예: vol-3cdd3f56, vol-4cdd3f56).

List<AWS::EC2::VPC::Id>

VPC ID 어레이(예: vpc-a123baa3, vpc-b456baa3).

List<AWS::Route53::HostedZone::Id>

Amazon Route 53 호스팅 영역 ID 어레이(예: Z23YXV4OVPL04A, Z23YXV4OVPL04B).

AWS CloudFormation에서는 사용자 계정의 기본 값과 대조하여 이러한 유형에 대한 입력 값을 확인합니다. 예를 들어, AWS::EC2::VPC::Id 유형을 사용하는 경우 사용자는 스택을 생성 중인 리전과 계정에 있는 기존 VPC ID를 입력해야 합니다.

AWS CloudFormation 콘솔의 파라미터 그룹화 및 정렬

AWS CloudFormation 콘솔을 사용하여 스택을 생성하거나 업데이트하는 경우 콘솔은 입력 파라미터를 논리적 ID별 영문자순으로 나열합니다. 기본 정렬을 재정의하려면 AWS::CloudFormation::Interface 메타데이터 키를 사용합니다. 파라미터를 그룹화 및 정렬하면 사용자가 파라미터 값을 보다 쉽게 지정할 수 있습니다. 예를 들면 영문자 목록 전체에 걸쳐 산발적으로 나열되지 않도록 모든 VPC 관련 파라미터를 그룹화할 수 있습니다.

메타데이터 키에서는 생성할 그룹, 각 그룹에 포함할 파라미터, 그리고 콘솔에서 그룹 내 각 파라미터를 표시하는 순서를 지정할 수 있습니다. 또한 콘솔에서 논리적 ID 대신에 설명 이름을 표시하도록 친숙한 파라미터 이름을 정의할 수도 있습니다. 메타데이터 키에서 참조하는 모든 파라미터는 템플릿의 Parameters 섹션에 선언해야 합니다.

AWS::CloudFormation::Interface 메타데이터 키에 대한 자세한 내용과 예제는 AWS::CloudFormation::Interface 단원을 참조하십시오.

예제

기본 입력 파라미터

다음 예제인 Parameters 섹션에는 두 가지 파라미터가 선언됩니다. DBPort 파라미터는 기본값이 3306Number 유형입니다. 지정할 수 있는 최소값은 1150이고, 지정할 수 있는 최대값은 65535입니다. DBPwd 파라미터는 기본값이 없는 String 유형입니다. NoEcho 속성이 true로 설정되어 aws cloudformation describe-stacks AWS CLI 명령 같은 스택 설명 호출 시 파라미터 값이 반환되지 않습니다. 지정할 수 있는 최소 길이는 1이고, 지정할 수 있는 최대 길이는 41입니다. 이 패턴에는 영문자 소문자/대문자와 숫자가 허용됩니다.

JSON

Copy
"Parameters" : { "DBPort" : { "Default" : "3306", "Description" : "TCP/IP port for the database", "Type" : "Number", "MinValue" : "1150", "MaxValue" : "65535" }, "DBPwd" : { "NoEcho" : "true", "Description" : "The database admin account password", "Type" : "String", "MinLength" : "1", "MaxLength" : "41", "AllowedPattern" : "^[a-zA-Z0-9]*$" } }

YAML

Copy
Parameters: DBPort: Default: 3306 Description: TCP/IP port for the database Type: Number MinValue: 1150 MaxValue: 65535 DBPwd: NoEcho: true Description: The database admin account password Type: String MinLength: 1 MaxLength: 41 AllowedPattern: ^[a-zA-Z0-9]*$

AWS 관련 파라미터 유형

AWS 관련 파라미터 유형을 사용하는 경우 누구든 해당 템플릿을 사용하여 스택을 생성하거나 업데이트할 경우 현재 스택에 대해 자신의 계정과 리전에 있는 기존 AWS 값을 지정해야 합니다. AWS 관련 파라미터 유형을 사용하면 AWS CloudFormation에서 리소스를 생성하거나 업데이트하기 전에 이러한 유형의 입력 값이 존재하고 올바른지 확인할 수 있습니다. 예를 들어 AWS::EC2::KeyPair::KeyName 파라미터 유형을 사용하는 경우 AWS CloudFormation에서는 Amazon EC2 인스턴스 같은 리소스를 생성하기 전에 사용자의 기존 키 페어 이름과 대조하여 입력 값을 확인합니다.

사용자가 AWS Management Console을 사용하는 경우 AWS CloudFormation에서는 AWS 관련 파라미터 유형을 유효한 값으로 미리 채웁니다. 따라서 사용자는 특정 이름이나 ID를 기억하고 올바르게 입력할 필요가 없습니다. 드롭다운 목록에서 하나 이상의 값을 선택하기만 하면 됩니다. 또한 사용자는 파라미터 유형에 따라 ID, 이름 또는 Name 태그 값을 기준으로 값을 검색할 수 있습니다. 자세한 내용은 스택 이름 및 파라미터 지정 단원을 참조하십시오.

다음 예제에서는 AWS::EC2::KeyPair::KeyNameAWS::EC2::Subnet::Id 유형의 두 파라미터를 선언합니다. 이러한 유형은 유효한 값을 기존 키 페어 및 서브넷 ID로 제한합니다. mySubnetIDs 파라미터가 목록으로 지정되므로 사용자는 하나 이상의 서브넷 ID를 지정할 수 있습니다.

JSON

Copy
"Parameters" : { "myKeyPair" : { "Description" : "Amazon EC2 Key Pair", "Type" : "AWS::EC2::KeyPair::KeyName" }, "mySubnetIDs" : { "Description" : "Subnet IDs", "Type" : "List<AWS::EC2::Subnet::Id>" } }

YAML

Copy
Parameters: myKeyPair: Description: Amazon EC2 Key Pair Type: "AWS::EC2::KeyPair::KeyName" mySubnetIDs: Description: Subnet IDs Type: "List<AWS::EC2::Subnet::Id>"

AWS CLI 및 API 지원

현재 사용자는 AWS CLI 또는 AWS CloudFormation API를 사용하여 AWS 관련 파라미터의 유효 값 목록을 볼 수 없습니다. 하지만 aws cloudformation get-template-summary 명령이나 GetTemplateSummary API를 사용하여 파라미터 유형 같은 각 파라미터에 대한 정보를 볼 수 있습니다.

쉼표로 구분된 목록 파라미터 유형

CommaDelimitedList 파라미터 유형을 사용하면 한 파라미터에 여러 문자열 값을 지정할 수 있습니다. 즉, 여러 가지 파라미터를 사용하는 대신 파라미터 하나에 여러 값을 지정할 수 있습니다. 예를 들어, 세 가지 서브넷을 각각의 고유 CIDR 블록으로 생성하는 경우 각기 다른 세 파라미터로 세 가지 CIDR 블록을 지정할 수 있습니다. 하지만 다음 코드 조각과 같이 세 CIDR 블록의 목록을 받는 파라미터 하나만 사용하는 편이 더 간단합니다.

JSON

Copy
"Parameters" : { "DbSubnetIpBlocks": { "Description": "Comma-delimited list of three CIDR blocks", "Type": "CommaDelimitedList", "Default": "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24" } }

YAML

Copy
Parameters: DbSubnetIpBlocks: Description: "Comma-delimited list of three CIDR blocks" Type: CommaDelimitedList Default: "10.0.48.0/24, 10.0.112.0/24, 10.0.176.0/24"

쉼표로 구분된 목록 파라미터에서 값 반환

목록에서 특정 값을 참조하려면 템플릿의 Resources 섹션에서 Fn::Select 내장 함수를 사용합니다. 다음 코드 조각에서처럼 원하는 객체의 인덱스 값과 객체 목록을 전달합니다.

JSON
Copy
"DbSubnet1" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "0", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "0", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet2" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "1", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "1", {"Ref" : "DbSubnetIpBlocks"} ] } } }, "DbSubnet3" : { "Type" : "AWS::EC2::Subnet", "Properties" : { "AvailabilityZone" : {"Fn::Join" : ["",[ { "Ref" : "AWS::Region" }, { "Fn::Select" : [ "2", {"Ref" : "VpcAzs"} ] } ] ]} , "VpcId" : { "Ref" : "VPC" }, "CidrBlock" : { "Fn::Select" : [ "2", {"Ref" : "DbSubnetIpBlocks"} ] } } }
YAML
Copy
DbSubnet1: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [0, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [0, !Ref DbSubnetIpBlocks] DbSubnet2: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [1, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [1, !Ref DbSubnetIpBlocks] DbSubnet3: Type: AWS::EC2::Subnet Properties: AvailabilityZone: !Sub - "${AWS::Region}${AZ}" - AZ: !Select [2, !Ref VpcAzs] VpcId: !Ref VPC CidrBlock: !Select [2, !Ref DbSubnetIpBlocks]