

# Systems Manager Parameter Store에서 일반 텍스트 값 가져오기
<a name="dynamic-references-ssm"></a>

CloudFormation 템플릿을 생성할 때 Parameter Store에 저장된 일반 텍스트 값을 사용하는 것이 좋습니다. Parameter Store는 AWS Systems Manager의 기능입니다. Parameter Store 소개는 **AWS Systems Manager 사용 설명서의 [AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)를 참조하세요.

템플릿 내에서 Parameter Store의 일반 텍스트 값을 사용하려면 `ssm` 동적 참조를 사용합니다. 이 참조를 사용하면 Parameter Store의 `String` 또는 `StringList` 유형의 파라미터에서 값을 액세스할 수 있습니다.

스택 작업에 사용할 `ssm` 동적 참조의 버전을 확인하려면 스택 작업에 대한 변경 세트를 생성합니다. 그런 다음 **템플릿** 탭에서 처리된 템플릿을 검토합니다. 자세한 내용은 [CloudFormation 스택에 대한 변경 세트 생성](using-cfn-updating-stacks-changesets-create.md) 섹션을 참조하세요.

`ssm` 동적 참조를 사용할 때는 다음과 같은 몇 가지를 염두에 두어야 합니다.
+ CloudFormation은 동적 참조에 대한 드리프트 감지를 지원하지 않습니다. 파라미터 버전을 지정하지 않은 `ssm` 동적 참조에 대해 Systems Manager에서 파라미터 버전을 업데이트하는 경우 `ssm` 동적 참조가 포함된 모든 스택에서 스택 업데이트 작업을 수행하여 최신 파라미터 버전을 가져오는 것이 좋습니다.
+ CloudFormation 템플릿의 `Parameters` 섹션에서 `ssm` 동적 참조를 사용하려면 버전 번호를 포함해야 합니다. CloudFormation에서는 이 섹션에 버전 번호가 없으면 Parameter Store 값을 참조할 수 없습니다. 템플릿에서 파라미터를 Systems Manager 파라미터 유형으로 정의할 수도 있습니다. 이렇게 하면 Systems Manager 파라미터 키를 파라미터의 기본값으로 지정할 수 있습니다. 그러면 버전 번호를 지정하지 않아도 CloudFormation이 Parameter Store에서 최신 버전의 파라미터 값을 검색합니다. 이렇게 하면 템플릿을 더 간단하고 쉽게 유지할 수 있습니다. 자세한 내용은 [CloudFormation에서 제공하는 파라미터 유형을 사용하여 런타임 시 기존 리소스 지정](cloudformation-supplied-parameter-types.md) 섹션을 참조하세요.
+ 사용자 지정 리소스의 경우 CloudFormation에서 사용자 지정 리소스로 요청을 전송하기 전에 `ssm` 동적 참조를 확인합니다.
+ CloudFormation은 동적 참조를 사용하여 다른 AWS 계정에서 공유된 파라미터를 참조하는 것을 지원하지 않습니다.
+ CloudFormation에서 동적 참조 내에서 Systems Manager 파라미터 레이블 사용을 지원하지 않습니다.

## 권한
<a name="dynamic-references-ssm-permissions"></a>

