更新運算環境 - AWS Batch

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

更新運算環境

建立使用 EC2 資源的運算環境後,您可以直接更新運算環境的許多設定。不過,變更某些設定需要 AWS Batch 取代運算環境中的執行個體。

更新 AWS Fargate 運算環境

對於使用 Fargate 資源的運算環境,您可以更新以下內容。

  • securityGroupIds

  • subnets

  • desiredvCpus

  • maxvCpus

  • minvCpus

AWS Batch 有兩個更新機制。第一個是擴展更新,其中從運算環境新增或移除執行個體。第二個是基礎設施更新,其中會取代運算環境中的執行個體。基礎設施更新需要比擴展更新更長的時間。

如果您使用 更新運算環境 AWS Batch,僅變更這些設定會導致擴展更新:所需 vCPUs (desiredvCpus)、最大 vCPUs (maxvCpus)、最小 vCPUs (minvCpus)、服務角色 (serviceRole) 和狀態 ()state

注意

當您更新desiredvCpus設定時,該值必須介於 minvCpusmaxvCpus值之間。

此外,更新desiredvCpus的值必須大於或等於目前的desiredvCpus值。如需詳細資訊,請參閱更新desiredvCpus設定時的錯誤訊息

如果在 中變更下列任何設定 UpdateComputeEnvironment API 動作, AWS Batch 啟動基礎設施更新。基礎設施更新需要將服務角色設定為 AWSServiceRoleForBatch(預設),且BEST_FIT不支援配置策略為 SPOT_CAPACITY_OPTIMIZEDBEST_FIT_PROGRESSIVESPOT_PRICE_CAPACITY_OPTIMIZED。除了服務角色之外,也可以針對基礎設施更新變更可用於擴展更新的所有設定。

注意

我們建議您在大多數執行個體中使用 SPOT_PRICE_CAPACITY_OPTIMIZED,而不是 SPOT_CAPACITY_OPTIMIZEDn。

在基礎設施更新期間,運算環境的狀態會變更為 UPDATING。使用更新的設定啟動新執行個體。新任務已排程在新的執行個體上。目前正在執行的任務會根據基礎設施更新政策進行分發。如需詳細資訊,請參閱參考 UpdatePolicy中的 UpdateComputeEnvironment和 。 AWS Batch API

UpdatePolicy資料類型中,請考慮下列案例:

注意

在這些情況下,下列為 true。當執行個體終止時,執行中的任務會停止。根據預設,這些任務不會重試。若要在執行個體終止後重試其中一個任務,請設定任務重試策略。如需詳細資訊,請參閱《AWS Batch 使用者指南》中的 自動化任務重試

  • 如果terminateJobsOnUpdate設定設為 true,執行中的任務會在基礎設施更新期間終止。系統會忽略jobExecutionTimeoutMinutes設定。

  • 如果terminateJobsOnUpdate設定設為 false,任務可以在基礎設施更新發生後執行額外的時間。此額外時間是在 jobExecutionTimeoutMinutes設定中設定。根據預設,jobExecutionTimeoutMinutes設定為 30 分鐘。

隨著運算環境中的容量變得可用,新的執行個體會以更新的設定啟動,並在新的執行個體上啟動任務。由於在具有舊設定的執行個體上完成所有任務,舊執行個體會終止。可用的容量代表所需的 數目 vCPUs 至少 vCPUs 低於最小執行個體類型 vCPUs 所需的 數目上限。

基礎設施更新

變更運算環境的某些設定需要基礎設施更新。如果變更下列任何設定,則會啟動基礎設施更新:

重要

運算環境必須使用AWSServiceRoleForBatch服務連結角色進行需要基礎設施更新的變更。

如果運算環境使用服務連結角色,則無法將其變更為使用一般IAM角色。同樣地,如果運算環境具有一般IAM角色,則無法將其變更為使用服務連結角色。因此,您只能對使用服務連結角色建立的運算環境執行基礎設施更新。

  • 配置策略 (allocationStrategy、 必須是 BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZEDSPOT_PRICE_CAPACITY_OPTIMIZED。 如果原始配置策略為 BEST_FIT,則不支援基礎設施更新。)

    注意

    我們建議您在大多數執行個體中使用 SPOT_PRICE_CAPACITY_OPTIMIZED,而不是 SPOT_CAPACITY_OPTIMIZEDn。

  • 出價百分比 (bidPercentage

  • EC2 組態 (ec2Configuration

  • 金鑰對 (ec2KeyPair

  • 影像 ID (imageId

  • 執行個體角色 (instanceRole

  • 執行個體類型 (instanceTypes

  • 啟動範本 (launchTemplate

  • 置放群組 (placementGroup

  • 安全群組 (securityGroupIds

  • VPC 子網路 (subnets

  • EC2 標籤 (tags

  • 運算環境類型 (type,可以是 EC2或 之一SPOT

  • 是否要更新至基礎設施更新 AWS Batch 期間 AMI支援的最新 。 updateToLatestImageVersion

更新 AMI ID

在基礎設施更新期間,運算環境的 AMI ID 可能會變更,這取決於是否AMIs在這三個設定中的任何一個中指定。AMIs 在 imageId(在 )computeResourcesimageIdOverride (在 ec2Configuration) 或 中指定的啟動範本中指定launchTemplate。假設這些設定中沒有指定 AMI IDs ,且updateToLatestImageVersion設定為 true。然後,任何基礎設施更新 AWS Batch 都會使用 AMI支援的最新 Amazon ECS最佳化。

如果在至少其中一個設定中指定 AMI ID,則更新取決於在更新之前提供的 AMI ID 是哪個設定。當您建立運算環境時,選取 AMI ID 的優先順序首先是啟動範本,然後是imageId設定,最後是imageIdOverride設定。不過,如果使用的 AMI ID 來自啟動範本,則更新 imageIdimageIdOverride設定不會更新 AMI ID。更新從啟動範本選取的 AMI ID 的唯一方法是更新啟動範本。如果啟動範本的版本參數為 $Default$Latest,則會評估指定啟動範本的預設或最新版本。如果預設選取不同的 AMI ID 或選取最新版本的啟動範本,則會在更新中使用該 AMI ID。

如果啟動範本未用於選取 AMI ID,則會使用在 imageIdimageIdOverride 參數中指定的 AMI ID。如果指定兩者,則會使用 imageIdOverride 參數中指定的 AMI ID。

假設運算環境使用 imageIdimageIdOverridelaunchTemplate 參數指定的 AMI ID,且您想要使用 AMI支援的最新 Amazon ECS最佳化 AWS Batch。然後,更新必須移除提供的設定AMIIDs。對於 imageId,這需要為該參數指定空字串。對於 imageIdOverride,這需要為 ec2Configuration 參數指定空字串。

如果 AMI ID 來自啟動範本,您可以透過下列 AWS Batch 其中一種方式變更為 支援的最新 Amazon AMI ECS最佳化:

  • launchTemplateIdlaunchTemplateName 參數指定空字串,以移除啟動範本。這會移除整個啟動範本,而不是單獨 AMI ID。

  • 如果更新版本的啟動範本未指定 AMI ID,則 updateToLatestImageVersion 參數必須設定為 true