

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

# 使用主控台建立 Amazon ECS 任務定義
<a name="create-task-definition"></a>

建立任務定義，以便您定義以任務或服務方式執行的應用程式。

在為外部啟動類型建立任務定義時，您需要使用 JSON 編輯器建立任務定義，並將 `requireCapabilities` 參數設定為 `EXTERNAL`。

您可以使用控台建立任務定義，也可以透過指定 JSON 檔案建立任務定義。使用 JSON 編輯器時，您可以讓 Amazon Q 提供建議。如需詳細資訊，請參閱[使用 Amazon Q Developer 在 Amazon ECS 主控台中提供任務定義建議](using-amazon-q.md)

## JSON 驗證
<a name="json-validate-for-create"></a>

Amazon ECS 主控台 JON 編輯器會對 JSON 檔案的以下方面進行驗證：
+ 該檔案為有效的 JSON 檔案。
+ 該檔案不包含任何無關的金鑰。
+ 該檔案包含 `familyName` 參數。
+ `containerDefinitions` 下至少會有一個項目。

## CloudFormation 堆疊
<a name="cloudformation-stack"></a>

下列行為適用於 2023 年 1 月 12 日之前在新版 Amazon ECS 主控台中建立的任務定義。

建立任務定義後，Amazon ECS 主控台會自動建立名稱開頭為 `ECS-Console-V2-TaskDefinition-` 的 CloudFormation 堆疊。如果您使用 AWS CLI 或 AWS 開發套件取消註冊任務定義，則必須手動刪除任務定義堆疊。如需詳細資訊，請參閱 *CloudFormation User Guide* 中的 [Deleting a stack](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-console-delete-stack.html)。

在 2023 年 1 月 12 日之後建立的任務定義不會自動建立 CloudFormation 堆疊。

## 程序
<a name="create-task-procedure"></a>

------
#### [ Amazon ECS console ]

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽窗格中，選擇 **Task Definitions** (任務定義)。

1. 在**建立新任務定義**功能表上，選擇**建立新任務定義**。

1. 在**任務定義系列**中，請為任務定義指定唯一名稱。

1. 在**啟動類型**中，選擇應用程式環境。主控台預設為 **AWS Fargate** (即無伺服器模式)。Amazon ECS 會使用此值來執行驗證，確保任務定義參數對基礎結構類型有效。

