主動追蹤 AWS 「資源用量」,避免配額用盡造成任務失敗

2023/03/29

閱讀本文您將獲得以下資訊:

- AWS 預設服務配額可保護您的帳戶,避免出現不可預見的服務過載風險

- AWS 預設服務配額可幫助您管理資源,避免使用昂貴的資源而產生意外的費用

- 透過 Service Quotas 主控台,對於可調整的 (adjustable) 服務配額,系統將自動批准較小的配額申請

- 善用 AWS Trusted Advisor 的 Service Limits 和 Service Quotas 功能,可監控 AWS 資源用量並發出警報,以避免配額用盡造成任務失敗

為什麼 AWS 要定義服務配額呢?

您是否也曾好奇過,為什麼 AWS 帳戶會針對每項服務定義預設配額呢?又或者對於帳戶因限額需另申請增加配額流程,感到困惑呢?定義配額的原因有很多,包括:

- 保護您的帳戶,確保 AWS 資源的可用性並避免出現不可預見的用量爆增和服務過載。

- 幫助您管理資源。例如,開發和測試應用時,您可以設置自己的服務用量限額,以避免使用昂貴的資源而產生意外的費用。

要如何查看服務配額呢?

您可以使用以下三種方式查看服務配額:

- 方法1:在服務終端節點和配額文檔頁面,位於 https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html,搜索服務名稱,並進一步點擊鏈接以跳轉到該服務的頁面。也可以下載 PDF 檔案,位於https://docs.aws.amazon.com/general/latest/gr/aws-general.pdf#aws-service-information,取得所有產品服務終端節點和配額資訊。

- 方法2:登入AWS Management Console,然後開啟 Service Quotas 控制台,位於https://console.aws.amazon.com/servicequotas/home。在導航窗格中,選擇 AWS services (服務),然後選擇一項服務。每個服務配額,控制台會顯示名稱、應用的配額、默認配額以及配額是否可調 (adjustable)。如果應用的值不可用,控制台將顯示無。

重要提醒:每個 AWS region (區域)的服務配額是不同的值。請先選擇您需要增加配額的 AWS 區域。

- 方法3:使用 list-service-quotas 和 list-aws-default-service-quotas AWS CLI 命令。

申請增加服務配額

對於可調整的 (adjustable) 配額,您可以在 Service Quotas 控制台提出增加配額申請。我們建議依您實際需求逐步申請所需的配額,因系統將自動批准較小的配額申請,批准速度較為快速;而較大的配額申請需求將轉送提交到 AWS Support,以便您後續可以在 AWS Support 控制台中追蹤您的申請需求,AWS Support 可能會批准拒絕部分批准您的申請需求。

申請提高服務配額步驟:

1.登錄到 AWS Management Console 然後在打開 Service Quotas 控制台https://console.aws.amazon.com/servicequotas/home.

2.在導航窗格中,選擇 AWS services (AWS 服務)。

3.選擇 AWS 服務從列表中,或在搜索框中鍵入服務名稱。

4.如果配額是可調整的,您可以選擇按鈕或名稱,然後選擇 請求增加配額.

5.對於 Change quota value (更改配額值),輸入新值。新值必須大於當前值。

6.選擇 Request (請求)

要查看任何待處理或最近批准的申請,請從導航窗格選擇 Dashboard (控制面板) 進一步查看。申請的初始狀態為 Pending,在狀態變為 Quota requested 之後,您將看到 AWS Support 案例編號,選擇案例編號後打開申請服務單。在批准申請後,配額的Applied quota value (套用的配額值) 將設置為新值。

主動監控資源用量並在接近配額時傳送通知

您是否面臨過,不論執行任何任務都是出現錯誤訊息,花了許久時間排查,來發覺是配額錯誤…

通常,配額用盡後,您嘗試執行的任務都會失敗,並且您會收到配額錯誤訊息。尤其在執行部署應用、創建新項目或調用 API 時,時常會拋出此錯誤訊息。接著該任務一直持續失敗,直到您釋放資源或增加配額。

其實,只要善用 AWS Trusted Advisor 的 Service Limits 和 Service Quotas 功能,就可監控 AWS 資源用量並發出提醒,以避免任務失敗。

