搭配 使用 Amazon EC2 啟動範本 AWS Batch - AWS Batch

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

搭配 使用 Amazon EC2 啟動範本 AWS Batch

AWS Batch 支援搭配 ECAmazon EC2 EC2 啟動範本。使用啟動範本,您可以修改 AWS Batch 運算資源的預設組態,而不需要建立自訂 AMIs。

注意

AWS Fargate 資源不支援啟動範本。

您必須先建立啟動範本,才能將它與運算環境建立關聯。您可以在 Amazon EC2 主控台中建立啟動範本。或者,您可以使用 AWS CLI 或 AWS 開發套件。例如,下列 JSON 檔案代表啟動範本,其會調整預設 AWS Batch 運算資源 AMI 的 Docker 資料磁碟區大小,也會將其設定為加密。

{ "LaunchTemplateName": "increase-container-volume-encrypt", "LaunchTemplateData": { "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "Encrypted": true, "VolumeSize": 100, "VolumeType": "gp2" } } ] } }

您可以將 JSON 儲存到名為 的檔案lt-data.json並執行下列 AWS CLI 命令,以建立先前的啟動範本。

aws ec2 --region <region> create-launch-template --cli-input-json file://lt-data.json

如需啟動範本的詳細資訊,請參閱《Amazon EC2 使用者指南》中的從啟動範本啟動執行個體

如果您使用啟動範本建立您的運算環境,您可以將以下現有的運算環境參數移至您的啟動範本:

注意

假設這些參數 (Amazon EC2 標籤除外) 都指定在啟動範本和運算環境組態中。然後,以運算環境參數為優先。Amazon EC2 標籤會在啟動範本和運算環境組態之間合併。如果標籤的金鑰發生衝突,則以運算環境組態中的值為優先。

  • Amazon EC2 金鑰對

  • Amazon EC2 AMI ID

  • 安全群組 ID

  • Amazon EC2 標籤

下列啟動範本參數會被忽略 AWS Batch:

  • 執行個體類型 (在您建立運算環境時,指定所需的執行個體類型)

  • 執行個體角色 (在您建立運算環境時,指定所需的執行個體角色)

  • 網路界面子網路 (在您建立運算環境時,指定所需的子網路)

  • 執行個體市場選項 (AWS Batch 必須控制 Spot 執行個體組態)

  • 停用 API 終止 (AWS Batch 必須控制執行個體生命週期)

AWS Batch 只會在基礎設施更新期間,使用新的啟動範本版本來更新啟動範本。如需詳細資訊,請參閱更新運算環境

預設和覆寫啟動範本

您可以為運算環境定義預設啟動範本,並為特定執行個體類型和系列定義覆寫啟動範本。這對您來說非常有用,因此預設範本會用於運算環境中的大多數執行個體類型。

替代變數 $Default$Latest可用來取代命名特定版本。如果您沒有提供覆寫啟動範本,則會自動套用預設啟動範本。

如果您使用 $Default$Latest變數, AWS Batch 會在建立運算環境時套用目前資訊。如果預設或最新版本在未來變更,您必須透過 UpdateComputeEnvironment 或 AWS Management Console - 更新資訊 AWS Batch。

若要提供額外彈性,您可以定義覆寫啟動範本套用至特定運算執行個體類型或系列。

注意

每個運算環境最多可指定十 (10) 個覆寫啟動範本。

使用 targetInstanceTypes 參數來選取應該使用此覆寫啟動範本的執行個體類型或系列。執行個體類型或系列必須先由 instanceTypes 參數識別。

如果您定義啟動範本覆寫並決定稍後移除,您可以傳遞空陣列,以在 UpdateComputeEnvironment API 操作中取消設定 overrides 參數。您也可以在提交 UpdateComputeEnvironment API 操作時選擇不包含 overrides 參數。如需詳細資訊,請參閱LaunchTemplateSpecification.overrides

如需詳細資訊,請參閱 AWS Batch API 參考指南LaunchTemplateSpecificationOverride.targetInstanceTypes中的 。

啟動範本中的 Amazon EC2 使用者資料

您可以在啟動範本中提供 Amazon EC2 使用者資料,該範本會在執行個體啟動時由 cloud-init 執行。您的使用者資料可以執行常見的組態案例,包括但不限於下列項目:

啟動範本中的 Amazon EC2 使用者資料必須採用 MIME 分段封存格式。這是因為您的使用者資料會與設定運算資源所需的其他 AWS Batch 使用者資料合併。您可以將多個使用者資料區塊組合在一起成為單一 MIME 分段檔案。例如,您可能想要將設定 Docker 協助程式的雲端引導與寫入 Amazon ECS 容器代理程式組態資訊的 使用者資料 shell 指令碼結合。

如果您使用的是 AWS CloudFormation,則 AWS::CloudFormation::Init 類型可與 cfn-init 協助程式指令碼搭配使用,以執行常見的組態案例。

MIME 分段檔案包含下列元件:

  • 內容類型和部分邊界宣告:Content-Type: multipart/mixed; boundary="==BOUNDARY=="

  • MIME 版本宣告:MIME-Version: 1.0

  • 一或多個使用者資料區塊,其中包含下列元件:

    • 發出使用者資料區塊開頭訊號的開啟界限:--==BOUNDARY==。您必須在此邊界之前保留該行空白。

    • 區塊的內容類型宣告:Content-Type: text/cloud-config; charset="us-ascii"。如需內容類型的詳細資訊,請參閱「Cloud-Init 說明文件」。您必須在內容類型宣告之後保留該行空白。

    • 使用者資料的內容,例如 shell 命令或cloud-init指令的清單。

  • 發出 MIME 分段檔案結尾訊號的關閉界限:--==BOUNDARY==--。在關閉界限之前,您必須保留該行空白。

注意

如果您將使用者資料新增至 Amazon EC2 主控台中的啟動範本,您可以將其貼上為純文字。或者,您可以從檔案上傳。如果您使用 base64 AWS CLI 或 AWS 開發套件,您必須先編碼使用者資料,並在呼叫 CreateLaunchTemplate 時提交該字串做為 UserData 參數的值,如本 JSON 檔案所示。

{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW..." } }