1. 對於 **Operating system/Architecture** (作業系統/架構)，選擇適用於任務的作業系統和 CPU 架構。

   若要在 64 位元 ARM 架構上執行任務，請選擇 **Linux/ARM64**。如需詳細資訊，請參閱[執行時間平台](task_definition_parameters.md#runtime-platform)。

   若要在 Windows 容器上執行 **AWS Fargate** 任務，請選擇支援的 Windows 作業系統。如需詳細資訊，請參閱[作業系統與架構](fargate-tasks-services.md#fargate-task-os)。

1. 在 **Task size** (任務大小) 中，選擇要為任務預留的 CPU 和記憶體大小。CPU 值指定為 vCPU，記憶體則指定為 GB。

   對於在 Fargate 上託管的任務，下表顯示了有效的 CPU 和記憶體組合。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-task-definition.html)

   對於使用 EC2 執行個體或外部執行個體的任務，支援的任務 CPU 數值範圍介於 128 個 CPU 單位 (0.125 個 vCPU) 至 196608 個 CPU 單位 (192 個 vCPU) 之間。

   若要指定以 GB 為單位的記憶體值，請在值之後輸入 **GB**。例如，若要將**記憶體值**設定為 3GB，請輸入 **3GB**。
**注意**  
Windows 容器會忽略任務層級的 CPU 和記憶體參數。

1. 在 **Network mode** (網路模式) 中選擇要使用的網路模式。預設網路模式為 **awsvpc** 模式。如需詳細資訊，請參閱 [Amazon ECS 任務聯網](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking.html)。

   若選擇**橋接**模式，請在**連接埠映射**下方的**主機連接埠**欄位中，輸入要為容器預留的容器執行個體連接埠號碼。

1. （選用） 展開**任務角色**區段，以設定任務的 AWS Identity and Access Management (IAM) 角色：

   1. 在 **Task role** (任務角色) 中，選擇要指派給任務的 IAM 角色。任務 IAM 角色為任務中的容器提供呼叫 AWS API 操作的許可。

   1. 在**任務執行角色**中，選擇角色。

      如需有關何時使用任務執行角色的資訊，請參閱 [Amazon ECS 任務執行 IAM 角色](task_execution_IAM_role.md)。如果您不需要該角色，請選擇**無**。

1. (選用) 展開**任務置放**區段，新增置放限制條件。任務置放限制條件可讓您使用內建或自訂屬性，篩選用於置放任務的容器執行個體。

1. (選用) 展開**故障注入**區段，啟用故障注入功能。您可以透過故障注入功能，測試應用程式在特定故障案例中的應對表現。

1. 請為您任務定義中要定義的每個容器完成以下步驟。

   1. 在 **Name** (名稱) 中，輸入容器的名稱。

   1. 在 **Image URI** (映像 URI) 中，輸入要用來啟動容器的映像。僅可使用 Amazon ECR 公共映像庫登錄檔名稱來指定 Amazon ECR 公共映像庫登錄檔中的映像。例如，若指定 `public.ecr.aws/ecs/amazon-ecs-agent:latest`，則會使用在 Amazon ECR 公共映像庫上託管的 Amazon Linux 容器。對於所有其他儲存庫，請使用 `repository-url/image:tag` 或 `repository-url/image@digest` 格式來指定儲存庫。

   1. 如果您的映像位於 Amazon ECR 以外的私有登錄中，請在**私有登錄**下，開啟**私有登錄身分驗證**。然後，在 **Secrets Manager ARN 或名稱**中，輸入密碼的 Amazon Resource Name (ARN)。

   1. 對於**必要容器**，如果任務定義已定義兩個或更多容器，則可指定容器是否應被視為必要容器。如果某個容器被標記為**必要**，則若該容器停止，任務也將停止。每個任務定義必須至少包含一個基本容器。

   1. 連接埠映射允許容器存取主機上的連接埠，以傳送或接收流量。在 **Port mappings** (連接埠映射) 下執行以下其中一項動作：
      + 若您使用 **awsvpc** 網路模式，請在 **Container port** (容器連接埠) 和 **Protocol** (通訊協定) 中，選擇要用於容器的連接埠映射。
      + 若您使用 **bridge** 網路模式，請在 **Container port** (容器連接埠) 和 **Protocol** (通訊協定) 中，選擇要用於容器的連接埠映射。

      選擇 **Add more port mappings** (新增更多連接埠映射)，以指定其他容器連接埠映射。

   1. 若要授予容器對其根檔案系統的唯讀存取權限，請在**唯讀根檔案系統**中選取**唯讀**。

   1. (選用) 若要定義與**資源配置限制**下的任務層級值不同的容器層級 CPU、GPU 和記憶體限制，請執行下列動作：
      + 在 **CPU** 欄位中，輸入 Amazon ECS 容器代理程式為容器預留的 CPU 單位數量。
      + 在 **GPU** 中，輸入容器執行個體的 GPU 單元數量。

        支援 GPU 的 Amazon EC2 執行個體，每個 GPU 都有 1 個 GPU 單元。如需詳細資訊，請參閱[GPU 工作負載的 Amazon ECS 任務定義](ecs-gpu.md)。
      + 在**記憶體硬性限制**欄位中，輸入要分配給容器的記憶體容量 (以 GB 為單位)。如果容器嘗試超過硬限制，容器將會停止。
      + 由於 Docker 20.10.0 或更新版本常駐程式會為容器預留最低 6 MiB 的記憶體，因此為容器指定的記憶體不可少於 6 MiB。

        由於 Docker 19.03.13-ce 或更早版本常駐程式會為容器預留最低 4 MiB 的記憶體，因此為容器指定的記憶體不可少於 4 MiB。
      + 在**記憶體軟限制**中，輸入為容器保留的記憶體軟限制 (GB)。

        當系統記憶體爭用時，Docker 會嘗試將容器記憶體保持在此軟性限制。如果您未指定任務層級的記憶體，您必須為**記憶體硬限制**和**記憶體軟限制**之一 (或兩者) 指定非零整數。如果同時指定兩者，**記憶體硬限制**必須大於**記憶體軟限制**。

        Windows 容器不支援此功能。

   1. (選用) 展開**環境變數**區段，以指定要注入到容器中的環境變數。您可以使用鍵值對單獨指定環境變數，也可以透過指定 Amazon S3 儲存貯體中託管的環境變數檔案來批量指定環境變數。如需有關如何設定環境變數檔案格式的資訊，請參閱 [將個別環境變數傳遞至 Amazon ECS 容器](taskdef-envfiles.md)。

      在指定秘密儲存的環境變數時，請在**金鑰**欄位中輸入秘密名稱。然後，在 **ValueFrom** 欄位中輸入 Systems Manager Parameter Store 秘密或 Secrets Manager 秘密的完整 ARN 

   1. (選用) 選擇**使用日誌收集**選項來指定日誌組態。每個可用的日誌驅動程式都有要指定的日誌驅動程式選項。預設選項會將容器日誌傳送至 Amazon CloudWatch Logs。其他日誌驅動程式選項是透過使用 設定 AWS FireLens。如需詳細資訊，請參閱[將 Amazon ECS 日誌傳送至 AWS 服務或 AWS Partner](using_firelens.md)。

      下方更詳細地描述了每個容器日誌目的地。
      + **Amazon CloudWatch** – 將任務設定為將容器日誌傳送至 CloudWatch Logs。系統會提供預設日誌驅動程式選項，用來代表您建立 CloudWatch 日誌群組。若要指定不同的日誌群組名稱，請變更驅動程式選項值。
      + **將日誌匯出至 Splunk**：設定任務以將容器日誌傳送至 Splunk 驅動程式，此驅動程式會將日誌傳送至遠端服務。您必須輸入 Splunk Web 服務的 URL。Splunk 權杖被指定為秘密選項，因其可被視為敏感資料。
      + **將日誌匯出至 Amazon Data Firehose** – 將任務設定為將容器日誌傳送至 Firehose。系統會提供預設日誌驅動程式選項，用於將日誌傳送至 Firehose 傳送串流。若要指定不同的交付串流名稱，請變更驅動程式選項值。
      + **將日誌匯出至 Amazon Kinesis Data Streams** – 將任務設定為將容器日誌傳送至 Amazon Kinesis Data Streams。系統會提供預設日誌驅動程式選項，用於將日誌傳送至 Kinesis Data Streams 串流。若要指定不同的串流名稱，請變更驅動程式選項值。
      + **將日誌匯出至 Amazon OpenSearch Service** – 將任務設定為將容器日誌傳送至 OpenSearch Service 網域。務必提供日誌驅動程式選項。
      + **將日誌匯出至 Amazon S3** – 將任務設定為將容器日誌傳送至 Simple Storage Service (Amazon S3) 儲存貯體。系統會提供預設日誌驅動程式選項，但您必須指定有效的 Amazon S3 儲存貯體名稱。

   1. (選用) 設定其他容器參數。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-task-definition.html)

   1. (選用) 選擇 **Add more containers** (新增更多容器)，以新增其他容器至任務定義。

