

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

# 在 Amazon EC2 資源上建立單一節點任務定義
<a name="create-job-definition-EC2"></a>

請完成下列步驟，以在 Amazon Elastic Compute Cloud (Amazon EC2) 資源上建立單一節點任務定義。

**若要在 Amazon EC2 資源上建立新的任務定義：**

1. 在 https：//[https://console.aws.amazon.com/batch/](https://console.aws.amazon.com/batch/) 開啟 AWS Batch 主控台。

1. 從導覽列中，選擇要 AWS 區域 使用的 。

1. 在左側導覽窗格中，選擇**任務定義**。

1. 選擇**建立**。

1. 針對**協調類型，**選擇 **Amazon Elastic Compute Cloud (Amazon EC2)**。

1. 對於 **EC2 平台組態**，請關閉**啟用多節點平行**處理。

1. 在**名稱**中，輸入任務定義的唯一名稱。名稱長度最多可達 128 個字元。可以包含大小寫字母、數字、連字號 (-) 和底線 (\$1)。

1. （選用） 針對**執行逾時**，輸入逾時值 （以秒為單位）。執行逾時是未完成任務終止之前的時間長度。如果嘗試超過逾時持續時間，則會停止嘗試並移至 `FAILED` 狀態。如需詳細資訊，請參閱[任務逾時](job_timeouts.md)。最小值為 60 秒。

1. （選用） 開啟**排程優先順序**。輸入介於 0 到 100 之間的排程優先順序值。較高值的優先順序較高。

1. （選用） 針對**任務嘗試**，輸入嘗試將任務移至`RUNNABLE`狀態的 AWS Batch 次數。輸入介於 1 到 10 之間的數字。

1. （選用） 針對**重試策略條件**，選擇**退出時新增評估**。輸入至少一個參數值，然後選擇**動作**。對於每組條件，**動作**必須設定為**重試**或**結束**。這些動作表示下列項目：
   + **重試** – AWS Batch 重試，直到達到您指定的任務嘗試次數為止。
   + **結束** – AWS Batch 停止重試任務。
**重要**  
如果您選擇在**結束時新增評估**，您必須設定至少一個參數，然後選擇**動作**或選擇在**結束時移除評估**。

1. （選用） 展開**標籤**，然後選擇**新增標籤**以將標籤新增至資源。輸入索引鍵和選用值，然後選擇**新增標籤**。

1. （選用） 開啟**傳播標籤**，將標籤從任務和任務定義傳播到 Amazon ECS 任務。

1. 選擇**下一頁**。

1. 在**容器組態**區段中：

   1. 針對**映像**，選擇要用於任務的Docker映像。根據預設，Docker Hub 登錄檔中的映像為可用。您也可以用 `repository-url/image:tag` 指定其他儲存庫。名稱長度最多可達 225 個字元。它可以包含大小寫字母、數字、連字號 (-)、底線 (\$1)、冒號 (：)、斜線 (/) 和數字符號 (\$1)。此參數會映射至 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[建立容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)區段中的 `Image` 以及 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) 的 `IMAGE` 參數。
