本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新運算環境
建立使用 EC2 資源的運算環境後,您可以直接更新運算環境的許多設定。但是,變更某些設定需要AWS Batch取代運算環境中的執行個體。
對於使用 Fargate 資源的運算環境,您可以更新下列項目。
-
securityGroupIds
-
subnets
-
desiredvCpus
-
maxvCpus
-
minvCpus
AWS Batch有兩種更新機制。第一個是擴展更新,其中執行個體會從運算環境中新增或移除。第二個是基礎結構更新,會取代運算環境中的執行個體。基礎結構更新所花費的時間比擴展更新要長得多。
如果使用更新計算環境AWS Batch,則僅變更這些設定會導致擴展更新:所需的 vCPUs (desiredvCpus
)、最大 vCPUs (maxvCpus
)、最小 vCPUs (minvCpus
)、服務角色 (serviceRole
) 和狀態 ()。state
注意
更新desiredvCpus
設定時,值必須介於minvCpus
和maxvCpus
值之間。
此外,更新的desiredvCpus
值必須大於或等於目前desiredvCpus
值。如需詳細資訊,請參閱更新desiredvCpus設定時出現錯誤訊息。
如果在 UpdateComputeEnvironmentAPI 動作中變更了下列任何設定,請AWS Batch啟動基礎結構更新。基礎結構更新需要將服務角色設定為 AWSServiceRoleForBatch(預設值),且配置策略為BEST_FIT_PROGRESSIVE
SPOT_CAPACITY_OPTIMIZED
、或SPOT_PRICE_CAPACITY_OPTIMIZED
。 BEST_FIT
不支援。除了服務角色之外,可以針對擴展更新變更的所有設定也可以變更基礎結構更新。
注意
我們建議您在大多數情況下使用SPOT_PRICE_CAPACITY_OPTIMIZED
而不是 SPOT_CAPACITY_OPTIMIZED
n。
在基礎結構更新期間,運算環境的狀態會變更為UPDATING
。使用更新的設定啟動新執行個體。新的工作會在新執行個體上排程。目前正在執行的工作會根據基礎結構更新原則傳送。如需詳細資訊,請參閱UpdateComputeEnvironment和 AWS Batch API 參考中的 UpdatePolicy。
在UpdatePolicy
資料類型中,請考慮下列案例:
注意
在這些情況下,下列情況為真。當執行個體終止時,執行中的工作會停止。依預設,這些工作不會重試。若要在執行個體終止後重試其中一項工作,請設定工作重試策略。如需詳細資訊,請參閱《AWS Batch 使用者指南》中的 自動化工作重試。
-
如果
terminateJobsOnUpdate
設定設為true
,則執行中的工作會在基礎結構更新期間終止。會忽略此jobExecutionTimeoutMinutes
設定。 -
如果
terminateJobsOnUpdate
設定設為false
,則在基礎結構更新發生後,工作可以執行額外的時間。這個額外的時間是在設置中jobExecutionTimeoutMinutes
配置的。依預設,設jobExecutionTimeoutMinutes
定為 30 分鐘。
當運算環境中的容量變為可用時,會以更新的設定啟動新執行個體,並在新執行個體上啟動任務。當所有工作在具有舊設定的執行個體上完成時,舊執行個體就會終止。可用容量表示所需的 vCPUs 數目低於最小執行個體類型所需的 vCPUs 數目至少達到最小執行個體類型所需的 vCPUs 數目上限。
基礎架構更
若要變更運算環境的某些設定,必須進行基礎結構更新。如果變更下列任一設定,就會啟動基礎結構更新:
重要
運算環境必須使用AWSServiceRoleForBatch服務連結角色,才能進行需要更新基礎結構的變更。
如果運算環境使用服務連結角色,則無法將其變更為使用一般 IAM 角色。同樣地,如果運算環境具有一般 IAM 角色,則無法將其變更為使用服務連結角色。因此,您只能在使用服務連結角色建立的運算環境上執行基礎結構更新。
-
配置策略 (
allocationStrategy
、必須是BEST_FIT_PROGRESSIVE
SPOT_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 來自啟動範本,則更新imageId
或imageIdOverride
設定並不會更新 AMI ID。更新從啟動範本中選取的 AMI ID 的唯一方法是更新啟動範本。如果啟動範本的 version 參數為$Default
或$Latest
,則會評估指定啟動範本的預設或最新版本。如果預設選取了不同的 AMI ID,或選取了啟動範本的最新版本,則會在更新中使用該 AMI ID。
如果未使用啟動範本來選取 AMI ID,則會使用imageId
或imageIdOverride
參數中指定的 AMI 識別碼。如果同時指定兩者,則會使用在imageIdOverride
參數中指定的 AMI ID。
假設運算環境使用、或launchTemplate
參數指定的 AMI 識別碼 imageId
imageIdOverride
,而且您想要使用支援的最新 Amazon ECS 最佳化 AMI。AWS Batch然後,更新必須移除提供 AMI ID 的設定。對於imageId
,這需要為該參數指定一個空字串。對於imageIdOverride
,這需要為ec2Configuration
參數指定空字串。
如果 AMI ID 來自啟動範本,您可以變更為由AWS Batch下列其中一種方式支援的最新 Amazon ECS 最佳化 AMI:
-
指定
launchTemplateId
或launchTemplateName
參數的空字串,以移除啟動範本。這會移除整個啟動範本,而不是單獨移除 AMI ID。 -
如果啟動範本的更新版本未指定 AMI ID,則必須將
updateToLatestImageVersion
參數設定為true
。