

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 從 Systems Manager Parameter Store 取得純文字值
<a name="dynamic-references-ssm"></a>

建立 CloudFormation 範本時，建議您使用儲存在參數存放區中的純文字值。參數存放區是 的功能 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 不允許您在本節中參考沒有版本號碼的參數存放區值。或者，可以在範本中將參數定義為 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 使用者指南》中的[探索參數存放區中的公有參數](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>

下列範例會建立 EC2 啟動範本，它可參考儲存在 Parameter Store 中的自訂 AMI ID。動態參考會在執行個體從啟動範本啟動時，從 `{{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
```