Systems Manager 파라미터 유형 - AWS CloudFormation

Systems Manager 파라미터 유형

Systems Manager 파라미터 유형은 Systems Manager Parameter Store의 기존 파라미터에 해당합니다. Systems Manager 파라미터 키를 Systems Manager 파라미터 유형 값으로 지정합니다. 그러면 CloudFormation이 Parameter Store에서 스택에 사용할 최신 값을 가져옵니다. 이는 Amazon Machine Image(AMI) ID와 같이 변화하는 값으로 애플리케이션 리소스를 자주 업데이트해야 하는 경우 등에 유용할 수 있습니다.

콘솔에 있는 스택의 파라미터 탭에서 또는 describe-stacksdescribe-change-set를 실행하여 Systems Manager 파라미터의 해석된 값을 확인할 수 있습니다. 현재 해당 시스템 관리자 파라미터 키에 대한 스택 정의에 사용된 값입니다. 스택을 생성 또는 업데이트할 때 값을 설정해야, Parameter Store의 최신 값과 일치합니다.

Systems Manager 파라미터 유형의 값이 파라미터 키이기 때문에 다음 동작에 주의해야 합니다.

  • 스택 업데이트의 경우 콘솔의 기존 값 사용 옵션과 update-stackUsePreviousValue 속성은 CloudFormation에 기존 Systems Manager 파라미터 값이 아닌 키를 사용할 것을 알려줍니다. CloudFormation은 스택을 업데이트할 때 항상 Parameter Store에서 최신 값을 가져옵니다.

  • CloudFormation은 일치하는 값이 아닌, Systems Manager 파라미터 키에서 확인 작업을 수행할 수 있습니다. 확인 목적에서 파라미터 키를 문자열로 취급할 수 있습니다. Parameter Store에서는 시스템 관리자 파라미터 값을 확인할 수 없습니다.

스택을 생성 또는 업데이트하고, 변경 세트를 생성할 때, CloudFormation은 작업 실행 시간 동안 Parameter Store에 있는 임의의 값을 사용합니다. 지정한 파라미터가 호출자의 AWS 계정과 연결된 Parameter Store에 없는 경우 CloudFormation은 검증 오류를 반환합니다.

변경 세트를 실행하면, CloudFormation은 변경 세트에서 지정한 값을 사용합니다. 변경 세트를 실행하기 전에 값을 확인해야 합니다. 변경 세트를 생성해 실행하는 동안 Parameter Store에서 변경될 수 있기 때문입니다.

Parameter Store에 대한 자세한 내용은 Systems Manager Parameter Store를 참조하세요.

참고

동일한 AWS 계정에 저장된 Parameter Store 파라미터의 경우 파라미터 이름을 제공해야 합니다. 다른 AWS 계정에서 공유하는 Parameter Store 파라미터의 경우 전체 파라미터 ARN을 제공해야 합니다.

지원되는 Systems Manager 파라미터 유형

CloudFormation은 다음과 같은 Systems Manager 파라미터 유형을 지원합니다.

AWS::SSM::Parameter::Name

시스템 관리자 파라미터 키의 이름입니다.

파라미터 키를 전달하고 싶을 때 이 파라미터를 사용하십시오. 예를 들면, 파라미터가 존재하는지 확인하기 위해 이 유형을 사용할 수 있습니다.

AWS::SSM::Parameter::Value<String>

값이 문자열인 시스템 관리자 파라미터입니다. 이는 Parameter Store의 String 파라미터 유형과 일치합니다.

AWS::SSM::Parameter::Value<List<String>> 또는 AWS::SSM::Parameter::Value<CommaDelimitedList>

값이 문자열 목록인 시스템 관리자 파라미터입니다. 이는 Parameter Store의 StringList 파라미터 유형과 일치합니다.

AWS::SSM::Parameter::Value<AWS-specific parameter type>

값이 AWS 고유 파라미터 유형인 시스템 관리자 파라미터입니다. 다음은 AWS::EC2::KeyPair::KeyName 유형을 지정하는 예제입니다.

AWS::SSM::Parameter::Value<AWS::EC2::KeyPair::KeyName>

AWS::SSM::Parameter::Value<List<AWS-specific parameter type>>

