運算環境 - AWS Batch

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

運算環境

任務佇列會對應至一或多個運算環境。運算環境包含用於執行容器化批次任務的 Amazon ECS 容器執行個體。特定計算環境也可以對應至一個或多個工作佇列。在工作佇列中,每個關聯的運算環境都有排程器使用的順序來決定準備好執行的工作將在何處執行。如果第一個計算環境的狀態為VALID且具有可用資源,則會將工作排程到該計算環境中的容器執行個體。如果第一個計算環境的狀態為INVALID或無法提供適當的計算資源,則排程器會嘗試在下一個計算環境上執行工作。

受管理運算環境

您可以使用受管運算環境來 AWS Batch 管理環境中運算資源的容量和執行個體類型。這是根據您在建立運算環境時定義的計算資源規格而定。您可以選擇使用 Amazon EC2 隨需執行個體和 Amazon EC2 競價型執行個體。或者,您也可以在受管理的運算環境中使用 Fargate 和 Fargate Spot 容量。使用 Spot 執行個體時,您可以選擇性地設定最高價格。如此一來,Spot 執行個體只會在競價型執行個體價格低於隨需價格的指定百分比時啟動。

重要

在 Windows containers on AWS Fargate上不支援 Fargate 端競價型執行個體。如果將工作提交至僅使用 Fargate Spot 運算環境的工作佇列,則會封鎖工作佇列。 FargateWindows

受管運算環境會將 Amazon EC2 執行個體啟動到您指定的 VPC 和子網路,然後在 Amazon ECS 叢集中註冊這些執行個體。Amazon EC2 執行個體需要外部網路存取權,才能與 Amazon ECS 服務端點通訊。某些子網路不提供具有公有 IP 地址的 Amazon EC2 執行個體。如果您的 Amazon EC2 執行個體沒有公有 IP 地址,則必須使用網路位址轉譯 (NAT) 來取得此存取權。如需詳細資訊,請參閱 《Amazon VPC 使用者指南》中的 NAT 閘道。如需如何建立 VPC 的詳細資訊,請參閱建立虛擬私有雲

根據預設, AWS Batch 受管運算環境會針對運算資源使用最新、核准的 Amazon ECS 最佳化 AMI 版本。不過,出於各種原因,您可能需要建立自己的 AMI 以用於受管理的運算環境。如需詳細資訊,請參閱 計算資源 AMI

注意

AWS Batch 建立之後,不會自動升級運算環境中的 AMI。例如,當 Amazon ECS 最佳化 AMI 的較新版本發佈時,它不會更新您運算環境中的 AMI。您必須負責客體作業系統的管理。這包括任何更新和安全性修補程式。您也必須負責安裝在運算資源上的任何其他應用程式軟體或公用程式。有兩種方法可以使用新 AMI 進行 AWS Batch 工作。原始方式是完成以下步驟:

  1. 新建內有新 AMI 的運算環境。

  2. 將運算環境新增至現有的任務佇列。

  3. 將較早的運算環境從任務佇列移除。

  4. 刪除較早的運算環境。

2022 年 4 月,增 AWS Batch 加了對更新計算環境的增強支援。如需詳細資訊,請參閱 更新運算環境。若要使用運算環境的增強型更新功能來更新 AMI,請遵循下列規則:

  • 請勿設定服務角色 (serviceRole) 參數,或將其設定為服AWSServiceRoleForBatch務連結角色。

  • 將配置策略 (allocationStrategy) 參數設定為BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDSPOT_PRICE_CAPACITY_OPTIMIZED

  • 將更新至最新映像版本 (updateToLatestImageVersion) 參數設定為true

  • 請勿在imageIdimageIdOverride(中 ec2Configuration) 或啟動範本 (launchTemplate) 中指定 AMI ID。在這種情況下,請 AWS Batch 選取啟動基礎設施更新時支援的 AWS Batch 最新 Amazon ECS 最佳化 AMI。或者,您可以在imageIdimageIdOverride參數中指定 AMI ID,或由LaunchTemplate屬性識別的啟動範本。變更任何這些屬性都會啟動基礎結構更新。如果在啟動範本中指定 AMI ID,則無法透過在imageIdimageIdOverride參數中指定 AMI ID 來取代它。只能透過指定不同的啟動範本來取代它。或者,如果啟動範本版本設定為$Default$Latest,則透過為啟動範本設定新的預設版本 (如果有的話$Default),或將新版本新增至啟動範本 (如果有的話$Latest)。

如果遵循這些規則,則啟動基礎結構更新的任何更新都會導致 AMI ID 被重新選取。如果啟動範本 (launchTemplate) 中的version設定設為$Latest$Default,則會在基礎結構更新時評估啟動範本的最新或預設版本,即使未更新也launchTemplate是如此。

建立多節點 parallel 工作時的考量

AWS Batch 建議您建立專用的運算環境,以執行多節點 parallel (MNP) 作業和非 MNP 工作。這是因為在受管理的運算環境中建立運算容量的方式所致。建立新的受管理運算環境時,如果您指定的minvCpu值大於零,則只 AWS Batch 會建立執行個體集區以用於非 MNP 工作。如果提交多節點 parallel 工作,則 AWS Batch 會建立新的執行個體容量以執行多節點 parallel 作業。如果在設定了minvCpusmaxvCpus值的相同計算環境中同時執行單節點和多節點 parallel 工作,則如果無法使用所需的計算資源, AWS Batch 則在建立執行新工作所需的計算資源之前,等待目前的工作完成。

未受管理的運算環境

在未受管運算環境中,由您管理自己的運算資源。您必須確認用於運算資源的 AMI 是否符合 Amazon ECS 容器執行個體 AMI 規格。如需詳細資訊,請參閱 運算資源 AMI 規格建立計算資源 AMI

注意

AWS 未受管理的運算環境不支援 Fargate 資源。

建立非受管運算環境之後,請使用 DescribeComputeEnvironmentsAPI 作業來檢視計算環境詳細資料。尋找與環境相關聯的 Amazon ECS 叢集,然後將您的容器執行個體手動啟動到該 Amazon ECS 叢集。

下列 AWS CLI 指令也提供 Amazon ECS 叢集 ARN。

$ aws batch describe-compute-environments \ --compute-environments unmanagedCE \ --query "computeEnvironments[].ecsClusterArn"

如需詳細資訊,請參閱《Amazon Elastic Container Service 開發人員指南》中的啟動 Amazon ECS 容器執行個體。啟動運算資源時,請指定資源向下列 Amazon EC2 使用者資料註冊的 Amazon ECS 叢集 ARN。以先前的命令取ecsClusterArn代叢集 ARN。

#!/bin/bash echo "ECS_CLUSTER=ecsClusterArn" >> /etc/ecs/ecs.config