本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 上 AWS Fargate 的任務淘汰和維護
AWS 負責維護 AWS Fargate 的基礎基礎設施。 AWS 決定何時需要將平台版本修訂取代為基礎設施的新修訂。這稱為任務淘汰。 會在平台版本修訂淘汰時 AWS 傳送任務淘汰通知。我們會定期更新我們支援的平台版本,引進新的修訂版,其中包含 Fargate 執行期軟體的更新,以及作業系統和容器執行期等基礎相依性。推出較新的修訂版後,我們會淘汰較舊的修訂版,以確保所有客戶工作負載都執行於 Fargate 平台版本的最新修訂版。當修訂版本淘汰時,在該修訂版本上執行的所有任務都會停止。
Amazon ECS 任務可以分類為服務任務和獨立任務。服務任務會部署為服務的一部分,並由 Amazon ECS 排程控制。如需詳細資訊,請參閱Amazon ECS 服務。獨立任務是由 Amazon ECS RunTask
API 啟動的任務,無論是直接或外部排程器啟動,例如排程任務 (由 Amazon EventBridge 啟動) AWS Batch,或 AWS Step Functions。您不需要採取任何動作來回應服務任務的任務淘汰,因為 Amazon ECS 排程器會自動取代任務。
對於獨立任務,您可能需要執行額外的處理,以回應任務淘汰。如需詳細資訊,請參閱Amazon ECS 可以自動處理獨立任務嗎?。
對於服務任務,您不需要採取任何動作來淘汰任務,除非您想要先取代這些任務 AWS 。當 Amazon ECS 排程器停止任務時,它會使用 maximumPercent
並啟動新任務,嘗試維護服務的所需計數。為了將 AWS Fargate 任務淘汰的影響降至最低,您應該在部署工作負載時遵循 Amazon ECS 最佳實務。使用 REPLICA 服務排程器的服務maximumPercent
預設值為 200%。因此,當 AWS Fargate 開始淘汰任務時,Amazon ECS 會先排程新任務,然後等待它執行,然後再淘汰舊任務。當您將maximumPercent
值設定為 100% 時,Amazon ECS 會先停止任務,然後取代任務。
對於獨立任務淘汰, 會在任務淘汰日期或之後 AWS 停止任務。當任務停止時,Amazon ECS 不會啟動替代任務。如果您需要這些任務繼續執行,您需要在通知中指定的時間之前停止執行中的任務並啟動替代任務。因此,我們建議客戶監控獨立任務的狀態,並視需要實作邏輯以取代已停止的任務。
當任務在任何場景下停止時,您都可以執行 describe-tasks
。回應中的 stoppedReason
是 ECS is performing maintenance on the
underlying infrastructure hosting the task
。
當有新的平台版本修訂需要以新的修訂取代時,任務維護即適用。如果基礎 Fargate 主機發生問題,Amazon ECS 會在沒有任務淘汰通知的情況下取代主機。
任務淘汰通知概觀
當 將平台版本修訂 AWS 標記為需要淘汰時,我們會識別所有區域中在該平台版本修訂上執行的所有任務。然後,每個區域每個帳戶傳送一個通知,反白顯示受影響的任務或服務,以及開始淘汰的日期。
下圖顯示 Fargate 平台版本修訂從新修訂啟動到平台修訂淘汰的生命週期。

