

# Systems Manager Parameter Store からプレーンテキスト値を取得する
<a name="dynamic-references-ssm"></a>

CloudFormation テンプレートを作成する際には、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>

Systems Manager パラメータストアに保存されているパラメータを指定するには、指定されたパラメータに対して [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`  
 パラメータストア内のパラメータの名前。パラメータ名では大文字と小文字が区別されます  
必須。

`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 起動テンプレートを作成します。動的参照は、起動テンプレートからインスタンスが起動されると `golden-ami` パラメータの *`2`* から AMI ID を取得します。

#### 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
```