시스템 관리자 Parameter Store에 저장된 파라미터를 지정하려면 지정된 파라미터에 대한 [https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html](https://docs.aws.amazon.com/systems-manager/latest/APIReference/API_GetParameter.html)를 호출할 수 있는 권한이 있어야 합니다. 특정 Systems Manager 파라미터에 대한 액세스를 제공하는 IAM 정책을 생성하는 방법을 알아보려면 *AWS Systems Manager 사용 설명서*의 [IAM 정책을 사용하여 Systems Manager 파라미터에 대한 액세스 제한](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html)을 참조하세요.

## 참조 패턴
<a name="dynamic-references-ssm-pattern"></a>

CloudFormation 템플릿의 Systems Manager Parameter Store에 저장된 일반 텍스트 값을 참조하려면 다음 `ssm` 참조 패턴을 사용합니다.

```
{{resolve:ssm:{{parameter-name}}:{{version}}}}
```

참조는 parameter-name 및 version에 대해 다음 정규 표현식 패턴을 준수해야 합니다.

```
{{resolve:ssm:[a-zA-Z0-9_.\-/]+(:\d+)?}}
```

`parameter-name`  
 Parameter Store의 파라미터 이름입니다. 파라미터 이름은 대/소문자를 구분합니다.  
필수 사항입니다.

`version`  
사용할 파라미터의 버전을 지정하는 정수입니다. 정확한 버전을 지정하지 않으면 CloudFormation은 스택을 생성하거나 업데이트할 때마다 최신 버전의 파라미터를 사용합니다. 자세한 내용을 알아보려면 **AWS Systems Manager 사용 설명서의 [파라미터 버전 사용](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html)을 참조하세요.  
선택 사항.

## 예제
<a name="dynamic-references-ssm-examples"></a>

**Topics**
+ [퍼블릭 AMI ID 파라미터](#dynamic-references-ssm-public-ami-example)
+ [사용자 지정 AMI ID 파라미터](#dynamic-references-ssm-custom-ami-example)

### 퍼블릭 AMI ID 파라미터
<a name="dynamic-references-ssm-public-ami-example"></a>

다음 예제에서는 퍼블릭 AMI 파라미터를 참조하는 EC2 인스턴스를 생성합니다. 동적 참조는 퍼블릭 파라미터에서 최신 Amazon Linux 2023 AMI ID를 검색합니다. 퍼블릭 파라미터에 대한 자세한 내용은 *AWS Systems Manager 사용 설명서*의 [Parameter Store에서 퍼블릭 파라미터 검색](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-finding-public-parameters.html)을 참조하세요.

#### JSON
<a name="dynamic-references-ssm-public-ami-example.json"></a>

```
{
    "Resources": {
        "MyInstance": {
            "Type": "AWS::EC2::Instance",
            "Properties": {
                "ImageId": "{{resolve:ssm:{{/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}}}",
                "InstanceType": "t2.micro"
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-public-ami-example.yaml"></a>

```
Resources:
  MyInstance:
    Type: AWS::EC2::Instance
    Properties:
      ImageId: '{{resolve:ssm:{{/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}}}'
      InstanceType: t2.micro
```

### 사용자 지정 AMI ID 파라미터
<a name="dynamic-references-ssm-custom-ami-example"></a>

다음 예제는 Parameter Store에 저장된 사용자 지정 AMI ID를 참조하는 EC2 시작 템플릿을 생성합니다. 동적 참조는 인스턴스가 시작 템플릿에서 시작될 때마다 {{`2`}} 버전의 `{{golden-ami}}` 파라미터에서 AMI 검색합니다.

#### JSON
<a name="dynamic-references-ssm-custom-ami-example.json"></a>

```
{
    "Resources": {
        "MyLaunchTemplate": {
            "Type": "AWS::EC2::LaunchTemplate",
            "Properties": {
                "LaunchTemplateName": {
                    "Fn::Sub": "${AWS::StackName}-launch-template"
                },
                "LaunchTemplateData": {
                    "ImageId": "{{resolve:ssm:{{golden-ami:2}}}}",
                    "InstanceType": "t2.micro"
                }
            }
        }
    }
}
```

#### YAML
<a name="dynamic-references-ssm-custom-ami-example.yaml"></a>

```
Resources:
  MyLaunchTemplate:
    Type: AWS::EC2::LaunchTemplate
    Properties: 
      LaunchTemplateName: !Sub ${AWS::StackName}-launch-template
      LaunchTemplateData:
        ImageId: '{{resolve:ssm:{{golden-ami:2}}}}'
        InstanceType: t2.micro
```