本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
更新運算環境
建立使用 EC2 資源的運算環境後,您可以直接更新運算環境的許多設定。不過,變更某些設定需要 AWS Batch 取代運算環境中的執行個體。
更新 AWS Fargate 運算環境
對於使用 Fargate 資源的運算環境,您可以更新以下內容。
-
securityGroupIds
-
subnets
-
desiredvCpus
-
maxvCpus
-
minvCpus
AWS Batch 有兩個更新機制。第一個是擴展更新,其中從運算環境新增或移除執行個體。第二個是基礎設施更新,其中會取代運算環境中的執行個體。基礎設施更新需要比擴展更新更長的時間。
如果您使用 更新運算環境 AWS Batch,僅變更這些設定會導致擴展更新:所需 vCPUs (desiredvCpus
)、最大 vCPUs (maxvCpus
)、最小 vCPUs (minvCpus
)、服務角色 (serviceRole
) 和狀態 ()state
。
注意
當您更新desiredvCpus
設定時,該值必須介於 minvCpus
和 maxvCpus
值之間。
此外,更新desiredvCpus
的值必須大於或等於目前的desiredvCpus
值。如需詳細資訊,請參閱更新desiredvCpus設定時的錯誤訊息。
如果在 中變更下列任何設定 UpdateComputeEnvironment API 動作, AWS Batch 啟動基礎設施更新。基礎設施更新需要將服務角色設定為 AWSServiceRoleForBatch(預設),且BEST_FIT
不支援配置策略為 SPOT_CAPACITY_OPTIMIZED
、 BEST_FIT_PROGRESSIVE
或 SPOT_PRICE_CAPACITY_OPTIMIZED
。除了服務角色之外,也可以針對基礎設施更新變更可用於擴展更新的所有設定。
注意
我們建議您在大多數執行個體中使用 SPOT_PRICE_CAPACITY_OPTIMIZED
,而不是 SPOT_CAPACITY_OPTIMIZED
n。
在基礎設施更新期間,運算環境的狀態會變更為 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_PROGRESSIVE
、SPOT_CAPACITY_OPTIMIZED
或SPOT_PRICE_CAPACITY_OPTIMIZED
。 如果原始配置策略為BEST_FIT
,則不支援基礎設施更新。)注意
我們建議您在大多數執行個體中使用
SPOT_PRICE_CAPACITY_OPTIMIZED
,而不是SPOT_CAPACITY_OPTIMIZED
n。 -
出價百分比 (
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
(在 )computeResources
、 imageIdOverride
(在 ec2Configuration
) 或 中指定的啟動範本中指定launchTemplate
。假設這些設定中沒有指定 AMI IDs ,且updateToLatestImageVersion
設定為 true
。然後,任何基礎設施更新 AWS Batch 都會使用 AMI支援的最新 Amazon ECS最佳化。
如果在至少其中一個設定中指定 AMI ID,則更新取決於在更新之前提供的 AMI ID 是哪個設定。當您建立運算環境時,選取 AMI ID 的優先順序首先是啟動範本,然後是imageId
設定,最後是imageIdOverride
設定。不過,如果使用的 AMI ID 來自啟動範本,則更新 imageId
或 imageIdOverride
設定不會更新 AMI ID。更新從啟動範本選取的 AMI ID 的唯一方法是更新啟動範本。如果啟動範本的版本參數為 $Default
或 $Latest
,則會評估指定啟動範本的預設或最新版本。如果預設選取不同的 AMI ID 或選取最新版本的啟動範本,則會在更新中使用該 AMI ID。
如果啟動範本未用於選取 AMI ID,則會使用在 imageId
或 imageIdOverride
參數中指定的 AMI ID。如果指定兩者,則會使用 imageIdOverride
參數中指定的 AMI ID。
假設運算環境使用 imageId
、 imageIdOverride
或 launchTemplate
參數指定的 AMI ID,且您想要使用 AMI支援的最新 Amazon ECS最佳化 AWS Batch。然後,更新必須移除提供的設定AMIIDs。對於 imageId
,這需要為該參數指定空字串。對於 imageIdOverride
,這需要為 ec2Configuration
參數指定空字串。
如果 AMI ID 來自啟動範本,您可以透過下列 AWS Batch 其中一種方式變更為 支援的最新 Amazon AMI ECS最佳化:
-
為
launchTemplateId
或launchTemplateName
參數指定空字串,以移除啟動範本。這會移除整個啟動範本,而不是單獨 AMI ID。 -
如果更新版本的啟動範本未指定 AMI ID,則
updateToLatestImageVersion
參數必須設定為true
。