

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

# Amazon ECS 獨立任務
<a name="standalone-tasks"></a>

當您的應用程式執行一些工作，然後停止，例如批次程序時，您可以將應用程式做為任務執行。如果您想要執行任務一次，您可以使用 主控台、 AWS CLI、 APIs 或 SDKs。

如果需要以速率、Cron 或一次性排程為基礎執行應用程式，可以使用 EventBridge 排程器建立排程。

## 任務工作流程
<a name="task-workflow"></a>

當您啟動 Amazon ECS 任務 (獨立任務或 Amazon ECS 服務) 時，系統會建立任務並最初將其移至 `PROVISIONING` 狀態。當任務處於 `PROVISIONING` 狀態時，任務與容器都不存在，因為 Amazon ECS 需要尋找運算容量來置放任務。

Amazon ECS 會根據您的啟動類型或容量提供者組態，為您的任務選取適當的運算容量。Fargate 與 EC2 都可以搭配容量提供者及容量提供者策略使用。使用 Fargate 時，無需考慮佈建、設定與擴展叢集容量。Fargate 會為您的任務處理所有基礎設施管理。對於 EC2，您可以藉由將 Amazon EC2 執行個體註冊至叢集來管理叢集容量，也可以使用叢集自動擴展功能來簡化運算容量管理。叢集自動擴展負責動態擴展叢集容量，讓您可以專注於執行任務。Amazon ECS 會根據您在任務定義中指定的需求，例如 CPU 與記憶體，以及置放限制條件與策略，來決定任務置放位置。如需詳細資訊，請參閱[Amazon ECS 如何在容器執行個體上置放任務](task-placement.md)。

如果您使用已啟用受管擴展的容量提供者，由於運算容量不足而無法啟動的任務會移至 `PROVISIONING` 狀態，而不會立即失敗。找到用於置放任務的容量後，Amazon ECS 會佈建必要的附件，例如 `awsvpc` 模式中任務的彈性網路介面 (ENI)。該附件會使用 Amazon ECS 容器代理程式來提取容器映像，然後啟動容器。佈建完成且相關容器啟動後，Amazon ECS 會將任務移至 `RUNNING` 狀態。如需有關任務狀態的資訊，請參閱 [Amazon ECS 任務生命週期](task-lifecycle-explanation.md)。

# 將應用程式作為 Amazon ECS 任務執行
<a name="standalone-task-create"></a>

您可以透過 AWS 管理主控台為一次性程序建立任務。

**建立獨立任務 (AWS 管理主控台)**

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

1. Amazon ECS 主控台可讓您從叢集詳細資訊頁面或任務定義修訂版清單建立獨立任務。根據選擇的資源頁面，使用下列步驟建立獨立任務。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/standalone-task-create.html)

1. 在**現有叢集**欄位中選擇叢集。

   選擇**建立叢集**以在新叢集上執行任務

1. 選擇任務在叢集基礎結構中的分佈方式。在**運算組態**下，選擇選項。若要使用容量提供者策略，必須在叢集層級設定容量提供者。

   如果尚未將叢集設定為使用容量提供者，請改用啟動類型。

   如果想要在 Amazon ECS 受管執行個體上執行工作負載，必須使用容量提供者策略選項。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/standalone-task-create.html)

1. 在**部署組態**下，執行下列動作：

   1. 在**任務定義**欄位中輸入任務定義。
**重要**  
主控台會驗證選擇，以確保所選任務定義系列和修訂與定義的運算組態相容。

   1. 針對 **Desired tasks** (所需任務)，輸入要啟動的任務數目。

   1. 在**任務群組**欄位中輸入任務群組名稱。

