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

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

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

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

注意

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

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

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

  • 安全群組 IDs

  • Amazon EC2標籤

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

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

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

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

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

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

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

啟動範本中的 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主控台中的啟動範本,則可以將其貼上為純文字。或者,您可以從檔案上傳。如果您使用 AWS CLI 或 AWS SDK,則必須先base64編碼使用者資料,並在呼叫 時將該字串提交為 UserData 參數的值CreateLaunchTemplate,如此JSON檔案所示。

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