

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

# 搭配 使用 Amazon EC2 啟動範本 AWS Batch
<a name="launch-templates"></a>

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

啟動範本可以指定優先於 AMIs 選擇順序的 AMI。如需詳細資訊，請參閱[AMI 選擇順序](ami-selection-order.md)。

**注意**  
當您為 AWS Batch 運算環境指定自訂啟動範本時， AWS Batch 不會直接將啟動範本連接至基礎 Auto Scaling 群組。反之， 會為 Auto Scaling 群組 AWS Batch 建立個別的批次管理啟動範本，並將自訂啟動範本中的相關設定納入其中。因此，您看到與 Auto Scaling 群組相關聯的啟動範本與您最初指定的啟動範本不同。這是預期的行為。

**注意**  
 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 使用者指南*》中的[從啟動範本啟動執行個體](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-launch-templates.html)。

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

**注意**  
假設這些參數 (Amazon EC2 標籤除外） 都指定在啟動範本和運算環境組態中。然後，以運算環境參數為優先。Amazon EC2 標籤會在啟動範本和運算環境組態之間合併。如果標籤的金鑰發生衝突，則以運算環境組態中的值為優先。
+ Amazon EC2 金鑰對
+ Amazon EC2 AMI ID
+ 安全群組 IDs
+ Amazon EC2 標籤

下列啟動範本參數會**由 忽略** AWS Batch：
+ 執行個體類型 (在您建立運算環境時，指定所需的執行個體類型)
+ 執行個體角色 (在您建立運算環境時，指定所需的執行個體角色)
+ 網路界面子網路 (在您建立運算環境時，指定所需的子網路)
+ 執行個體市場選項 (AWS Batch 必須控制 Spot 執行個體組態）
+ 停用 API 終止 (AWS Batch 必須控制執行個體生命週期）

AWS Batch 只會在基礎設施更新期間使用新的啟動範本版本來更新啟動範本。如需詳細資訊，請參閱[在 中更新運算環境 AWS Batch](updating-compute-environments.md)。

## 預設和覆寫啟動範本
<a name="default-lt-and-overrides"></a>

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

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

如果您使用 `$Default`或 `$Latest`變數， AWS Batch 會在建立運算環境時套用目前資訊。如果預設或最新版本在未來變更，您必須透過 [UpdateComputeEnvironment](https://docs.aws.amazon.com/batch/latest/APIReference/API_UpdateComputeEnvironment.html) 或 AWS 管理主控台 - 更新資訊 AWS Batch。

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

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

使用 `targetInstanceTypes` 參數來選取應該使用此覆寫啟動範本的執行個體類型或系列。執行個體類型或系列必須先由 [https://docs.aws.amazon.com/batch/latest/APIReference/API_ComputeResource.html#Batch-Type-ComputeResource-instanceTypes](https://docs.aws.amazon.com/batch/latest/APIReference/API_ComputeResource.html#Batch-Type-ComputeResource-instanceTypes) 參數識別。

如果您定義啟動範本覆寫並決定稍後移除，您可以傳遞空陣列，以在 [https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html](https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html) API 操作中取消設定 [https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html#Batch-Type-LaunchTemplateSpecification-overrides](https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html#Batch-Type-LaunchTemplateSpecification-overrides) 參數。您也可以選擇在提交 `UpdateComputeEnvironment` API 操作時不包含 `overrides` 參數。如需詳細資訊，請參閱[https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html#Batch-Type-LaunchTemplateSpecification-overrides](https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecification.html#Batch-Type-LaunchTemplateSpecification-overrides)

如需詳細資訊，請參閱《 AWS Batch API 參考指南[https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecificationOverride.html#Batch-Type-LaunchTemplateSpecificationOverride-targetInstanceTypes](https://docs.aws.amazon.com/batch/latest/APIReference/API_LaunchTemplateSpecificationOverride.html#Batch-Type-LaunchTemplateSpecificationOverride-targetInstanceTypes)》中的 。

## 啟動範本中的 Amazon EC2 使用者資料
<a name="lt-user-data"></a>

您可以在啟動範本中提供由 [cloud-init](https://cloudinit.readthedocs.io/en/latest/index.html) 在執行個體啟動時執行的 Amazon EC2 使用者資料。您的使用者資料可以執行常見的組態案例，包括但不限於下列項目：
+ [包括使用者或群組](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#including-users-and-groups)
+ [安裝套件 ](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#install-arbitrary-packages)
+ [建立分區和檔案系統](https://cloudinit.readthedocs.io/en/latest/topics/examples.html#create-partitions-and-filesystems)

啟動範本中的 Amazon EC2 使用者資料必須採用 [MIME 分段封存](https://cloudinit.readthedocs.io/en/latest/topics/format.html#mime-multi-part-archive)格式。這是因為您的使用者資料會與設定運算資源所需的其他 AWS Batch 使用者資料合併。您可以將多個使用者資料區塊組合在一起成為單一 MIME 分段檔案。例如，您可能想要將設定 Docker 協助程式的雲端引導與寫入 Amazon ECS 容器代理程式組態資訊的使用者資料 shell 指令碼結合。

如果您使用的是 AWS CloudFormation，[AWS::CloudFormation::Init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-init.html) 類型可與 [cfn-init](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-init.html) 協助程式指令碼搭配使用，以執行常見的組態案例。

MIME 分段檔案包含下列元件：
+ 內容類型和部分邊界宣告：`Content-Type: multipart/mixed; boundary="==BOUNDARY=="`
+ MIME 版本宣告：`MIME-Version: 1.0`
+ 一或多個使用者資料區塊，其中包含下列元件：
  + 發出使用者資料區塊開頭訊號的開啟界限：`--==BOUNDARY==`。您必須在此邊界之前將行保留空白。
  + 區塊的內容類型宣告：`Content-Type: {{text/cloud-config}}; charset="us-ascii"`。如需內容類型的詳細資訊，請參閱「[Cloud-Init 說明文件](https://cloudinit.readthedocs.io/en/latest/topics/format.html)」。您必須在內容類型宣告後保留該行空白。
  + 使用者資料的內容，例如 shell 命令或`cloud-init`指令的清單。
+ 發出 MIME 分段檔案結尾訊號的結束界限：`--==BOUNDARY==--`。您必須在關閉界限之前將行保留空白。

**注意**  
如果您在 Amazon EC2 主控台中將使用者資料新增至啟動範本，您可以將其貼上為純文字。或者，您可以從檔案上傳它。如果您使用 `base64` AWS CLI 或 AWS 開發套件，您必須先編碼使用者資料，並在呼叫 [CreateLaunchTemplate](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateLaunchTemplate.html) 時提交該字串做為 `UserData` 參數的值，如此 JSON 檔案所示。  

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

**Topics**
+ [預設和覆寫啟動範本](#default-lt-and-overrides)
+ [啟動範本中的 Amazon EC2 使用者資料](#lt-user-data)
+ [參考：Amazon EC2 啟動範本範例](launch-template-examples.md)