在啟動範本中使用 AWS Systems Manager 參數而非 AMI IDs - Amazon EC2 Auto Scaling

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

在啟動範本中使用 AWS Systems Manager 參數而非 AMI IDs

本節說明如何建立啟動範本,以指定參考 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。您必須先建立 Systems Manager 參數,才能在啟動範本中使用該參數。若要開始使用,請建立具有資料類型 aws:ec2:image 的參數,並為其值輸入 AMI ID。AMI ID 具有 ami-<identifier> 格式,例如 ami-123example456。AMI ID 是否正確將取決於執行個體類型以及啟動 Auto Scaling 群組的 AWS 區域 。

如需為 AMI ID 建立有效參數的詳細資訊,請參閱建立 Systems Manager 參數

建立指定 AMI 參數的啟動範本

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

Console
使用 AWS Systems Manager 參數建立啟動範本
  1. https://console.aws.amazon.com/ec2/ 開啟 Amazon EC2 主控台。

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

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

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

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

  6. 指定自訂值或 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

    2. 選擇 Save (儲存)。

  7. 視需要設定任何其他啟動範本設定,然後選擇建立啟動範本。如需詳細資訊,請參閱為 Auto Scaling 群組建立啟動範本

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 IDarn: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 參數的存取

確認啟動範本取得正確的 AMI ID

使用 describe-launch-template-versions 命令,並包含將 參數解析為實際 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", } } ] }

如需在啟動範本中指定 Systems Manager 參數的詳細資訊,請參閱《Amazon EC2 使用者指南》中的使用 Systems Manager 參數而非 AMI ID

如需關於使用 Systems Manager 參數的詳細資訊,請參閱 Systems Manager 文件中的下列參考資料。

限制

使用 Systems Manager 參數時,請注意下列限制:

  • Amazon EC2 Auto Scaling 僅支援指定 AMI ID 作為參數。

  • 不支援使用指定 Systems Manager 參數的啟動範本,以屬性型執行個體類型選取來建立或更新混合執行個體群組

  • 如果您的 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 定價