1. 如果任務定義使用 `awsvpc` 網路模式，請展開**聯網**。使用下列步驟以指定自訂組態。

   1. 針對 **VPC**，選擇要使用的 VPC。

   1. 針對**子網路**，在 VPC 中選擇一個或多個子網路，而任務排程器在放置任務時會考慮該 VPC。

   1. 在**安全群組**中，您可以選擇現有的安全群組，或建立新的安全群組。若要使用現有的安全群組，選擇該安全群組並移至下一個步驟。若要建立新的安全群組，請選擇 **建立新安全群組**。您必須指定安全群組名稱、描述，然後為該安全群組新增一條或更多傳入規則。

   1. 針對 **Public IP** (公有 IP)，選擇是否為任務的彈性網路界面 (ENI) 自動指派公有 IP 地址。

      AWS Fargate 在公有子網路中執行時，任務可以指派公有 IP 地址，以便他們有網際網路的路由。無法使用此欄位將公有 IP 指派給 EC2 任務。如需詳細資訊，請參閱 [Fargate 的 Amazon ECS 任務聯網選項](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/fargate-task-networking.html)，以及[為 Amazon ECS 任務配置網路介面](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-networking-awsvpc.html)。

1. 如果任務使用的資料磁碟區與部署時的組態相容，則可透過展開**磁碟區**區段對磁碟區進行設定。

   磁碟區名稱與磁碟區類型會在建立任務定義修訂版時設定，且無法在執行獨立任務時變更。若要更新磁碟區名稱與類型，必須建立新的任務定義修訂版，並使用新修訂版執行任務。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/standalone-task-create.html)

1. (選用) 若要使用預設以外的任務置放策略，請展開**任務置放**，然後從下列選項中選擇。

    如需詳細資訊，請參閱[Amazon ECS 如何在容器執行個體上置放任務](task-placement.md)。
   + **AZ 平衡分散** - 在可用區域及可用區域中的容器執行個體之間分散任務。
   + **AZ 平衡 BinPack** - 使用最低可用記憶體，在可用區域及可用區域中的容器執行個體之間分散任務。
   + **BinPack** - 根據最低可用的 CPU 或記憶體數分散任務。
   + **每個主機一個任務** - 在每個容器執行個體上最多置放一個服務的任務。
   + **自訂** – 定義自己的任務置放策略。

   如果選擇**自訂**，則請定義置放任務的演算法，以及在任務置放期間考慮的規則。
   + 在**策略**下，針對**類型**和**欄位**，選擇演算法以及要用於演算法的實體。

     您最多可新增 5 項策略。
   + 在 **Constraint** (限制條件)，針對 **Type** (類型) 和 **Expression** (運算式)，選擇要用於限制條件的規則與屬性。

     例如，若要設定限制條件，以將任務置放在 T2 執行個體上，針對**運算式**，請輸入 **attribute:ecs.instance-type =\$1 t2.\$1**。

     您最多可新增 10 個限制條件。

