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

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

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

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

  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 參考 put-account-setting 中的 put-account-setting-default和 。 API

步驟 2:擷取任務淘汰通知以提醒團隊並採取行動

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

下圖顯示解決方案概觀。

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

以下資訊提供詳細資訊。

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

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

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

    尋找具有事件詳細資訊類型的事件的規則: "AWS Health Event" and the Event Detail Type Code: "AWS_ECS_TASK_PATCHING_RETIREMENT"

  • 此規則會觸發 Lambda 函數,使用 Slack 傳入 Webhook 將資訊轉送至 Slack。如需詳細資訊,請參閱傳入 Webhooks

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

步驟 3:控制任務的取代

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

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

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

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