本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 使用 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 CloudFormation,則 AWS::CloudFormation::Init 類型可與 cfn-init 協助程式指令碼搭配使用,以執行常見的組態案例。
MIME 分段檔案包含下列元件:
-
內容類型和部分邊界宣告:
Content-Type: multipart/mixed; boundary="==BOUNDARY=="
-
MIME 版本宣告:
MIME-Version: 1.0
-
一或多個使用者資料區塊,其中包含下列元件:
-
發出使用者資料區塊開頭訊號的開啟界限:
--==BOUNDARY==
。您必須在此邊界之前保留該行空白。 -
區塊的內容類型宣告:
Content-Type:
。如需內容類型的詳細資訊,請參閱「Cloud-Init 說明文件text/cloud-config
; charset="us-ascii"」。您必須在內容類型宣告之後保留該行空白。 -
使用者資料的內容,例如 shell 命令或
cloud-init
指令的清單。
-
-
發出 MIME 分段檔案結尾訊號的關閉界限:
--==BOUNDARY==--
。在關閉界限之前,您必須保留該行空白。
注意
如果您將使用者資料新增至 Amazon EC2 主控台中的啟動範本,您可以將其貼上為純文字。或者,您可以從檔案上傳。如果您使用 base64
AWS CLI 或 AWS 開發套件,您必須先編碼使用者資料,並在呼叫 CreateLaunchTemplate 時提交該字串做為 UserData
參數的值,如本 JSON 檔案所示。
{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "
ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW...
" } }