本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 使用 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 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主控台中的啟動範本,則可以將其貼上為純文字。或者,您可以從檔案上傳。如果您使用 AWS CLI 或 AWS SDK,則必須先base64
編碼使用者資料,並在呼叫 時將該字串提交為 UserData
參數的值CreateLaunchTemplate,如此JSON檔案所示。
{ "LaunchTemplateName": "base64-user-data", "LaunchTemplateData": { "UserData": "
ewogICAgIkxhdW5jaFRlbXBsYXRlTmFtZSI6ICJpbmNyZWFzZS1jb250YWluZXItdm9sdW...
" } }