創建一個 Amazon EC2 啟動模板 - Amazon Elastic Compute Cloud

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

創建一個 Amazon EC2 啟動模板

您可以透過為執行個體組態參數指定自己的值,或從現有啟動範本或 Amazon EC2 執行個體取得值,以建立 Amazon 啟動範本。EC2

您不需要為啟動範本中的每個參數指定值;您只需指定一個執行個體設定參數即可建立啟動範本。若要指出您選擇不指定的參數,請選取 [使用主控台時不要包含在啟動範本中]。使用命令列工具時,請勿加入參數以表示您選擇不在啟動範本中指定這些參數。

如果您要在啟動範本AMI中指定一個,您可以選取AMI或指定將指向執行個AMI體啟動時的「Systems Manager」參數。

使用啟動範本啟動執行個體時,會使用在啟動範本中指定的值來設定對應的執行處理參數。如果未在啟動範本中指定值,則會使用對應執行個體參數的預設值。

透過指定參數建立啟動範本

若要建立啟動範本,您必須指定啟動範本名稱和至少一個執行個體組態參數。

如需每個參數的描述,請參閱Amazon EC2執行個體組態參數的參考

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

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

  3. 在「啟動範本名稱與說明」下,執行下列動作:

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

    2. Template version description (範本版本描述) 中,提供此啟動範本版本的簡短描述。

    3. 若要在建立時標記啟動範本,請展開 [範本標籤],選擇 [新增標籤],然後輸入標籤索引鍵和值配對。為每個要新增的其他標籤重新選擇新增新的標籤

      注意

      要標記啟動執行個體時建立的資源,您必須在 Resource tags (資源標籤) 下指定標籤。如需詳細資訊,請參閱此程序中的步驟 9。

  4. 在 [應用程式和作業系統映像 (Amazon Machine Image)] 下,您可以保持選取 [不包含在啟動範本中],或選擇執行個體的作業系統 (OS),然後選擇一個AMI。或者,您可以指定「Systems Manager」參數,而不是指定AMI。如需詳細資訊,請參閱使用「Systems Manager」參數而不是 AMI ID

    AMI是包含啟動執行個體所需的作業系統和軟體的範本。

  5. 在「執行個體類型」下,您可以選取「不要包含在啟動範本中」,或選取執行個體類型,或指定執行個體屬性,讓 Amazon 使用這些屬性EC2識別執行個體類型。

    注意

    只有 Auto Scaling 群組、EC2叢集和 Spot 叢集使用啟動範本來啟動執行個體時,才支援指定執行個體屬性。如需詳細資訊,請參閱使用以屬性為基礎的執行個體類型選取建立 Auto Scaling 群組和。指定EC2叢集或 Spot 叢集的執行個體類型選取屬性

    如果您計劃在啟動執行個體精靈中使用啟動範本,或搭配使用啟動範本 RunInstances API,就無法指定執行個體類型屬性。

    執行個體類型會決定執行個體所使用的硬體組態 (CPU記憶體、儲存空間和網路容量) 和主機電腦的大小。

    如果您不確定要選擇哪種執行個體類型,可以執行下列動作:

    • 選擇比較執行個體類型,依下列屬性來比較不同的執行個體類型:數目vCPUs、架構、記憶體數量 (GiB)、儲存空間量 (GB)、儲存區類型和網路效能。

    • 選擇 [取得建議],從執行個體類型尋找工具取得執行EC2個體類型的指引和建議。如需詳細資訊,請參閱從EC2執行個體類型尋找工具取得

    注意

    如果您的使用時間少 AWS 帳戶 於 12 個月,您可以在免費方案EC2下選擇 t2.micro 執行個體類型,或在 t2.micro 無法使用的區域中選擇 t3.micro 執行個體類型。請注意,當您啟動 t3.micro 執行個體時,它會預設為「無限制」模式,這可能會根據使用情況產生額外費用。CPU如果某個執行個體類型符合免費方案的條件,則標記為 Free tier eligible (符合免費方案條件)。

  6. 在 [key pair (登入)] 下,對於 [金鑰配對名稱],請保持 [不包含在啟動範本中選取],或選擇現有的金鑰配對,或建立新的金鑰配對。

  7. [網路設定] 下,您可以選取 [啟動範本中不包含],也可以指定各種網路設定的值。

  8. 在 [設定儲存區] 下,如果您AMI在啟動範本中指定了,則會AMI包含一或多個儲存磁碟區,包括根磁碟區 (磁碟區 1 (AMI根)。您可以選擇性地指定要附加至執行個體的其他磁碟區。若要新增磁碟區,請選擇 Add new volume (新增磁碟區)

  9. 在 [資源標籤] 底下,若要標記啟動執行個體時所建立的資源,請選擇 [新增標籤],然後輸入標籤鍵和值配對。針對 Resource types (資源類型),請指定建立時要標記的資源。您可以為所有資源指定相同的標籤,或者為不同的資源指定不同的標籤。為每個要新增的其他標籤重新選擇 Add tag (新增標籤)。

    您可以針對使用啟動範本時建立的以下資源指定標籤:

    • 執行個體

    • 磁碟區

    • Elastic Graphics

    • Spot 執行個體請求

    • 網路介面

    注意

    若要標記啟動範本本身,您必須在 Template tags (範本標籤) 下指定標籤。如需詳細資訊,請參閱此程序中的步驟 3。

  10. 如需「進階」詳細資訊,請展開區段以檢視欄位,並選擇性地指定執行處理的任何其他參數。

  11. 使用「摘要」面板來檢閱您的啟動範本組態。您可以通過選擇其鏈接導航到任何部分,然後進行任何必要的更改。

  12. 當您準備好建立啟動範本時,請選擇 Create launch template (建立啟動範本)。

AWS CLI

下列範例會使用命create-launch-template令來建立具有指定名稱和執行個體組態的啟動範本。

aws ec2 create-launch-template \ --launch-template-name TemplateForWebServer \ --version-description WebVersion1 \ --tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose,Value=production}]' \ --launch-template-data file://template-data.json

