

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

# 在啟動範本中使用 AWS Systems Manager 參數而非 AMI IDs
<a name="using-systems-manager-parameters"></a>

本節說明如何建立啟動範本，指定參考 AWS Systems Manager Amazon Machine Image (AMI) ID 的 參數。您可以使用存放在相同 中的參數 AWS 帳戶、從另一個 共用的參數 AWS 帳戶，或由 維護的公有 AMI 的公有參數 AWS。

透過 Systems Manager 參數，您可以更新 Auto Scaling 群組以使用新的 AMI ID，而不需要在每次 AMI ID 變更時建立新啟動範本或啟動範本的新版本。在透過最新作業系統或軟體更新進行 AMI 更新等情況下，這些 ID 可能會定期變更。

您可以使用 參數[存放區功能來建立、更新或刪除自己的 Systems Manager 參數 AWS Systems Manager](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)。您必須先建立 Systems Manager 參數，才能在啟動範本中使用該參數。若要開始使用，請建立具有資料類型 `aws:ec2:image` 的參數，並為其值輸入 AMI ID。AMI ID 具有 `ami-<identifier>` 格式，例如 `ami-123example456`。AMI ID 是否正確將取決於執行個體類型以及啟動 Auto Scaling 群組的 AWS 區域 。

如需為 AMI ID 建立有效參數的詳細資訊，請參閱[建立 Systems Manager 參數](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-su-create.html)。

## 建立指定 AMI 參數的啟動範本
<a name="using-systems-manager-parameters-create-launch-template"></a>

若要建立指定 AMI 參數的啟動範本，請使用下列其中一種方法：

------
#### [ Console ]

**使用 AWS Systems Manager 參數建立啟動範本**

1. 前往 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Launch Templates (啟動範本)** 接著選擇 **Create launch template (建立啟動範本)**。

1. 針對 **Launch template name (啟動範本名稱)**，輸入啟動範本的描述性名稱。

1. 在 **Application and OS Images (Amazon Machine Image)** (應用程式和作業系統映像 (Amazon Machine Image)) 下，選擇 **Browse more AMIs** (瀏覽更多 AMI)。

1. 選擇搜尋列右側的箭頭按鈕，然後選擇**指定自訂值/Systems Manager 參數**。

1. 在**指定自訂值或 Systems Manager 參數**對話方塊中，執行下列操作：

   1. 對於 **AMI ID 或 Systems Manager 參數字串**，請使用下列其中一種格式輸入 Systems Manager 參數名稱：

      若要參考公用參數：
      + **resolve:ssm:*public-parameter***

      若要參考存放在相同帳戶中的參數：
      + **resolve:ssm:*parameter-name***
      + **resolve:ssm:*parameter-name*:*version-number***
      + **resolve:ssm:*parameter-name*:*label***

      若要參考從另一個 AWS 帳戶共用的參數：
      + **resolve:ssm:*parameter-ARN***
      + **resolve:ssm:*parameter-ARN*:*version-number***
      + **resolve:ssm:*parameter-ARN*:*label***

   1. 選擇**儲存**。

1. 視需要設定任何其他啟動範本設定，然後選擇**建立啟動範本**。如需詳細資訊，請參閱[為 Auto Scaling 群組建立啟動範本](create-launch-template.md)。

------
#### [ AWS CLI ]

若要建立指定 Systems Manager 參數的啟動範本，您可以使用下列其中一個範例命令。將每個*使用者輸入預留位置*替換為自己的資訊。

**範例：建立指定 AWS擁有的公有參數的啟動範本**  
使用下列語法：`resolve:ssm:public-parameter`，其中 `resolve:ssm` 是標準前綴，而 `public-parameter` 是公有參數的路徑和名稱。

在此範例中，啟動範本使用 AWS提供的公有參數，在為您的設定檔設定的 中使用最新的 Amazon Linux 2 AMI AWS 區域 啟動執行個體。

```
aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \
  --launch-template-data file://config.json
```

`config.json` 的內容：

```
{ 
    "ImageId":"resolve:ssm:/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2",
    "InstanceType":"t2.micro"
}
```

以下是回應範例。

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-089c023a30example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreateTime": "2022-12-28T19:52:27.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

**範例：建立啟動範本，指定存放在相同帳戶中的參數**  
使用下列語法：`resolve:ssm:parameter-name`，其中 `resolve:ssm` 是標準字首，而 `parameter-name` 是 Systems Manager 參數名稱。

下列範例會建立從名為 `golden-ami` 的現有 Systems Manager 參數取得 AMI ID 的啟動範本。

```
aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling \
  --launch-template-data file://config.json
```

`config.json` 的內容：

```
{ 
    "ImageId":"resolve:ssm:golden-ami",
    "InstanceType":"t2.micro"
}
```

如果未指定，參數的預設版本即為最新版本。

下列範例會參考 *`golden-ami`* 參數的特定版本。此範例使用 *`golden-ami`* 參數的第 *`3`* 版，但您可以使用任何有效的版本編號。

```
{ 
    "ImageId":"resolve:ssm:golden-ami:3",
    "InstanceType":"t2.micro"
}
```

下列類似範例會參考映射到 *`golden-ami`* 參數特定版本的參數標籤 *`prod`*。

```
{ 
    "ImageId":"resolve:ssm:golden-ami:prod",
    "InstanceType":"t2.micro"
}
```

以下為範例輸出。

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-068f72b724example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreateTime": "2022-12-27T17:11:21.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