以下資訊提供詳細資訊。
-
啟動新的平台版本修訂版後,所有新任務都會排程在此修訂版上。
-
已排程和執行的現有任務會維持在最初在任務期間放置的修訂版上,而不會遷移至新的修訂版。
-
新任務,例如作為服務或 Fargate 任務淘汰更新的一部分,會放置在啟動時可用的最新平台版本修訂中。
任務淘汰通知會透過 AWS Health Dashboard 以及透過電子郵件傳送至已註冊的電子郵件地址,並包含下列資訊:
-
任務淘汰日期 - 任務將在此日期或之後停止。
-
若為獨立任務,則為任務的 ID。
-
若為服務任務,則為執行服務所在之叢集的 ID 以及服務的 ID。
-
您需要採取的後續步驟。
一般而言,我們會針對每個 中的服務和獨立任務傳送每個通知 AWS 區域。不過,在某些情況下,您可能會收到每個任務類型的多個事件,例如,當有太多任務需要淘汰,而在我們的通知機制中將超過限制時。
您可以透過以下方法確定已排程要淘汰的任務:
-
的 AWS Health Dashboard
AWS Health 通知可透過 Amazon EventBridge 傳送至封存儲存,例如 Amazon Simple Storage Service、執行 AWS Lambda 函數等自動動作,或其他通知系統,例如 Amazon Simple Notification Service。如需詳細資訊,請參閱使用 Amazon EventBridge 監控 AWS Health 事件。如需將通知傳送至 Amazon Chime、Slack 或 Microsoft Teams 的組態範例,請參閱 GitHub 上的 AWS Health Aware
儲存庫。 以下是 EventBridge 事件範例。
{ "version": "0", "id": "3c268027-f43c-0171-7425-1d799EXAMPLE", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2023-08-16T23:18:51Z", "region": "us-east-1", "resources": [ "cluster|service", "cluster|service" ], "detail": { "eventArn": "arn:aws:health:us-east-1::event/ECS/AWS_ECS_TASK_PATCHING_RETIREMENT/AWS_ECS_TASK_PATCHING_RETIREMENT_test1", "service": "ECS", "eventScopeCode": "ACCOUNT_SPECIFIC", "communicationId": "7988399e2e6fb0b905ddc88e0e2de1fd17e4c9fa60349577446d95a18EXAMPLE", "lastUpdatedTime": "Wed, 16 Aug 2023 23:18:52 GMT", "eventRegion": "us-east-1", "eventTypeCode": "AWS_ECS_TASK_PATCHING_RETIREMENT", "eventTypeCategory": "scheduledChange", "startTime": "Wed, 16 Aug 2023 23:18:51 GMT", "endTime": "Fri, 18 Aug 2023 23:18:51 GMT", "eventDescription": [ { "language": "en_US", "latestDescription": "\\nA software update has been deployed to Fargate which includes CVE patches or other critical patches. No action is required on your part. All new tasks launched automatically uses the latest software version. For existing tasks, your tasks need to be restarted in order for these updates to apply. Your tasks running as part of the following ECS Services will be automatically updated beginning Wed, 16 Aug 2023 23:18:51 GMT.\\n\\nAfter Wed, 16 Aug 2023 23:18:51 GMT, the ECS scheduler will gradually replace these tasks, respecting the deployment settings for your service. Typically, services should see little to no interruption during the update and no action is required. When AWS stops tasks, AWS uses the minimum healthy percent (1) and launches a new task in an attempt to maintain the desired count for the service. By default, the minimum healthy percent of a service is 100 percent, so a new task is started first before a task is stopped. Service tasks are routinely replaced in the same way when you scale the service or deploy configuration changes or deploy task definition revisions. If you would like to control the timing of this restart you can update the service before Wed, 16 Aug 2023 23:18:51 GMT, by running the update-service command from the ECS command-line interface specifying force-new-deployment for services using Rolling update deployment type. For example:\\n\\n$ aws ecs update-service -service service_name \\\n--cluster cluster_name -force-new-deployment\\n\\nFor services using Blue/Green deployment type with AWS CodeDeploy:\\nPlease refer to create-deployment document (2) and create new deployment using same task definition revision.\\n\\nFor further details on ECS deployment types, please refer to ECS Deployment Developer Guide (1).\\nFor further details on Fargate's update process, please refer to the AWS Fargate User Guide (3).\\nIf you have any questions or concerns, please contact AWS Support (4).\\n\\n(1) https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html\\n(2) https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html\\n(3) https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-maintenance.html\\n(4) https://aws.amazon.com/support\\n\\nA list of your affected resources(s) can be found in the 'Affected resources' tab in the 'Cluster/ Service' format in the AWS Health Dashboard. \\n\\n" } ], "affectedEntities": [ { "entityValue": "cluster|service" }, { "entityValue": "cluster|service" } ] } }
-
電子郵件
系統會將電子郵件傳送至 AWS 帳戶 ID 的註冊電子郵件。
如需如何準備任務淘汰的資訊,請參閱 準備在 Amazon ECS 上淘汰 AWS Fargate 任務 。
我可以選擇退出任務淘汰嗎?
否。作為 AWS 共同責任模型的一部分, AWS 負責管理和維護其基礎基礎設施 AWS Fargate。這包括執行定期平台更新,以確保安全性和穩定性。這些更新會由 自動套用 AWS ,而且客戶無法選擇退出。與在 EC2 執行個體上執行工作負載 AWS Fargate 相比,這是使用 的主要優點,維護基礎平台的責任由 處理 AWS。此模型可讓您專注於應用程式,而不是基礎設施維護。透過自動套用這些平台更新, AWS 能夠讓 Fargate 環境up-to-date狀態和安全,而無需您作為客戶採取任何動作。這有助於提供可靠且安全的容器化環境,以便在 Fargate 上執行工作負載。
我可以透過其他服務取得任務淘汰通知 AWS 嗎?
AWS 會將任務淘汰通知傳送至 , AWS Health Dashboard 並傳送給 上的主要電子郵件聯絡人 AWS 帳戶。 AWS Health Dashboard 提供多種與其他 AWS 服務的整合,包括 EventBridge。您可以使用 EventBridge 自動化通知的可見性 (例如, 轉送訊息到 ChatOps 工具)。如需詳細資訊,請參閱解決方案概觀:擷取任務淘汰通知
我可以在任務排程後變更任務淘汰嗎?
否。排程是根據預設為 7 天的任務淘汰等待時間。如果您需要更多時間,您可以選擇將等待期間設定為 14 天。如需詳細資訊,請參閱步驟 2:擷取任務淘汰通知以提醒團隊並採取動作。此組態的變更適用於未來將排程的淘汰。目前排定的淘汰不會受到影響。如果您有任何其他疑慮,請聯絡 支援。
Amazon ECS 如何處理屬於服務一部分的任務?
對於服務任務,您不需要採取任何動作來回應任務淘汰,除非您想要在 AWS 之前取代這些任務。當 Amazon ECS 排程器停止任務時,它會使用運作狀態最低百分比並啟動新任務,以嘗試維持服務所需的計數。為了將 Fargate 任務淘汰的影響降至最低,工作負載應按照 Amazon ECS 最佳實務進行部署。例如,將無狀態應用程式部署為 Amazon ECS 服務時,例如 Web 或 API 伺服器,客戶應部署多個任務複本,並將 minimumHealthyPercent 設定為 100%。根據預設,服務的運作狀態最低百分比為 100%。因此,當 Fargate 開始淘汰任務時,Amazon ECS 會先排程新任務,並等待其執行,然後再淘汰舊任務。當您擴展服務、部署組態變更或部署任務定義修訂時,服務任務會定期取代為任務淘汰的一部分。若要準備任務淘汰程序,請參閱 準備在 Amazon ECS 上淘汰 AWS Fargate 任務 。
Amazon ECS 可以自動處理獨立任務嗎?
否。 AWS 無法為由 RunTask
、排程任務 (例如透過 EventBridge 排程器) AWS Batch或 啟動的獨立任務建立替代任務 AWS Step Functions。Amazon ECS 只會管理屬於服務一部分的任務。