以下是指定執行個體組態的啟動範本資料的範JSON例。儲存JSON至檔案並將其包含在--launch-template-data參數中,如範例指令所示。

{ "NetworkInterfaces": [{ "AssociatePublicIpAddress": true, "DeviceIndex": 0, "Ipv6AddressCount": 1, "SubnetId": "subnet-7b16de0c" }], "ImageId": "ami-8c1be5f6", "InstanceType": "r4.4xlarge", "TagSpecifications": [{ "ResourceType": "instance", "Tags": [{ "Key":"Name", "Value":"webserver" }] }], "CpuOptions": { "CoreCount":4, "ThreadsPerCore":2 } }

下列為範例輸出。

{ "LaunchTemplate": { "LatestVersionNumber": 1, "LaunchTemplateId": "lt-01238c059e3466abc", "LaunchTemplateName": "TemplateForWebServer", "DefaultVersionNumber": 1, "CreatedBy": "arn:aws:iam::123456789012:root", "CreateTime": "2017-11-27T09:13:24.000Z" } }
PowerShell

下列範例會使用指New-EC2LaunchTemplate令程式,建立具有指定名稱和執行個體組態的啟動範本。

$launchTemplateData = [Amazon.EC2.Model.RequestLaunchTemplateData]@{ ImageId = 'ami-8c1be5f6' InstanceType = 'r4.4xlarge' NetworkInterfaces = @( [Amazon.EC2.Model.LaunchTemplateInstanceNetworkInterfaceSpecificationRequest]@{ AssociatePublicIpAddress = $true DeviceIndex = 0 Ipv6AddressCount = 1 SubnetId = 'subnet-7b16de0c' } ) TagSpecifications = @( [Amazon.EC2.Model.LaunchTemplateTagSpecificationRequest]@{ ResourceType = 'instance' Tags = [Amazon.EC2.Model.Tag]@{ Key = 'Name' Value = 'webserver' } } ) CpuOptions = [Amazon.EC2.Model.LaunchTemplateCpuOptionsRequest]@{ CoreCount = 4 ThreadsPerCore = 2 } } $tagSpecificationData = [Amazon.EC2.Model.TagSpecification]@{ ResourceType = 'launch-template' Tags = [Amazon.EC2.Model.Tag]@{ Key = 'purpose' Value = 'production' } } New-EC2LaunchTemplate -LaunchTemplateName 'TemplateForWebServer' -VersionDescription 'WebVersion1' -LaunchTemplateData $launchTemplateData -TagSpecification $tagSpecificationData

下列為範例輸出。

CreatedBy : arn:aws:iam::123456789012:root CreateTime : 9/19/2023 16:57:55 DefaultVersionNumber : 1 LatestVersionNumber : 1 LaunchTemplateId : lt-01238c059eEXAMPLE LaunchTemplateName : TemplateForWebServer Tags : {purpose}

從現有啟動範本建立啟動範本