1. (選用) 若要覆寫任務 IAM 角色或任務定義中定義的任務執行角色，請展開 **Task overrides** (任務覆寫)，然後完成下列步驟：

   1. 在**任務角色**中，為此任務選擇 IAM 角色。如需詳細資訊，請參閱[Amazon ECS 任務 IAM 角色](task-iam-roles.md)。

      僅顯示具有 `ecs-tasks.amazonaws.com` 信任關係的角色。如需為您的任務建立 IAM 角色的說明，請參閱 [建立任務 IAM 角色](task-iam-roles.md#create_task_iam_policy_and_role)。

   1. 在**任務執行角色**中，選擇任務執行角色。如需詳細資訊，請參閱[Amazon ECS 任務執行 IAM 角色](task_execution_IAM_role.md)。

1. (選用) 若要覆寫容器命令和環境變數，請展開 **Container Overrides** (容器覆寫)，然後展開容器。
   +  若要將命令傳送至任務定義命令以外的容器，針對 **Command override** (命令複寫)，請輸入 Docker 命令。
   + 若要新增環境變數，選擇 **Add Environment Variable** (新增環境變數)。針對 **Key** (索引鍵)，輸入您的環境變數的名稱。針對 **Value** (值)，為您的環境值輸入一個字串值 (未使用雙引號 (`" "`) 括住)。

     AWS 以雙引號 (" ") 括住字串，並以下列格式將字串傳遞至容器：

     ```
     MY_ENV_VAR="This variable contains a string."
     ```

1. (選用) 為協助識別您的任務，請展開 **Tags** (標籤) 區段，然後設定標籤。

   若要讓 Amazon ECS 使用叢集名稱和任務定義標籤，自動標記所有新啟動的任務，請選取**開啟 Amazon ECS 受管標籤**，然後選取**任務定義**。

   新增或移除標籤。
   + [新增標籤] 選擇**新增標籤**，然後執行下列操作︰
     + 在**索引鍵**中，輸入索引鍵名稱。
     + 在**值**中，進入索引鍵值。
   + [移除標籤] 在標籤旁邊，選擇**移除標籤**。

1. 選擇**建立**。

# 使用 Amazon EventBridge 排程器排程 Amazon ECS 任務
<a name="tasks-scheduled-eventbridge-scheduler"></a>

EventBridge 排程器是無伺服器排程器，可讓您從單一受管的中央服務建立、執行及管理任務。其提供與事件匯流排和規則無關的一次性和週期性排程功能。EventBridge 排程器具有高度可自訂性，並透過 EventBridge 排程規則改善可擴展性，提供更廣泛的目標 API 操作和 AWS 服務。EventBridge 排程器提供下列排程，您可以在 EventBridge 排程器主控台中為您的任務設定這些排程：
+ 速率型 
+ Cron 型

  您可以在任何時區中設定 Cron 型排程。
+ 一次性排程

  您可以在任何時區設定一次性排程。

您可以使用 Amazon EventBridge 排程器排程 Amazon ECS。

雖然您可以在 Amazon ECS 主控台中建立排程任務，但目前 EventBridge 排程器主控台提供更多功能。

在排程任務之前，請完成以下步驟：

1. 使用 VPC 主控台取得執行任務所在的子網路 ID 以及子網路的安全群組 ID。如需詳細資訊，請參閱《*Amazon* [VPC 使用者指南》中的 VPC 的子網路](https://docs.aws.amazon.com/vpc/latest/userguide/configure-subnets.html)，以及[AWS 使用安全群組控制資源的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)。

1. 設定 EventBridge 排程器執行角色。如需詳細資訊，請參閱《Amazon EventBridge 排程器使用者指南》**中的[設定執行角色](https://docs.aws.amazon.com/scheduler/latest/UserGuide/setting-up.html#setting-up-execution-role)。

1. 若要使用容量提供者策略執行任務，容量提供者必須與叢集相關聯。

**使用主控台建立新排程**

1. 前往 [https://console.aws.amazon.com/scheduler/home](https://console.aws.amazon.com/scheduler/home/) 開啟 Amazon EventBridge 排程器。

1.  在**排程**頁面上，選擇**建立排程**。

1.  在**指定排程詳細資訊**頁面的**排程名稱和描述**區段中，執行以下動作：

   1. 在**排程名稱**中，輸入排程的名稱，例如 **MyTestSchedule**。

   1. (選用) 在**描述**中，輸入對排程的描述，例如 **TestSchedule**。

   1. 在**排程群組**欄位中選擇排程群組。如果您沒有群組，請選擇**預設值**。若要建立排程群組，請選擇**建立自己的排程**。

      您可以使用排程群組，為不同群組的排程加上標籤。

1. 選擇排程選項。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

1. (選用) 如果您在上一個步驟中選擇**週期性排程**，請在**時間範圍**區段執行以下動作：

   1. 針對**時區**選擇時區。

   1. 對於**開始日期和時間**，依 `YYYY/MM/DD` 格式輸入有效日期，接著依 24 小時的 `hh:mm` 格式指定時間戳記。

   1. 對於**結束日期和時間**，依 `YYYY/MM/DD` 格式輸入有效日期，接著依 24 小時的 `hh:mm` 格式指定時間戳記。

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

1. 在**選取目標**頁面上，執行下列動作：

   1. 選擇**所有 API**，然後在搜尋方塊中輸入 **ECS**。

   1. 選取 **Amazon ECS**。

   1. 在搜尋方塊中，輸入 **RunTask**，然後選擇 **RunTask**。

   1. 在 **ECS 叢集**中，選擇叢集。

   1. 在 **ECS 任務**中，選擇要用於任務的任務定義。

   1. 選擇任務在叢集基礎結構中的分佈方式。展開**運算選項**區段，然後選擇下列其中一個選項    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. 在**子網路**中，輸入要在其中執行任務的子網路 ID。

   1. 在**安全群組**中，輸入子網路的安全群組 ID。

   1. (選用) 若要使用預設以外的任務置放策略，請展開**置放限制條件**，然後輸入限制條件。

       如需詳細資訊，請參閱[Amazon ECS 如何在容器執行個體上置放任務](task-placement.md)。

   1. (選用) 為協助識別您的任務，請在**標籤**下設定標籤。

      若要讓 Amazon ECS 使用任務定義標籤，自動標記所有新啟動的任務，請選取**啟用 Amazon ECS 受管標籤**。

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

1. 在**設定**頁面執行以下動作：

   1. 若要開啟排程，請在**排程狀態**底下切換到**啟用排程**。

   1. 若要設定排程的重試政策，請在**重試政策和無效字母佇列 (DLQ)** 底下執行以下動作：
      + 切換到**重試**。
      + 在**事件的最大保留時間**中，輸入 EventBridge 排程器保留未處理事件的最大**時數**和**分鐘數**。
      + 時間最長可設為 24 小時。
      + 針對**重試次數上限**，輸入目標傳回錯誤時，EventBridge 排程器重新嘗試執行排程的次數上限。

         最大值為重試 185 次。

      設定好重試政策後，如果排程無法調用其目標，EventBridge 排程器會重新執行排程。一旦設定此功能，您就必須設定排程的最長保留時間和重試次數。

   1. 選擇 EventBridge 排程器儲存未交付事件的位置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/tasks-scheduled-eventbridge-scheduler.html)

   1. 若要使用由客戶管理的金鑰加密您的目標輸入，請在**加密**底下選擇**自訂加密設定 (進階)**。

      如果選擇此選項，請輸入現有的 KMS 金鑰 ARN，或選擇**建立 AWS KMS key**，以導覽至 AWS KMS 控制台。如需 EventBridge 排程器如何加密靜態資料的詳細資訊，請參閱《Amazon EventBridge 排程器使用者指南》中的[靜態加密](https://docs.aws.amazon.com/scheduler/latest/UserGuide/encryption-rest.html)**。

   1. 對於**許可**，請選擇**使用現有角色**，然後選取角色。

      若要讓 EventBridge 排程器為您建立新的執行角色，請選擇**為此排程建立新角色**。接著輸入**角色名稱**。如果您選擇此選項，EventBridge 排程器會將範本化目標所需的必要許可與角色連接。

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

1.  在**檢閱和建立排程**頁面上，檢閱排程的詳細資訊。在每個區段中選擇**編輯**，即可返回該步驟並編輯其詳細資訊。

1. 選擇**建立排程**。

   您可以在**排程**頁面檢視新建立和現有的排程。在**狀態**欄底下，確認您的新排程狀態為**已啟用**。

## 後續步驟
<a name="eventbridge-scheduler-next-steps"></a>

您可以使用 EventBridge 排程器主控台或 AWS CLI 來管理排程。如需詳細資訊，請參閱《Amazon EventBridge 排程器使用者指南》**中的[管理排程](https://docs.aws.amazon.com/scheduler/latest/UserGuide/managing-schedule.html)。

# 停止 Amazon ECS 任務
<a name="standalone-task-stop"></a>

若不再需要讓獨立任務持續執行，可以將其停止。Amazon ECS 主控台可讓您輕鬆停止一項或多項任務。

您無法重新啟動已停止的獨立任務。

如果想要停止服務，請參閱[使用主控台刪除 Amazon ECS 服務](delete-service-v2.md)。

**停止獨立任務 (AWS 管理主控台)**

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

1. 在導覽窗格中，選擇**叢集**。

1. 在**叢集**頁面上，選擇要導覽至「叢集詳細資訊」頁面的叢集。

1. 在叢集詳細資訊頁面上，選擇**任務**索引標籤。

1. 您可以使用**篩選啟動類型**清單，依啟動類型篩選任務。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/AmazonECS/latest/developerguide/standalone-task-stop.html)