更新運算環境 - AWS Batch

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

更新運算環境

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

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

  • securityGroupIds

  • subnets

  • desiredvCpus

  • maxvCpus

  • minvCpus

AWS Batch有兩種更新機制。第一個是擴展更新,其中執行個體會從運算環境中新增或移除。第二個是基礎結構更新,會取代運算環境中的執行個體。基礎結構更新所花費的時間比擴展更新要長得多。

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

注意

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

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

如果在 UpdateComputeEnvironmentAPI 動作中變更了下列任何設定,請AWS Batch啟動基礎結構更新。基礎結構更新需要將服務角色設定為 AWSServiceRoleForBatch(預設值),且配置策略為BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZED、或SPOT_PRICE_CAPACITY_OPTIMIZEDBEST_FIT不支援。除了服務角色之外,可以針對擴展更新變更的所有設定也可以變更基礎結構更新。

注意

我們建議您在大多數情況下使用SPOT_PRICE_CAPACITY_OPTIMIZED而不是 SPOT_CAPACITY_OPTIMIZED n。

在基礎結構更新期間,運算環境的狀態會變更為UPDATING。使用更新的設定啟動新執行個體。新的工作會在新執行個體上排程。目前正在執行的工作會根據基礎結構更新原則傳送。如需詳細資訊,請參閱UpdateComputeEnvironmentAWS Batch API 參考中的 UpdatePolicy

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

注意

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

  • 如果terminateJobsOnUpdate設定設為true,則執行中的工作會在基礎結構更新期間終止。會忽略此jobExecutionTimeoutMinutes設定。

  • 如果terminateJobsOnUpdate設定設為false,則在基礎結構更新發生後,工作可以執行額外的時間。這個額外的時間是在設置中jobExecutionTimeoutMinutes配置的。依預設,設jobExecutionTimeoutMinutes定為 30 分鐘。

當運算環境中的容量變為可用時,會以更新的設定啟動新執行個體,並在新執行個體上啟動任務。當所有工作在具有舊設定的執行個體上完成時,舊執行個體就會終止。可用容量表示所需的 vCPUs 數目低於最小執行個體類型所需的 vCPUs 數目至少達到最小執行個體類型所需的 vCPUs 數目上限。

基礎架構更

若要變更運算環境的某些設定,必須進行基礎結構更新。如果變更下列任一設定,就會啟動基礎結構更新:

重要

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

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

  • 配置策略 (allocationStrategy、必須是BEST_FIT_PROGRESSIVESPOT_CAPACITY_OPTIMIZED、或SPOT_PRICE_CAPACITY_OPTIMIZED。 如果原始配置策略是BEST_FIT,則不支援基礎結構更新。)

    注意

    我們建議您在大多數情況下使用SPOT_PRICE_CAPACITY_OPTIMIZED而不是 SPOT_CAPACITY_OPTIMIZED n。

  • 出價百分比 (bidPercentage)

  • EC2 組態設定 (ec2Configuration)

  • 金鑰配對 (ec2KeyPair)

  • 影像識別碼 (imageId)

  • 執行個體角色 (instanceRole)

  • 執行個體類型 (instanceTypes)

  • 啟動範本 (launchTemplate)

  • 放置群組 (placementGroup)

  • 安全性群組 (securityGroupIds)

  • VPC 子網路 () subnets

  • 標籤 (tags)

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

  • 是否要更新至基礎結構更新AWS Batch期間所支援的最新 AMI updateToLatestImageVersion

更新 AMI 識別碼

在基礎結構更新期間,計算環境的 AMI ID 可能會變更,具體取決於是否在這三個設定中指定 AMI。AMI 是在中指定的 imageId (中computeResources)、imageIdOverride (中) 或中ec2Configuration指定的啟動範本中launchTemplate指定的。假設在這些設定中未指定任何 AMI ID,且該updateToLatestImageVersion設定為true。然後,所支援的最新 Amazon ECS 最佳化 AMI 會用AWS Batch於任何基礎設施更新。

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

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

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

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

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

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