1. (選用) **儲存**區段用於為託管於 Fargate 上的任務擴展暫時性儲存容量。您也可以使用此區段來新增任務的資料磁碟區組態。

   1. 若要將 Fargate 任務的可用暫時性儲存擴展到大於 20 gibibytes (GiB) 的預設值，請在 **Amount** (數量) 中輸入值，可輸入的最大數值為 200 GiB。

1. (選用) 若要為任務定義新增資料磁碟區組態，請選擇**新增磁碟區**，然後遵循以下步驟。

   1. 在 **Volume name** (磁碟區名稱) 中，輸入資料磁碟區的名稱。在建立容器掛載點時會使用資料磁碟區名稱。

   1. 在**磁碟區組態**欄位中，選擇是要在建立任務定義時設定磁碟區，還是在部署期間設定磁碟區。
**注意**  
在建立任務定義時，可設定的磁碟區包括綁定掛載、Docker、Amazon EFS 與 Amazon FSx for Windows File Server。在執行任務或建立/更新服務時，可於部署階段設定的磁碟區包括 Amazon EBS。

   1. 在**磁碟區類型**欄位中，選擇與您所選組態類型相容的磁碟區類型，然後設定磁碟區類型。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/create-task-definition.html)

1. 若要從另一個容器新增磁碟區，請選擇**新增磁碟區來源**，然後設定下列項目：
   + 在**容器**中，選擇容器。
   + 在**來源**中，選擇包含您要掛載的磁碟區的容器。
   + 在**唯讀**中，選取容器是否具有對磁碟區的唯讀存取權。

