準備在 Amazon ECS 上淘汰 AWS Fargate 任務 - Amazon Elastic Container Service

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

準備在 Amazon ECS 上淘汰 AWS Fargate 任務

若要為任務淘汰做準備,請執行下列操作:

  1. 設定任務淘汰等待期間。

  2. 擷取任務淘汰通知,以便通知團隊成員。

  3. 您無法控制任務淘汰的確切時間,但可透過強制部署選項更新服務來控制任務的替代。

步驟 1:設定任務等待時間

您可以設定 Fargate 開始任務淘汰的時間。對於需要立即套用更新的工作負載,請選擇立即設定 (0)。當您需要更多控制項時,例如當任務只能在特定時段中停止時,請設定 7 日 (7) 或 14 日 (14) 選項。

我們建議您選擇較短的等待期,以便更快獲得更新的平台版本修訂版。

透過以根使用者或管理使用者的身分執行 put-account-setting-defaultput-account-setting 來設定等待期間。對 name 使用 fargateTaskRetirementWaitPeriod 選項,並將 value 選項設定為以下值之一:

  • 0 - AWS 傳送通知,並立即開始淘汰受影響的任務。

  • 7 - AWS 傳送通知,並等待 7 個日曆天,再開始淘汰受影響的任務。

  • 14 - AWS 傳送通知,並等待 14 個日曆日,然後再開始淘汰受影響的任務。

預設值為 7 天。

如需詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的 put-account-setting-defaultput-account-setting

步驟 2:擷取任務淘汰通知,提醒團隊採取動作

當即將淘汰任務時, 會將任務淘汰通知 AWS 傳送到 AWS Health 儀表板,並傳送給 上的主要電子郵件聯絡人 AWS 帳戶。 AWS Health 儀表板提供許多與其他 AWS 服務的整合,包括 Amazon EventBridge。您可以使用 EventBridge 從任務淘汰通知建立自動化,例如透過將訊息轉送到 ChatOps 工具來提高即將淘汰的可見性。 AWS Health Aware 是一種資源,可顯示 AWS Health 儀表板的強大功能,以及如何在整個組織中分配通知。您可以將任務淘汰通知轉送至 Slack 等聊天應用程式。

下圖說明了解決方案概觀。

此圖表顯示用於擷取 Fargate 任務淘汰通知的 Fargate 解決方案。

下面提供相關詳細資訊。

  • Fargate 會將任務淘汰通知傳送至 AWS Health 儀表板。

  • Dashboard AWS Health 會將郵件傳送至 上的主要電子郵件聯絡人 AWS 帳戶,並通知 EventBridge。

  • EventBridge 具備可擷取淘汰通知的規則。

    此規則用於篩選「事件詳細類型」如下的事件:"AWS Health Event" and the Event Detail Type Code: "AWS_ECS_TASK_PATCHING_RETIREMENT"

  • 此規則會觸發 Lambda 函式,該函式會透過 Slack 傳入 Webhook 將資訊轉送至 Slack。如需詳細資訊,請參閱 Incoming Webhooks

如需程式碼範例,請參閱在 Github 上擷取 AWS Fargate 任務淘汰通知

步驟 3:控制任務替代時機

您無法控制任務淘汰的確切時間,但可以定義等待時間。若需按照自訂排程控制取代任務,您可以擷取任務淘汰通知,先了解任務淘汰日期。然後,您可以重新部署服務來啟動替代任務,並同步取代所有獨立任務。對於使用滾動部署的服務,您可以在淘汰開始時間前,搭配 force-deployment 選項使用 update-service 來更新服務。

下列 update-service 範例使用 force-deployment 選項。

aws ecs update-service —-service service_name \ --cluster cluster_name \ --force-new-deployment

對於使用藍/綠部署的服務,您需要在 AWS CodeDeploy中建立新的部署。如需有關如何建立部署的資訊,請參閱 AWS Command Line Interface Reference 中的 create-deployment