

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

# 陣列任務
<a name="array_jobs"></a>

陣列任務為共用常見參數的任務，例如任務定義、vCPU 和記憶體。它以一組相關但獨立的基本任務的形式執行，這些任務可能會分散在多個主機，並且可能會同時執行。陣列任務是執行超平行任務的最有效方式，例如 Monte Carlo 模擬、參數掃描或大型轉譯任務。

AWS Batch 陣列任務的提交方式與一般任務相同。不過，您必須指定陣列大小 (2 至 10,000)，以定義陣列內應該執行的子任務數量。如果您提交陣列大小 1000 的任務，單一任務將執行並產生 1000 個子任務。陣列任務為參考或指標，用於管理所有的子任務。如此一來，您可以使用單一查詢來提交大型工作負載。`attemptDurationSeconds` 參數中指定的逾時會套用至每個子任務。父陣列任務沒有逾時。

當您提交陣列任務時，父陣列任務會取得正常 AWS Batch 的任務 ID。每個子任務都有相同的基本 ID。不過，子任務的陣列索引會附加到父 ID 的結尾，例如`example_job_ID:0`陣列的第一個子任務。

父陣列任務可以輸入 `SUBMITTED`、`FAILED`、 `PENDING`或 `SUCCEEDED` 狀態。當任何子任務更新為 `PENDING`時，陣列父任務會更新為 `RUNNABLE`。如需任務相依性的詳細資訊，請參閱 [任務相依性](job_dependencies.md)。

在執行時間，`AWS_BATCH_JOB_ARRAY_INDEX` 環境變數設為容器的對應任務陣列索引編號。第一個陣列任務索引編號為 `0`，後續嘗試會以遞增順序 （例如 1、2 和 3)。您可以使用此索引值，控制您陣列任務子系的區分方式。如需詳細資訊，請參閱[使用陣列任務索引來控制任務差異](array_index_example.md)。

對於陣列任務的相依性，您可以指定相依性類型，例如 `SEQUENTIAL` 或 `N_TO_N`。您可以指定 `SEQUENTIAL` 類型相依性 (不指定任務 ID)，讓每個子陣列任務從索引 0 開始依序完成。例如，如果您提交陣列大小 100 的陣列任務，並指定 `SEQUENTIAL` 類型的相依性，後續將產生 100 個子任務，必須等第一個子任務完成後，下一個子任務才會開始。下圖顯示 A 任務，陣列大小 10 的陣列任務。A 任務子索引的每個任務都相依於前一個子任務。A:1 任務必須等 A:0 任務完成後才會開始。

![\[Flowchart showing Job-A with sequential child jobs A:0 through A:9, connected by arrows.\]](http://docs.aws.amazon.com/zh_tw/batch/latest/userguide/images/sequential-dep.png)


您也可以指定 `N_TO_N` 類型相依性，以及陣列任務的任務 ID。如此一來，此任務的每個索引子系必須等待各相依性對應的索引子系完成後，才能開始。下圖顯示任務 A 和任務 B，兩個陣列任務的每個陣列大小為 10，000。B 任務子索引的每個任務相依於 A 任務的對應索引。B:1 任務必須等到 A:1 任務完成後才會開始。

![\[Two array jobs, Job-A and Job-B, with 10,000 indexed tasks each, showing N_TO_N dependency.\]](http://docs.aws.amazon.com/zh_tw/batch/latest/userguide/images/n-to-n-dep.png)


如果您取消或終止父陣列任務，所有子任務都會隨之取消或終止。您可以取消或終止個別子任務 （將它們移至 `FAILED` 狀態），而不會影響其他子任務。不過，如果子陣列任務失敗 （單獨使用，或透過手動取消或終止任務），父任務也會失敗。在此案例中，當所有子任務完成`FAILED`時，父任務會轉換為 。

如需搜尋和篩選陣列任務的詳細資訊，請參閱 [在任務佇列中搜尋任務](searching-filtering-jobs.md)。

**Topics**
+ [陣列任務工作流程的範例](example_array_job.md)
+ [使用陣列任務索引來控制任務差異](array_index_example.md)