您可以快速採用五種 AWS CloudFormation 自動化模板,依需求在帳戶中部署監控服務配額,包括: Hub 集中模板 (步驟1~步驟3)、Service Quotas分支模板(步驟4~步驟5)、Trusted Advisor分支模板(步驟6)、適用跨組織管理的補充模板或適用非跨組織管理的補充模板。

重要提醒:該解決方案將使用 AWS Support API 調度 Trusted Advisor 服務。您必須擁有 Business、Enterprise On-Ramp 或 Enterprise 等級支援計劃才能使用 AWS Support API。

針對Hub 集中模板、Service Quotas分支模板、Trusted Advisor分支模板說明如下:

架構概述

構建如下架構圖中描述的 AWS 雲端環境:

AWS 雲端環境

- 預計部署時間: 5 分鐘

- 預估成本:https://docs.aws.amazon.com/zh_cn/solutions/latest/quota-monitor-for-aws/plan-your-deployment.html

- 操作指南:https://docs.aws.amazon.com/solutions/latest/quota-monitor-for-aws/solution-overview.html


步驟 1 (Hub 集中模板)

匯報 (Reporting) – 此工作流程會佈建 Amazon Simple Queue Service (Amazon SQS) 佇列 (queue)、AWS Lambda 函數摘要器 (function summarizer),以及 Amazon DynamoDB 資料表 (table)。佇列 (queue) 會接收來自所有受監控帳戶的用量事件。Lambda 函數將所有數據存放在 DynamoDB 資料表中。

步驟 2 (Hub 集中模板)

集中事件收集 (Centralized event collection) – 工作流程會佈建自訂 Amazon EventBridge 匯流排 (bus)、Amazon CloudWatch Events 事件規則 (rule) 以及 Amazon Simple Notification Service (Amazon SNS) 主題來發出警報。工作流程會將所有事件傳送至報告佇列 (reporting queue),以便在 DynamoDB 中保存使用數據。工作流程會針對配額使用量發出提醒並定義警報等級:

- OK (利用率低於 80%)

- 警告 (80% 到 99% 的利用率)

- 錯誤 (100% 利用率)

步驟 3 (Hub 集中模板)

部署管理 – 工作流程會佈建 AWS Systems Manager Parameter Store、CloudWatch Events 規則、Lambda 函數和 CloudFormation StackSets. 或帳戶 ID,工作流程會做出必要的組態變更,開始監控更新 OU   (Organization Unit,組織單位) ID 或帳戶清單。

步驟 4 (Service Quotas spoke 分支模板)

產生配額清單 – 工作流程會佈建一個 Lambda 函數和兩個 DynamoDB 資料表。工作流程會管理一個有效且經驗證的 Service Quotas 清單,使用 CloudWatch 指標來進行使用量監控。

步驟 5 (Service Quotas spoke 分支模板)

配額使用率警報 – 工作流程會佈建排程類型的 Lambda 函數、自訂 EventBridge 匯流排 (bus) 和 CloudWatch Events 事件規則。cw-poller 函數可查詢配額清單,並從 CloudWatch 指標中擷取這些配額的使用數據。工作流程將所有使用數據作為事件發送到 EventBridge 匯流排 (bus) 上。分支匯流排 (spoke bus) 會將用量事件路由至中央匯流排 (centralized bus)。

步驟 6 (Trusted Advisor spoke 分支模板)

Trust Advisor 警報– 工作流程會佈建 Lambda 函數和 CloudWatch Events 事件規則,使用 AWS Trusted Advisor監控配額使用情況。Lambda 函數每隔 24 小時執行一次,重新整理刷新 Trusted Advisor 檢查。事件規則將 Trusted Advisor 用量事件路由至中央匯流排 (centralized bus)。

參考來源:

What is Service Quotas, https://docs.aws.amazon.com/servicequotas/latest/userguide/intro.html

Service endpoints and quotas, https://docs.aws.amazon.com/general/latest/gr/aws-service-information.html

Quota Monitor for AWS, https://aws.amazon.com/tw/solutions/implementations/quota-monitor/

AWS CloudFormation 模板, https://docs.aws.amazon.com/zh_tw/solutions/latest/quota-monitor-for-aws/aws-cloudformation-templates.html


其他訊息