您可以複製現有啟動範本,然後調整參數以建立新版啟動範本。但是,您只能在使用 Amazon EC2 控制台時執行此操作。 AWS CLI 不支援複製範本。如需每個參數的描述,請參閱Amazon EC2執行個體組態參數的參考

Console
若要從現有啟動範本建立啟動範本
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

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

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

  4. Template version description (範本版本描述) 中,提供此啟動範本版本的簡短描述。

  5. 若要在建立時標記啟動範本,請展開 [範本標籤],選擇 [新增標籤],然後輸入標籤索引鍵和值配對。

  6. 展開來源範本,並針對啟動範本名稱,選擇要以新啟動範本為基礎的啟動範本。

  7. 針對 Source template version (來源範本版本),選擇要做為新啟動範本基礎的啟動範本版本。

  8. 視需要調整任何啟動參數,然後選擇 Create launch template (建立啟動範本)

從執行個體建立啟動範本

您可以複製現有 Amazon EC2 執行個體的參數,然後調整參數以建立啟動範本。如需每個參數的描述,請參閱Amazon EC2執行個體組態參數的參考

Console
若要從執行個體建立啟動範本
  1. 在打開 Amazon EC2 控制台https://console.aws.amazon.com/ec2/

  2. 在導覽窗格中,選擇 Instances (執行個體)。

  3. 選取例項,然後選擇 [動作]、[映像和範本]、[從執行個體建立範本]。

  4. 提供名稱、描述和標籤,並視需要調整啟動參數。

    注意

    當您從執行個體建立啟動範本時,範本中不會包含執行個體的網路介面IDs和 IP 位址。

  5. 選擇 Create launch template (建立啟動範本)。

AWS CLI

您可以使用從現有執行個體建立啟動範本,方法是先從執行個體取得啟動範本資料,然後使用啟動範本資料建立啟動範本。 AWS CLI