1. （選用） 若要使用 AWS Distro for OpenTelemetry整合來設定應用程式追蹤和指標收集設定，請展開**監控**，然後選取**使用指標收集**來收集您的任務指標，並傳送至 Amazon CloudWatch 或 Amazon Managed Service for Prometheus。選取此選項時，Amazon ECS 會建立 AWS Distro for OpenTelemetry預先設定為傳送應用程式指標的容器附屬。如需詳細資訊，請參閱[使用應用程式指標關聯 Amazon ECS 應用程式效能](metrics-data.md)。

   1. 若選取 **Amazon CloudWatch**，您的自定應用程式指標將作為自定指標路由至 CloudWatch。如需詳細資訊，請參閱[將應用程式指標匯出至 Amazon CloudWatch](application-metrics-cloudwatch.md)。
**重要**  
若將應用程式指標匯出至 Amazon CloudWatch，您的任務定義需要具有所需許可的任務 IAM 角色。如需詳細資訊，請參閱[AWS Distro for OpenTelemetry 與 Amazon CloudWatch 整合所需的 IAM 許可](application-metrics-cloudwatch.md#application-metrics-cloudwatch-iam)。

   1. 若您選取 **Amazon Managed Service and Prometheus (Prometheus libraries instrumentation)** (Amazon Managed Service for Prometheus (Prometheus 程式庫檢測))，則您的任務層級 CPU、記憶體、網路，以及儲存指標和自定應用程式指標，都將路由至 Amazon Managed Service for Prometheus。在**工作空間遠端寫入端點**欄位中，輸入 Prometheus 工作空間的遠端寫入端點 URL。在**抓取目標**欄位中，輸入 AWS Distro for OpenTelemetry 收集器可用於抓取指標資料的主機與連接埠。如需詳細資訊，請參閱[將應用程式指標匯出至 Amazon Managed Service for Prometheus](application-metrics-prometheus.md)。
**重要**  
若將應用程式指標匯出至 Amazon Managed Service for Prometheus，您的任務定義需要具有所需許可的任務 IAM 角色。如需詳細資訊，請參閱[AWS Distro for OpenTelemetry 與 Amazon Managed Service for Prometheus 整合所需的 IAM 許可](application-metrics-prometheus.md#application-metrics-prometheus-iam)。

   1. 若選取 **Amazon Managed Service and Prometheus (OpenTelemetry 檢測)**，則任務層級 CPU、記憶體、網路和儲存指標以及自訂應用程式指標，都將路由至 Amazon Managed Service for Prometheus。在**工作空間遠端寫入端點**欄位中，輸入 Prometheus 工作空間的遠端寫入端點 URL。如需詳細資訊，請參閱[將應用程式指標匯出至 Amazon Managed Service for Prometheus](application-metrics-prometheus.md)。
**重要**  
若將應用程式指標匯出至 Amazon Managed Service for Prometheus，您的任務定義需要具有所需許可的任務 IAM 角色。如需詳細資訊，請參閱[AWS Distro for OpenTelemetry 與 Amazon Managed Service for Prometheus 整合所需的 IAM 許可](application-metrics-prometheus.md#application-metrics-prometheus-iam)。

1. (選用) 展開 **Tags** (標籤) 區段，將標籤作為鍵值對新增至任務定義中。
   + [新增標籤] 選擇**新增標籤**，然後執行下列操作︰
     + 在**索引鍵**中，輸入索引鍵名稱。
     + 在**值**中，進入索引鍵值。
   + [移除標籤] 在標籤旁邊，選擇 **移除標籤**。

1. 選擇**建立**來註冊任務定義。

------
#### [ Amazon ECS console JSON editor ]

1. 開啟主控台，網址為 [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)。

1. 在導覽窗格中，選擇 **Task Definitions** (任務定義)。

1. 在**建立新任務定義**功能表上，選擇**使用 JSON 建立新任務定義**。

1. 在 JSON 編輯工具方塊中，編輯您的 JSON 檔案，

   JSON 必須通過 [JSON 驗證](#json-validate-for-create) 中指定的驗證檢查。

1. 選擇**建立**。

------