

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

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

完成下列步驟，以在 AWS Fargate 資源上建立單一節點任務定義。

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

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

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

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

1. 選擇**建立**。

1. 針對**協調類型**，選擇 **Fargate**。如需詳細資訊，請參閱[Fargate 運算環境](fargate.md)。

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

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

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

1. （選用） 展開**標籤**，然後選擇**新增標籤**以將標籤新增至資源。開啟**傳播標籤**，從任務和任務定義傳播標籤。

1. 在 **Fargate 平台組態**區段中：

   1. 針對**執行期平台**，選擇運算環境架構。

   1. 針對**作業系統系列**，選擇運算環境的作業系統。

   1. 針對 **CPU 架構**，選擇 vCPU 架構。

   1. 對於 **Fargate 平台版本**，請輸入 `LATEST`或特定執行期環境版本。

   1. （選用） 開啟**指派公有 IP**，將公有 IP 地址指派給 Fargate 任務網路介面。對於在私有子網路中執行以將傳出流量傳送至網際網路的任務，私有子網路需要連接 NAT 閘道，才能將請求路由至網際網路。您可能想要這麼做，以便提取容器映像。如需詳細資訊，請參閱《Amazon Elastic Container Service 開發人員指南》**中的 [Amazon ECS 任務聯網](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)。

   1. （選用） 對於**暫時性儲存**，輸入要配置給任務的暫時性儲存量。暫時性儲存量必須介於 21 GiB 和 200 GiB 之間。根據預設，如果您未輸入值，則會配置 20 GiB 的暫時性儲存。
**注意**  
暫時性儲存需要 Fargate 平台 1.4 版或更新版本。

   1. 針對**執行角色**，指定 IAM 角色，授予 Amazon ECS 容器和 Fargate 代理程式代表您進行 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. 針對**任務嘗試**，輸入嘗試將任務移至 `RUNNABLE` 狀態的 AWS Batch 次數。輸入介於 1 到 10 之間的數字。

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

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. （選用） 將參數新增至任務定義做為名稱/值映射，以覆寫任務定義預設值。若要新增參數：

      1. 針對**參數**，選擇**新增參數**，輸入名稱/值對，然後選擇**新增參數**。
**重要**  
如果您選擇**新增參數**，您必須設定至少一個參數，或選擇**移除參數**

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

      

      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. 針對 **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 的記憶體。

         如果您使用 GuardDuty 執行期監控，GuardDuty 安全代理程式會有些微的記憶體負荷。因此，記憶體限制必須包含 GuardDuty 安全代理程式的大小。如需有關 GuardDuty 安全代理程式記憶體限制的資訊，請參閱《*GuardDuty 使用者指南*》中的 [CPU 和記憶體限制](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits)。如需有關最佳實務的資訊，請參閱《*Amazon ECS 開發人員指南*》中的[如何在啟用執行期監控之後修復 Fargate 任務上的記憶體不足錯誤](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-guard-duty-troubleshooting.html#memory-error)。
**注意**  
若要最大化資源使用率，請為特定執行個體類型的任務排定記憶體的優先順序。如需詳細資訊，請參閱[運算資源記憶體管理](memory-management.md)。

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

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

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

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

   1. 針對**使用者**，輸入要在容器內使用的使用者名稱。

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

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

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

   1. 針對**掛載點組態**，選擇**新增掛載點組態**以新增資料磁碟區的掛載點。您必須指定來源磁碟區和容器路徑。這些掛載點會傳遞至容器執行個體Docker daemon上的 。

   1. 針對**磁碟區組態**，選擇**新增磁碟區**以建立要傳遞至容器的磁碟區清單。輸入磁碟區**的名稱**和**來源路徑**，然後選擇**新增磁碟區**。

   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** (編輯)。完成後，請選擇**建立任務定義**。