**注意**  
Docker 映像架構必須符合執行個體排程所在之運算資源的處理器架構。例如，ARM 型 Docker 映像只能在 ARM 型運算資源上執行。
      + Amazon ECR Public 儲存庫中的映像會使用完整`registry/repository[:tag]`或命名慣例 `registry/repository[@digest]` （例如 `public.ecr.aws/registry_alias/my-web-app:latest`)。
      + Amazon ECR 儲存庫中的映像會使用完整的命名慣例 `registry/repository[:tag]` （例如 `aws_account_id.dkr.ecr.region.amazonaws.com``/my-web-app:latest`)。
      + Docker Hub 上官方儲存庫中的映像，使用的是單一名稱 (例如，`ubuntu` 或 `mongo`)。
      + Docker Hub 上的其他儲存庫中的映像要求使用組織名稱 (例如，`amazon/amazon-ecs-agent`)。
      + 其他線上儲存庫中的映像更進一步要求使用網域名稱 (例如，`quay.io/assemblyline/ubuntu`)。

   1. 在**命令**中，將命令輸入 欄位做為其 **JSON** 字串陣列對等項。

      此參數會映射至 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[建立容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)區段中的 `Cmd` 以及 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) 的 `COMMAND` 參數。如需 Docker `CMD` 參數的詳細資訊，請參閱 [https://docs.docker.com/engine/reference/builder/\$1cmd](https://docs.docker.com/engine/reference/builder/#cmd)。
**注意**  
您可以在命令中使用預設值來取代參數和預留位置。如需詳細資訊，請參閱[參數](job_definition_parameters.md#parameters)。

   1. （選用） 對於**執行角色**，指定 IAM 角色，授予 Amazon ECS 容器代理程式代表您進行 AWS API 呼叫的許可。此功能針對任務使用 Amazon ECS IAM 角色。如需詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 任務執行 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_execution_IAM_role.html)。 **

   1. 針對**任務角色組態**，選擇具有 AWS APIs 許可的 IAM 角色。此功能針對任務使用 Amazon ECS IAM 角色。如需詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》**中的[任務 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。
**注意**  
這裡只會顯示具有 **Amazon Elastic Container Service 任務角色**信任關係的角色。如需為您的 AWS Batch 任務建立 IAM 角色的詳細資訊，請參閱《*Amazon Elastic Container Service 開發人員指南*》中的[為您的任務建立 IAM 角色和政策](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html#create_task_iam_policy_and_role)。

1. 針對**參數**，選擇**新增參數**，將參數替換預留位置新增為**鍵**對和選用**值**對。

1. 在**環境組態**區段中：

   1. 針對 **vCPUs**，輸入要預留給容器的 vCPUs 數量。此參數會映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[建立容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)區段中的 `CpuShares` 以及 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) 的 `--cpu-shares` 選項。每個 vCPU 相當於 1,024 個 CPU 共用。您必須指定至少 1 個 vCPU。

   1. 針對**記憶體**，輸入容器可用的記憶體限制。如果您的容器嘗試超過您在此處指定的記憶體量，則容器會停止。此參數會映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[建立容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)區段中的 `Memory` 以及 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) 的 `--memory` 選項。您必須為單一工作指定至少 4 MiB 的記憶體。
**注意**  
若要最大化資源使用率，請為特定執行個體類型的任務排定記憶體優先順序。如需詳細資訊，請參閱[運算資源記憶體管理](memory-management.md)。

   1. 針對 ** GPUs 數量**，選擇要保留給容器的 GPUs 數量。

   1. （選用） 對於**環境變數**，選擇**新增環境變數**，將環境變數新增為名稱/值對。這些變數會傳遞至容器。

   1. （選用） 針對**秘密**，選擇**新增秘密**，將秘密新增為名稱/值對。這些秘密會在容器中公開。如需詳細資訊，請參閱 [LogConfiguration：secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)。

1. 選擇**下一頁**。

1. 在 **Linux 組態**區段中：

   1. 在 **User** (使用者) 中，輸入要在容器內使用的使用者名稱。此參數會映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[建立容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)區段中的 `User` 以及 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) 的 `--user` 選項。

   1. （選用） 若要在主機執行個體上提升任務容器的許可 （類似於`root`使用者），請將**特權**滑桿拖曳至右側。此參數會映射到 [Docker Remote API](https://docs.docker.com/engine/api/v1.38/) 的[建立容器](https://docs.docker.com/engine/api/v1.38/#operation/ContainerCreate)區段中的 `Privileged` 以及 [https://docs.docker.com/engine/reference/commandline/run/](https://docs.docker.com/engine/reference/commandline/run/) 的 `--privileged` 選項。

   1. （選用） 開啟**啟用初始化程序**以在容器內執行`init`程序。此程序會轉送訊號並接收程序。

1. （選用） 在**檔案系統組態**區段中：

   1. 開啟**啟用唯讀檔案系統**以移除磁碟區的寫入存取權。

   1. 針對**共用記憶體大小**，輸入`/dev/shm`磁碟區的大小 （以 MiB 為單位）。

   1. 針對**最大交換大小**，輸入容器可以使用的交換記憶體總量 （以 MiB 為單位）。

   1. 針對**交換輸入**介於 0 到 100 之間的值，以表示容器的交換行為。如果您未指定值並啟用交換，則值預設為 60。如需詳細資訊，請參閱 [LinuxParameters：swappiness](https://docs.aws.amazon.com/batch/latest/APIReference/API_LinuxParameters.html#Batch-Type-LinuxParameters-swappiness)。

   1. （選用） 展開**其他組態**。

   1. （選用） 針對 **Tmpfs**，選擇**新增 tmpfs** 以新增`tmpfs`掛載。

   1. （選用） 針對**裝置**，選擇**新增裝置**以新增裝置：

      1. 針對 **Container path (容器路徑)**，指定容器執行個體中的路徑，以公開對應到主機執行個體的裝置。如果您將此保留空白，則會在容器中使用主機路徑。

      1. 針對 **Host path (主機路徑)**，指定主機執行個體中的裝置的路徑。

      1. 針對**許可**，選擇要套用至裝置的一或多個許可。可用的許可為**讀取**、**寫入**和 **MKNOD**。

   1. （選用） 對於**磁碟區組態**，選擇**新增磁碟區**以建立要傳遞至容器的磁碟區清單。輸入磁碟區**的名稱**和**來源路徑**，然後選擇**新增磁碟區**。您也可以選擇開啟**啟用 EFS**。

   1. （選用） 對於**掛載點**，選擇**新增掛載點組態**以新增資料磁碟區的掛載點。您必須指定來源磁碟區和容器路徑。這些掛載點會傳遞至容器執行個體Docker daemon上的 。您也可以選擇將磁碟區設為**唯讀**。

   1. （選用） 針對 **Ulimits 組態**，選擇**新增 ulimit** 以新增容器`ulimits`的值。輸入**名稱**、**軟性限制**和**硬性限制**值，然後選擇**新增 ulimit**。

1. 在**任務屬性**區段中：

   1. 針對**執行角色 - 條件式**，選擇角色以允許 Amazon ECS 代理程式代表您進行 AWS API 呼叫。如需建立**執行角色**的詳細資訊，請參閱 [教學課程：建立 IAM 執行角色](create-execution-role.md)。

   1. 選擇**啟用 ECS 執行命令**，以啟用直接存取 Amazon ECS 容器殼層，並略過主機作業系統。您必須選擇**任務角色**。
**重要**  
**ECS 執行**命令需要可寫入的檔案系統。

   1. 針對**任務角色**，選擇 Amazon ECS Identity and Access Management (IAM) 角色，以允許容器代表您進行 AWS API 呼叫。如需詳細資訊，請參閱《[Amazon Elastic Container Service 開發人員指南》中的 Amazon ECS 任務 IAM 角色](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html)。 **

1. （選用） 在**記錄組態**區段中：

   1. 對於**日誌驅動程式**，選擇要使用的日誌驅動程式。如需可用日誌驅動程式的詳細資訊，請參閱 [LogConfiguration：logDriver](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-logDriver)。
**注意**  
根據預設，會使用 `awslogs` 日誌驅動程式。

   1. 針對**選項**，選擇**新增選項**以新增選項。輸入名稱/值對，然後選擇**新增選項**。

   1. 針對**秘密**，選擇**新增秘密**。輸入名稱/值對，然後選擇**新增秘密**以新增秘密。
**提示**  
如需詳細資訊，請參閱 [LogConfiguration：secretOptions](https://docs.aws.amazon.com/batch/latest/APIReference/API_LogConfiguration.html#Batch-Type-LogConfiguration-secretOptions)。

1. 選擇**下一頁**。

1. 針對**任務定義檢閱**，檢閱組態步驟。如需變更，請選擇 **Edit** (編輯)。完成後，請選擇**建立任務定義**。