若要從執行個體啟動範本資料
  • 使用指get-launch-template-data令並指定執行個體 ID。您能以輸出做為基礎,用以建立新啟動範本或啟動範本版本。根據預設,輸出包括最上層 LaunchTemplateData 物件,而此物件無法於啟動範本資料中指定。使用 --query 選項排除此物件。

    aws ec2 get-launch-template-data \ --instance-id i-0123d646e8048babc \ --query "LaunchTemplateData"

    下列為範例輸出。

    { "Monitoring": {}, "ImageId": "ami-8c1be5f6", "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true } } ], "EbsOptimized": false, "Placement": { "Tenancy": "default", "GroupName": "", "AvailabilityZone": "us-east-1a" }, "InstanceType": "t2.micro", "NetworkInterfaces": [ { "Description": "", "NetworkInterfaceId": "eni-35306abc", "PrivateIpAddresses": [ { "Primary": true, "PrivateIpAddress": "10.0.0.72" } ], "SubnetId": "subnet-7b16de0c", "Groups": [ "sg-7c227019" ], "Ipv6Addresses": [ { "Ipv6Address": "2001:db8:1234:1a00::123" } ], "PrivateIpAddress": "10.0.0.72" } ] }

    例如,您可以將輸出直接寫入檔案:

    aws ec2 get-launch-template-data \ --instance-id i-0123d646e8048babc \ --query "LaunchTemplateData" >> instance-data.json
使用啟動範本資料建立啟動範本

使用「Systems Manager」參數而不是 AMI ID

您可以指定參數,而不是在啟動範本中指 AWS Systems Manager 定 AMI ID。如果 AMI ID 變更,您可以透過更新「系統管理員參數存放區」中的「Systems Manager」參數,在一個位置更新 AMI ID。參數也可以與其他參數共用 AWS 帳戶。您可以在一個帳戶中集中存儲和管理AMI參數,並與需要引用它們的每個其他帳戶共享它們。透過使用 Systems Manager 參數,您可以在單一動作中更新所有啟動範本。

「Systems Manager」參數是您在「參數放區」AWS Systems Manager 中建立的使用者定義鍵值對。參數存放區提供一個中央位置來存放應用程式組態值。

在下圖中,參數會先對映至「golden-ami參數存放區」AMI ami-aabbccddeeffgghhi 中的原始參數。在啟動範本中,AMIID 的值為golden-ami。使用此啟動範本啟動執行個體時,AMIID 會解析為ami-aabbccddeeffgghhi。稍後會AMI更新,產生新的 AMI ID。在參數存放區中,golden-ami 參數會映射至新的 ami-00112233445566778啟動範本保持不變。使用此啟動範本啟動執行個體時,AMIID 會解析為新的ami-00112233445566778

使用參數存放區中的 Systems Manager 參數來更新啟動範本。

Systems Manager 參數格式 AMI IDs

使用啟動範本時,使用者定義的「Systems Manager」參數必須遵循下列格式來取AMI代 ID:

  • 參數類型:String

  • 參數資料類型:aws:ec2:image— 這可確保參數存放區驗證您輸入的值是否為 AMI ID 的正確格式。

若要取得有關為 AMI ID 建立有效參數的更多資訊,請參閱《AWS Systems Manager 使用指南》中的〈建立 Systems Manager 參數

啟動範本中的 Systems Manager 參數格式

若要使用「Systems Manager」參數代替啟動範本中的 AMI ID,在啟動範本中指定參數時,必須使用下列其中一種格式:

若要參照公用參數:

  • 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

參數版本

Systems Manager 參數是版本化資源。更新參數時,會建立新的連續參數版本。Systems Manager 支援參數標籤,您可以將其映射至特定參數版本。

例如,golden-ami 參數可以有三個版本:123。您可以建立映射至版本 2 的參數標籤 beta,以及映射至版本 3 的參數標籤 prod

在啟動範本中,可以使用下列其中一種格式來指定 golden-ami 參數的版本 3:

  • resolve:ssm:golden-ami:3

  • resolve:ssm:golden-ami:prod

指定版本或標籤是可選操作。如果未指定版本或標籤,則會使用最新版本的參數。

在啟動範本中指定 Systems Manager 參數

當您建立啟動範本或新版本的啟動範本時,您可以在啟動範本中指定 Systems Manager 參數,而不是 AMI ID。

Console
在啟動範本中指定 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. 視需要指定任何其他啟動範本參數,然後選擇建立啟動範本

如需詳細資訊,請參閱透過指定參數建立啟動範本

AWS CLI
在啟動範本中指定 Systems Manager 參數
  • 使用create-launch-template指令建立啟動範本。若要指定AMI要使用的,請使用下列其中一種格式輸入「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

    以下範例建立的啟動範本會指定下列項目:

    • 啟動範本的名稱 (TemplateForWebServer)

    • 啟動範本的標籤 (purpose=production)

    • 執行處理組態的資料 (在JSON檔案中指定):

      • 使AMI用的(resolve:ssm:golden-ami

      • 要啟動的執行個體類型 (m5.4xlarge)

      • 執行個體的標籤 (Name=webserver)

    aws ec2 create-launch-template \ --launch-template-name TemplateForWebServer \ --tag-specifications 'ResourceType=launch-template,Tags=[{Key=purpose,Value=production}]' \ --launch-template-data file://template-data.json

    下列範例JSON檔案包含執行個體組態的啟動範本資料。ImageId 的值為 Systems Manager 參數名稱,以所需格式 resolve:ssm:golden-ami 輸入。

    {"LaunchTemplateData": { "ImageId": "resolve:ssm:golden-ami", "InstanceType": "m5.4xlarge", "TagSpecifications": [{ "ResourceType": "instance", "Tags": [{ "Key":"Name", "Value":"webserver" }] }] } }

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

將「Systems Manager」參數解析為實際 AMI ID

使用指describe-launch-template-versions令並包括--resolve-alias參數。

aws ec2 describe-launch-template-versions \ --launch-template-name my-launch-template \ --versions $Default \ --resolve-alias

回應包含的AMI識別碼ImageId。在此範例中,當使用此啟動範本啟動執行個體時,AMIID 會解析為ami-0ac394d6a3example

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

若要取得有關使用 Systems Manager 參數的更多資訊,請參閱「Systems Manager」文件中的下列參考資料。

限制

  • 只有使用具有指定 Systems Manager 參數而取AMI代 ID 的啟動範本類型instant支援的EC2叢集。

  • EC2類型為maintain和和 request Spot 叢集的叢集不支援使用已指定 Systems Manager 參數來取代 ID 的啟動範本。AMI對於類型為maintainrequest的EC2叢集以及 Spot 叢集,如果您在啟動範本AMI中指定,則必須指定 AMI ID。

  • 如果您在EC2叢集中使用以屬性為基礎的執行個AMI體選取項,則無法指定 Systems Manager 參數來取代 ID。使用以屬性為基礎的例證選取時,您必須指定 AMI ID。

  • Amazon EC2 Auto Scaling 提供其他限制。如需詳細資訊,請AWS Systems Manager 參閱 Amazon EC2 Auto Scaling 使用者指南中的使用參數而非啟動範本。AMI IDs