CloudFormation 템플릿에 대한 Parameters 섹션 구문 참조
선택 사항인 Parameters
단원을 사용하여 템플릿을 사용자 지정합니다. 파라미터를 통해 스택을 생성하거나 업데이트 할 때마다 템플릿에 사용자 지정 값을 입력할 수 있습니다. 템플릿에 파라미터를 사용하여 특정 시나리오에 맞게 조정할 수 있는 재사용 가능하고 유연한 템플릿을 만들 수 있습니다.
적절한 유형의 파라미터를 정의하여 콘솔로 스택을 생성할 때 기존 리소스의 식별자 목록에서 선택할 수 있습니다. 자세한 내용은 CloudFormation에서 제공하는 파라미터 유형을 사용하여 기존 리소스 및 Systems Manager 파라미터 참조 단원을 참조하십시오.
파라미터는 스택 리소스의 속성 값을 지정하는 데 주로 사용되는 방법입니다. 그러나 리전에 따라 달라지는 설정이 있거나 다른 조건이나 종속성으로 인해 사용자가 파악하기 어려운 설정이 있을 수 있습니다. 이러한 경우 원하는 결과를 얻기 위해 보다 간단한 값을 지정할 수 있도록(또는 전혀 지정할 필요가 없도록) 템플릿에 몇 가지 논리를 추가하는 것이 좋습니다(예: 매핑 사용). 자세한 내용은 CloudFormation 템플릿에 대한 Mappings 섹션 구문 참조 단원을 참조하십시오.
구문
다음 일반 구문을 사용하는 템플릿의 Parameters
섹션에서 파라미터를 선언합니다.
JSON
"Parameters" : { "
ParameterLogicalID
" : { "Description
": "Information about the parameter
", "Type" : "DataType
", "Default
" : "value
", "AllowedValues
" : ["value1
", "value2
"] } }
YAML
Parameters:
ParameterLogicalID
:Description
:Information about the parameter
Type:DataType
Default
:value
AllowedValues
: -value1
-value2
파라미터에는 해당 값과 값에 대한 구속 조건을 정의하는 속성 목록이 포함됩니다. 유일한 필수 속성은 Type
(String
, Number
또는 CloudFormation에서 제공하는 파라미터 유형일 수 있음)입니다. 사용자가 지정해야 하는 값의 종류에 대해 설명하는 Description
속성을 추가할 수도 있습니다. 파라미터의 이름과 설명은 스택 생성 마법사에서 템플릿을 사용할 때 파라미터 지정 페이지에 나타납니다.
참고
기본적으로 CloudFormation 콘솔에는 입력 파라미터가 논리적 ID에 따라 영문자순으로 나열됩니다. 이 기본 순서를 재정의하고 관련 파라미터를 함께 그룹화하려면 템플릿의 AWS::CloudFormation::Interface
메타데이터 키를 사용할 수 있습니다. 자세한 내용은 AWS::CloudFormation::Interface 단원을 참조하십시오.
기본값이 있는 파라미터의 경우 CloudFormation에서는 사용자가 다른 값을 지정하지 않을 경우 기본값이 사용됩니다. 기본 속성을 생략하는 경우 사용자가 해당 파라미터에 대한 값을 지정해야 합니다. 그러나 사용자에게 값을 입력하도록 요구한다고 해서 해당 값의 유효성이 보장되는 것은 아닙니다. 파라미터 값을 검증하려는 경우 제약을 선언하거나 AWS 특정 유형을 지정할 수 있습니다.
기본값이 있는 파라미터의 경우 사용자는 스택 생성 시 키 이름 값을 지정해야 합니다. 지정하지 않을 경우 CloudFormation에서 스택을 생성할 수 없으며 다음 예외가 발생합니다.
Parameters: [KeyName] must have values
속성
AllowedPattern
-
String
또는CommaDelimitedList
유형에 허용할 패턴을 나타내는 정규식입니다.String
파라미터 유형에 적용할 경우 패턴이 제공된 전체 파라미터값과 일치해야 합니다.CommaDelimitedList
파라미터 유형에 적용할 경우 패턴이 목록의 각 값과 일치해야 합니다.필수 항목 여부: 아니요
AllowedValues
-
파라미터에 허용되는 값 목록을 포함하는 어레이입니다.
String
파라미터 유형에 적용할 경우 파라미터값은 허용된 값 중 하나여야 합니다.CommaDelimitedList
파라미터 유형에 적용할 경우 목록의 각 값은 지정된 허용된 값 중 하나여야 합니다.필수 항목 여부: 아니요
참고
YAML을 사용하면서
AllowedValues
에Yes
및No
문자열을 사용하려는 경우 작은따옴표를 사용하여 YAML 구문 분석기가 이러한 부울 값을 고려하지 않도록 합니다. ConstraintDescription
-
제약 위반 시 해당 제약을 설명하는 문자열입니다. 예를 들어 제약 설명이 없으면
[A-Za-z0-9]+
패턴이 허용된 파라미터에 사용자가 유효하지 않은 값을 지정할 때 다음과 같은 오류 메시지가 표시됩니다.Malformed input-Parameter MyParameter must match pattern [A-Za-z0-9]+
'문자(대문자 및 소문자)와 숫자만 포함시킬 수 있음' 같은 제약을 추가, 다음과 같은 사용자 지정 오류 메시지를 표시할 수 있습니다.
Malformed input-Parameter MyParameter must only contain uppercase and lowercase letters and numbers
필수 항목 여부: 아니요
Default
-
스택 생성 시 지정된 값이 없는 경우에 사용할 템플릿에 적합한 유형의 값입니다. 파라미터에 대한 제약을 정의하는 경우 이러한 제약을 준수하는 값을 지정해야 합니다.
필수 항목 여부: 아니요
Description
-
파라미터를 설명하는 최대 4000자 문자열입니다.
필수 항목 여부: 아니요
MaxLength
-
String
유형에 허용할 최대 문자 수를 결정하는 정수 값입니다.필수 항목 여부: 아니요
MaxValue
-
Number
유형에 허용할 최대 숫자 값을 결정하는 숫자 값입니다.필수 항목 여부: 아니요
MinLength
-
String
유형에 허용할 최소 문자 수를 결정하는 정수 값입니다.필수 항목 여부: 아니요
MinValue
-
Number
유형에 허용할 최소 숫자 값을 결정하는 숫자 값입니다.필수 항목 여부: 아니요
NoEcho
-
콘솔, 명령줄 도구 또는 API에 표시되지 않도록 파라미터값을 마스킹 처리할지 여부입니다.
NoEcho
속성을true
로 설정한 경우, 아래 지정된 위치에 저장된 정보를 제외하고 CloudFormation은 스택 또는 스택 이벤트를 설명하는 모든 호출에 대해 별표(*****)로 마스킹 처리된 파라미터값을 반환합니다.필수 항목 여부: 아니요
중요
NoEcho
속성을 사용해도 다음에 저장된 정보는 마스킹되지 않습니다.-
Metadata
템플릿 섹션. CloudFormation은Metadata
섹션에 포함된 정보를 변환, 수정 또는 삭제하지 않습니다. 자세한 내용은 CloudFormation 템플릿에 대한 Metadata 섹션 구문 참조 단원을 참조하십시오. -
Outputs
템플릿 섹션. 자세한 내용은 CloudFormation 템플릿에 대한 Outputs 섹션 구문 참조 단원을 참조하십시오. -
리소스 정의의
Metadata
속성입니다. 자세한 내용은 Metadata 속성 단원을 참조하십시오.
이러한 메커니즘을 사용하여 암호나 보안 정보와 같은 중요한 정보를 포함하지 않는 것이 좋습니다.
중요
AWS Systems Manager Parameter Store 또는 AWS Secrets Manager와 같이 CloudFormation 외부에서 저장 및 관리되는 중요한 정보를 참조하려면 CloudFormation 템플릿에 직접 중요한 정보를 포함하는 대신 스택 템플릿에 있는 동적 파라미터를 사용하는 것이 좋습니다.
자세한 내용은 템플릿에 자격 증명을 포함하지 않음 모범 사례를 참조하세요.
중요
리소스의 기본 식별자의 일부인 리소스 속성에
NoEcho
파라미터 또는 민감한 데이터를 포함하지 않는 것이 좋습니다.기본 리소스 식별자를 구성하는 속성에
NoEcho
파라미터가 포함된 경우 CloudFormation은 기본 리소스 식별자에서 실제 일반 텍스트값을 사용할 수 있습니다. 이 리소스 ID는 파생된 출력 또는 대상에 나타날 수 있습니다.리소스 유형의 기본 식별자를 구성하는 리소스 속성을 확인하려면 AWS 리소스 및 속성 유형 참조에서 해당 리소스에 대한 리소스 참조 설명서를 참조하세요. Return values(반환 값) 섹션에서
Ref
함수 반환 값은 리소스 유형의 기본 식별자를 구성하는 리소스 속성을 나타냅니다. -
Type
-
파라미터(
DataType
)의 데이터 유형입니다.필수 항목 여부: 예
CloudFormation은 다음과 같은 파라미터 유형을 지원합니다.
String
-
리터럴 문자열입니다.
MinLength
,MaxLength
,Default
,AllowedValues
및AllowedPattern
속성을 사용하여 제약 조건을 선언할 수 있습니다.예를 들면 사용자는
"MyUserName"
을 지정할 수 있습니다. Number
-
정수 또는 부동 소수점. CloudFormation에서 파라미터값이 숫자로 확인되지만, 템플릿 내 다른 곳에서 이 파라미터를 사용하는 경우(예를 들어,
Ref
내장 함수를 사용하여) 파라미터값이 문자열이 됩니다.MinValue
,MaxValue
,Default
및AllowedValues
속성을 사용하여 제약 조건을 선언할 수 있습니다.예를 들면 사용자는
"8888"
을 지정할 수 있습니다. List<Number>
-
쉼표로 구분된 정수 또는 부동 소수점의 배열. CloudFormation에서 파라미터값이 숫자로 확인되지만, 템플릿 내 다른 곳에서 이 파라미터를 사용하는 경우(예를 들어,
Ref
내장 함수를 사용하여) 파라미터값이 문자열 목록이 됩니다.예를 들어 사용자가
"80,20"
을 지정하면Ref
는["80","20"]
이 됩니다. CommaDelimitedList
-
쉼표로 구분된 리터럴 문자열 어레이입니다. 총 문자열 수는 총 쉼표 수보다 하나 더 많아야 합니다. 또한 각 멤버 문자열에는 공백이 삽입됩니다.
예를 들어 사용자가
"test,dev,prod"
을 지정하면Ref
는["test","dev","prod"]
이 됩니다. - AWS 특정 파라미터 유형
-
Amazon EC2 키 페어 이름 및 VPC ID와 같은 AWS 값입니다. 자세한 내용은 CloudFormation 제공 파라미터 유형 사용 단원을 참조하십시오.
- Systems Manager 파라미터 유형
-
시스템 관리자 Parameter Store의 기존 파라미터에 해당되는 파라미터. Systems Manager 파라미터 키를 Systems Manager 파라미터 유형 값으로 지정합니다. 그러면 CloudFormation이 Parameter Store에서 스택에 사용할 최신 값을 검색합니다. 자세한 내용은 CloudFormation 제공 파라미터 유형 사용 단원을 참조하십시오.
파라미터의 일반 요구 사항
파라미터를 사용할 때는 다음 요구 사항이 적용됩니다.
-
CloudFormation 템플릿에는 최대 200개의 파라미터를 지정할 수 있습니다.
-
파라미터마다 논리명(논리적 ID)을 지정해야 합니다. 이 이름은 템플릿 내 모든 논리명 간에 고유해야 하며 영숫자로 지정해야 합니다.
-
파라미터마다 CloudFormation에서 지원하는 파라미터 유형을 할당해야 합니다. 자세한 내용은 유형을 참조하십시오.
-
파라미터마다 런타임에 값을 할당해야 CloudFormation이 스택을 성공적으로 프로비저닝할 수 있습니다. 다른 값이 제공되는 경우를 제외하고, CloudFormation에 대한 기본값을 선택적으로 지정할 수 있습니다.
-
파라미터는 동일한 템플릿에서 선언하고 참조해야 합니다. 템플릿의
Resources
및Outputs
의 파라미터를 참조할 수 있습니다.
예시
단순 문자열 파라미터
다음 예제는 String
유형의 InstanceTypeParameter
라는 파라미터를 선언합니다. 스택의 Amazon EC2 인스턴스 유형을 지정할 수 있는 파라미터입니다. 스택 생성 또는 업데이트 중 값이 제공되지 않으면 CloudFormation은 기본값인 t2.micro
를 사용합니다.
JSON
"Parameters" : { "InstanceTypeParameter" : { "Description" : "Enter t2.micro, m1.small, or m1.large. Default is t2.micro.", "Type" : "String", "Default" : "t2.micro", "AllowedValues" : ["t2.micro", "m1.small", "m1.large"] } }
YAML
Parameters: InstanceTypeParameter: Description: Enter t2.micro, m1.small, or m1.large. Default is t2.micro. Type: String Default: t2.micro AllowedValues: - t2.micro - m1.small - m1.large
암호 파라미터
다음 예제는 기본값 없이 String
유형의 DBPwd
라는 파라미터를 선언합니다. NoEcho
속성을 true
로 설정하면 파라미터값이 스택 설명에 표시되지 않습니다. 지정할 수 있는 최소 길이는 1
이고, 지정할 수 있는 최대 길이는 41
입니다. 이 패턴에는 영문자 소문자/대문자와 숫자가 허용됩니다. 이 예제에서는 AllowedPattern
속성에 정규식을 사용하는 방법도 보여줍니다.
JSON
"Parameters" : { "DBPwd" : { "NoEcho" : "true", "Description" : "The database admin account password", "Type" : "String", "MinLength" : "1", "MaxLength" : "41", "AllowedPattern" : "^[a-zA-Z0-9]*$" } }
YAML
Parameters: DBPwd: NoEcho: true Description: The database admin account password Type: String MinLength: 1 MaxLength: 41 AllowedPattern: ^[a-zA-Z0-9]*$
파라미터 참조
Ref
내장 함수를 사용하여 파라미터를 참조할 수 있고, CloudFormation은 스택 프로비저닝에 이 파라미터값을 사용합니다. 동일한 템플릿의 Resources
및 Outputs
의 파라미터를 참조할 수 있습니다.
다음은 EC2 인스턴스의 InstanceType
속성이 InstanceTypeParameter
파라미터값을 참조하는 예제입니다.
JSON
"Ec2Instance" : { "Type" : "AWS::EC2::Instance", "Properties" : { "InstanceType" : { "Ref" : "InstanceTypeParameter" }, "ImageId" : "ami-0ff8a91507f77f867" } }
YAML
Ec2Instance: Type: AWS::EC2::Instance Properties: InstanceType: Ref: InstanceTypeParameter ImageId: ami-0ff8a91507f77f867
쉼표로 구분된 목록 파라미터
CommaDelimitedList
파라미터 유형은 단일 속성에 여러 값을 제공해야 할 때 유용할 수 있습니다. 다음 예제는 쉼표로 구분된 3개의 CIDR 블록을 기본값으로 사용하여 DbSubnetIpBlocks
라는 파라미터를 선언합니다.
JSON
"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
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
{ "Parameters": { "VPC": { "Type": "String", "Default": "vpc-123456" }, "VpcAzs": { "Type": "CommaDelimitedList", "Default": "us-west-2a, us-west-2b, us-west-2c" }, "DbSubnetIpBlocks": { "Type": "CommaDelimitedList", "Default": "172.16.0.0/26, 172.16.0.64/26, 172.16.0.128/26" } }, "Resources": { "DbSubnet1": { "Type": "AWS::EC2::Subnet", "Properties": { "AvailabilityZone": { "Fn::Sub": [ "${AWS::Region}${AZ}", { "AZ": { "Fn::Select": [ 0, { "Ref": "VpcAzs" } ] } } ] }, "VpcId": { "Ref": "VPC" }, "CidrBlock": { "Fn::Select": [ 0, { "Ref": "DbSubnetIpBlocks" } ] } } }, "DbSubnet2": { "Type": "AWS::EC2::Subnet", "Properties": { "AvailabilityZone": { "Fn::Sub": [ "${AWS::Region}${AZ}", { "AZ": { "Fn::Select": [ 1, { "Ref": "VpcAzs" } ] } } ] }, "VpcId": { "Ref": "VPC" }, "CidrBlock": { "Fn::Select": [ 1, { "Ref": "DbSubnetIpBlocks" } ] } } }, "DbSubnet3": { "Type": "AWS::EC2::Subnet", "Properties": { "AvailabilityZone": { "Fn::Sub": [ "${AWS::Region}${AZ}", { "AZ": { "Fn::Select": [ 2, { "Ref": "VpcAzs" } ] } } ] }, "VpcId": { "Ref": "VPC" }, "CidrBlock": { "Fn::Select": [ 2, { "Ref": "DbSubnetIpBlocks" } ] } } } } }
YAML
Parameters: VPC: Type: String Default: vpc-123456 VpcAzs: Type: CommaDelimitedList Default: us-west-2a, us-west-2b, us-west-2c DbSubnetIpBlocks: Type: CommaDelimitedList Default: 172.16.0.0/26, 172.16.0.64/26, 172.16.0.128/26 Resources: 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
관련 리소스
또한 CloudFormation은 동적 참조를 사용하여 속성값을 동적으로 지정할 수 있도록 지원합니다. 예를 들어, Systems Manager Parameter Store에 저장되는 보안 문자열을 참조해야 할 수 있습니다. 자세한 내용은 동적 참조를 사용하여 다른 서비스에 저장된 값 가져오기 단원을 참조하십시오.
Ref
또는 Sub
함수 내에서 가상 파라미터를 사용하여 값을 동적으로 채울 수도 있습니다. 자세한 내용은 가상 파라미터 참조 단원을 참조하십시오.