**範例：建立啟動範本，指定從另一個 共用的參數 AWS 帳戶**  
使用以下語法：`resolve:ssm:parameter-ARN`，其中 `resolve:ssm`是標準字首，而 `parameter-ARN`是 Systems Manager 參數的 ARN。

下列範例會建立啟動範本，從具有 ARN 的現有 Systems Manager 參數取得 AMI ID`arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter`。

```
aws ec2 create-launch-template --launch-template-name my-template-for-auto-scaling --version-description version1 \
  --launch-template-data file://config.json
```

`config.json` 的內容：

```
{ 
    "ImageId":"resolve:ssm:arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter",
    "InstanceType":"t2.micro"
}
```

如果未指定，參數的預設版本即為最新版本。

下列範例會參考 `MyParameter` 參數的特定版本。此範例使用 `MyParameter` 參數的第 *`3`* 版，但您可以使用任何有效的版本編號。

```
{ 
    "ImageId":"resolve:ssm:arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter:3",
    "InstanceType":"t2.micro"
}
```

下列類似範例會參考映射到 `MyParameter` 參數特定版本的參數標籤 *`prod`*。

```
{ 
    "ImageId":"resolve:ssm:arn:aws:ssm:us-east-2:123456789012:parameter/MyParameter:prod",
    "InstanceType":"t2.micro"
}
```

以下是回應範例。

```
{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-00f93d4588example",
        "LaunchTemplateName": "my-template-for-auto-scaling",
        "CreateTime": "2024-01-08T12:43:21.000Z",
        "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}
```

------

若要從啟動範本中的參數存放區指定參數，您必須具有指定參數的 `ssm:GetParameters` 許可。使用啟動範本的任何人也需要 `ssm:GetParameters`許可，才能驗證參數值。如需詳細資訊，請參閱*AWS Systems Manager 《 使用者指南*》中的[使用 IAM 政策限制對 Systems Manager 參數的存取](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-access.html)。

## 確認啟動範本取得正確的 AMI ID
<a name="using-systems-manager-parameters-verify-launch-template"></a>

使用 [describe-launch-template-versions](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-launch-template-versions.html) 命令，並包含將 參數解析為實際 AMI ID `--resolve-alias`的選項。

```
aws ec2 describe-launch-template-versions --launch-template-name my-template-for-auto-scaling \
   --versions 1 --resolve-alias
```

此範例會傳回 `ImageId` 的 AMI ID。使用此啟動範本啟動執行個體時，AMI ID 會解析為 `ami-0ac394d6a3example`。

```
{
    "LaunchTemplateVersions": [
        {
            "LaunchTemplateId": "lt-089c023a30example",
            "LaunchTemplateName": "my-template-for-auto-scaling",
            "VersionNumber": 1,
            "CreateTime": "2022-12-28T19:52:27.000Z",
            "CreatedBy": "arn:aws:iam::123456789012:user/Bob",
            "DefaultVersion": true,
            "LaunchTemplateData": {
                "ImageId": "ami-0ac394d6a3example",
                "InstanceType": "t2.micro",
            }
        }
    ]
}
```

## 相關資源
<a name="using-systems-manager-parameters-related-resources"></a>

如需在啟動範本中指定 Systems Manager 參數的詳細資訊，請參閱《*Amazon EC2 使用者指南*》中的[使用 Systems Manager 參數而非 AMI ID](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/create-launch-template.html#use-an-ssm-parameter-instead-of-an-ami-id)。

如需關於使用 Systems Manager 參數的詳細資訊，請參閱 Systems Manager 文件中的下列參考資料。
+ 若要建立參數版本和標籤，請參閱[使用參數版本](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-versions.html)和[使用參數標籤](https://docs.aws.amazon.com/systems-manager/latest/userguide/sysman-paramstore-labels.html)。
+ 如需如何查詢 Amazon EC2 所支援 AMI 公用參數的詳細資訊，請參閱[呼叫 AMI 公用參數](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-public-parameters-ami.html)。
+ 如需與其他 AWS 帳戶或透過 共用參數的資訊 AWS Organizations，請參閱[使用共用參數](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-shared-parameters.html)。
+ 如需監控參數是否已成功建立的相關資訊，請參閱「Amazon Machine Image ID 的原生參數支援」[https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html](https://docs.aws.amazon.com/systems-manager/latest/userguide/parameter-store-ec2-aliases.html)。

## 限制
<a name="using-systems-manager-parameters-limitations"></a>

使用 Systems Manager 參數時，請注意下列限制：
+ Amazon EC2 Auto Scaling 僅支援指定 AMI ID 作為參數。
+ 不支援使用指定 Systems Manager 參數的啟動範本，使用[屬性型執行個體類型選取](create-mixed-instances-group-attribute-based-instance-type-selection.md)來建立或更新[混合執行個體群組](ec2-auto-scaling-mixed-instances-groups.md)。
+ 如果您的 Auto Scaling 群組使用指定 Systems Manager 參數的啟動範本，您將無法以所需的組態或使用略過比對來啟動執行個體重新整理。
+ 如果您的 Auto Scaling 群組使用指定 Systems Manager 參數的啟動範本，則不支援暖集區。
+ 每次進行呼叫以建立或更新 Auto Scaling 群組時，Amazon EC2 Auto Scaling 都會解析啟動範本中的 Systems Manager 參數。如果您使用進階參數或較高的輸送量限制，頻繁呼叫 Parameter Store (亦即 `GetParameters` 操作) 可能會增加 Systems Manager 的成本，因為每個 Parameter Store API 互動都會產生費用。如需詳細資訊，請參閱 [AWS Systems Manager 定價](https://aws.amazon.com/systems-manager/pricing/)。