AMIIDs在啟動範本中使用 AWS Systems Manager 參數而不是 - Amazon EC2 Auto Scaling

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

AMIIDs在啟動範本中使用 AWS Systems Manager 參數而不是

本節說明如何建立啟動範本,以指定 AWS Systems Manager 參考 Amazon 機器映像 (AMI) ID 的參數。您可以使用存儲在同一個參數 AWS 帳戶,從另一個參數共享 AWS 帳戶,或者為由AMI維護的公共參數使用 AWS。

透過 Systems Manager 參數,您可以更新 Auto Scaling 群組以使用新的,AMIIDs而不需要在每次 AMI ID 變更時建立新的啟動範本或新版本的啟動範本。這些IDs可能會定期更改,例如使用最新AMI的操作系統或軟件更新進行更新時。

您可以使用「參數存放區」功能來建立、更新或刪除自己的「Systems Manager」參數 AWS Systems Manager。您必須先建立 Systems Manager 參數,才能在啟動範本中使用該參數。若要開始使用,請使用資料類型建立參數aws:ec2:image,並針對其值輸入的 ID AMI。AMIID 具有表單ami-<identifier>,例如,ami-123example456。正確的 AMI ID 取決於執行個體類型以及 AWS 區域 您要在中啟動 Auto Scaling 群組的執行個體類型。

若要取得有關為 AMI ID 建立有效參數的詳細資訊,請參閱〈建立 Systems Manager 參數〉。

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

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

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

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

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

  4. 應用程式和作業系統映像 (Amazon 機器映像) 下,選擇瀏覽更多AMIs

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

  6. 指定自訂值或 Systems Manager 參數對話方塊中,執行下列操作:

    1. 對於 AMIID 或 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 參數的啟動樣板,您可以使用下列其中一個範例指令。替換每個 user input placeholder 使用您自己的信息。

範例:建立指定 AWS擁有公用參數的啟動範本

使用下列語法:resolve:ssm:public-parameter,其中 resolve:ssm 是標準前綴,而 public-parameter 是公有參數的路徑和名稱。

在此範例中,啟動範本使用 AWS提供的公用參數,使用針對您的設定檔設定AMI的最新 Amazon Linux 2 啟動執行個體。 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 參數名稱。

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

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" }

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

下列範例參考的特定版本 金波 參數。此範例使用版本 3金波 參數,但您可以使用任何有效的版本號碼。

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

下列類似範例參照參數標籤 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的參數。

下列範例會建立啟動範本,該範本會使用 of 從現有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 參數的特定版本。此範例使用版本 3MyParameter參數,但你可以使用任何有效的版本號。

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

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

{ "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權限,才能驗證參數值。若要取得更多資訊,請參閱《使用指南》中的〈使用IAM策略限制 Systems Manager 參數的存AWS 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 $Default --resolve-alias

此範例會傳回的 AMI ID ImageId。使用此啟動範本啟動執行個體時,AMIID 會解析為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 僅支援指定AMIIDs為參數。

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

  • 如果您的 Auto Scaling 群組使用指定 Systems Manager 參數的啟動範本,您將無法使用所需組態或使用略過比對來啟動執行個體重新整理。

  • 每次呼叫建立或更新自動擴展群組時,Amazon EC2 Auto Scaling 都會解析啟動範本中的 Systems Manager 參數。如果您使用進階參數或更高的輸送量限制,則頻繁呼叫參數存放區 (亦即GetParameters作業) 可能會增加 Systems Manager 的成本,因為每次參數存放區API互動都會產生費用。如需詳細資訊,請參閱 AWS Systems Manager 定價