값이 AWS 고유 파라미터 유형 목록인 시스템 관리자 파라미터입니다. 다음은 AWS::EC2::KeyPair::KeyName 유형 목록을 지정하는 예제입니다.

AWS::SSM::Parameter::Value<List<AWS::EC2::KeyPair::KeyName>>

지원되지 않는 Systems Manager 파라미터 유형

CloudFormation은 다음 Systems Manager 파라미터 유형을 지원하지 않습니다.

  • Systems Manager 파라미터 유형 목록(예: List<AWS::SSM::Parameter::Value<String>>)

추가로 CloudFormation에서는 SecureString Systems Manager 파라미터 유형으로 템플릿 파라미터를 정의하는 것을 지원하지 않습니다. 하지만 보안 문자열을 특정 리소스에 대한 파라미터 값으로 지정할 수 있습니다. 자세한 내용은 동적 참조를 사용하여 다른 서비스에 저장된 값 지정 단원을 참조하십시오.

예시

Systems Manager 퍼블릭 파라미터를 기본값으로 참조하는 AMI ID

<AWS::EC2::Image::Id> 유형은 특히 AMI ID 파라미터용이며 AWS에서 제공하는 공용 파라미터를 지원합니다.

다음 예제는 AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> 유형의 LatestAmiId라는 파라미터를 선언합니다. 기본적으로 EC2 인스턴스의 ImageId 속성은 /aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2를 참조합니다. 이 퍼블릭 파라미터는 최신 Amazon Linux 2 AMI의 리전 AMI ID 값에 대한 별칭입니다. 공용 파라미터에 대한 자세한 내용은 AWS Systems Manager 사용 설명서의 퍼블릭 파라미터 찾기를 참조하세요.

JSON

{ "Parameters": { "LatestAmiId": { "Description": "Region specific image from the Parameter Store", "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>", "Default": "/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "LatestAmiId" } } } } }

YAML

Parameters: LatestAmiId: Description: Region specific image from the Parameter Store Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref LatestAmiId

Systems Manager 파라미터를 참조하고 기본값이 없는 AMI ID

다음 예제는 기본값 없이 AWS::SSM::Parameter::Value<AWS::EC2::Image::Id> 유형의 ImageId라는 파라미터를 선언합니다. 즉, 스택을 생성할 때 원하는 AMI ID를 참조하는 Systems Manager 파라미터 키를 제공해야 합니다.

JSON

{ "Parameters": { "ImageId": { "Type": "AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "ImageId": { "Ref": "ImageId" } } } } }

YAML

Parameters: ImageId: Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: ImageId: !Ref ImageId

다음 명령은 예제 템플릿을 토대로 스택을 생성합니다. 시스템 관리자 파라미터 키(myLatestAMI)를 ImageId 템플릿 파라미터에 대한 값으로 제공합니다. 여기에서는 myLatestAMI 파라미터가 호출자 AWS 계정의 Parameter Store에 있다고 가정합니다.

aws cloudformation create-stack --stack-name S2 --template-body example template \ --parameters ParameterKey=ImageId,ParameterValue=myLatestAMI

Systems Manager 문자열 파라미터 참조

다음 예제는 AWS::SSM::Parameter::Value<String> 유형의 InstanceType이라는 파라미터를 선언합니다. 기본값이 없으므로 스택을 생성할 때 원하는 인스턴스 유형을 참조하는 Systems Manager 파라미터 키를 제공해야 합니다.

JSON

{ "Parameters": { "InstanceType": { "Type": "AWS::SSM::Parameter::Value<String>" } }, "Resources": { "Instance": { "Type": "AWS::EC2::Instance", "Properties": { "InstanceType": { "Ref": "InstanceType" } } } } }

YAML

Parameters: InstanceType: Type: 'AWS::SSM::Parameter::Value<String>' Resources: Instance: Type: 'AWS::EC2::Instance' Properties: InstanceType: !Ref InstanceType

다음 명령은 예제 템플릿을 토대로 스택을 생성합니다. 시스템 관리자 파라미터 키(myInstanceType)를 InstanceType 템플릿 파라미터에 대한 값으로 제공합니다. 여기에서는 myInstanceType 파라미터가 호출자 AWS 계정의 Parameter Store에 있다고 가정합니다.

aws cloudformation create-stack --stack-name S1 --template-body example template \ --parameters ParameterKey=InstanceType,ParameterValue=myInstanceType