在 API 中新增尖峰流量防範政策

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

課程內容

在本教學課程中,您將學習如何:

  • 新增會影響要求和回應的政策。
  • 查看政策的影響。

軟硬體需求

  • Proxy 中至少有一項政策 (也是「開始使用」教學課程的一部分)。
  • curl 安裝在電腦上,可從指令列發出 API 呼叫。

新增尖峰流量防範政策

在本教學課程中,您將新增及設定 SpikeArrest 政策,防範因用量增加、用戶端錯誤或惡意攻擊而導致的流量突然暴增,保護目標服務。如果要求數量超過速率限制,API 會針對要求傳回 HTTP 500 錯誤。

將尖峰流量防範政策新增至 API Proxy:

  1. 登入 apigee.com/edge
  2. 在左側導覽列中,依序選取「開發」>「API Proxy」
  3. 選取要新增尖峰流量防範政策的 API Proxy。

    如果您已完成「入門」教學課程,可以將這個政策新增至您在「建立 API Proxy」中建立的「getstarted」Proxy。

  4. 在新的 API Proxy 編輯器中,點按「Develop」分頁標籤:

    您可以在 API Proxy 編輯器中查看 API Proxy 的結構,並設定其流程。 編輯器會以視覺化方式呈現 Proxy 的要求和回應訊息流程,並顯示可編輯的基礎 XML,定義 Proxy。

  5. 在左側的「Navigator」窗格中,依序點選「Proxy Endpoints」>「default」下方的「PreFlow」。(其他教學課程會介紹「流程」的概念)。
  6. 點選頂端的「+Step」按鈕,對應至「Request PreFlow」。畫面會顯示所有可建立的政策,並依類別列出。

    按一下「Request PreFlow」中的「Step」

  7. 在「流量管理」類別中選取「Spike Arrest」。系統會顯示「New Policy」(新政策) 對話方塊:

    建立尖峰流量防範政策

  8. 保留預設名稱,然後按一下「新增」。新政策會附加至要求的 PreFlow 流程。
  9. 在「Navigator」中,確認「Proxy Endpoints」>「default」下的「PreFlow」仍處於選取狀態,並注意 API Proxy 編輯器中的下列事項:
    • 新的 Spike Arrest-1 政策會新增至 API Proxy 編輯器左側的「Navigator」中的「Policies」下方。
    • API Proxy 編輯器的頂端中央會顯示「Spike Arrest-1」圖示,設計檢視畫面會顯示這個圖示,代表 Proxy 的訊息流程。
    • 政策的 XML 會顯示在 API Proxy 編輯器底部的「程式碼檢視」中。

    查看含有尖峰流量防範政策的 PreFlow

  10. 在「Navigator」中,選取「Policies」下方的「Spike Arrest-1」,並在 API Proxy 編輯器中記下下列項目:
    • API Proxy 編輯器的頂端中央會顯示設計師檢視畫面,其中包含政策詳細資料。
    • 政策的 XML 會顯示在 API Proxy 編輯器底部的「程式碼檢視」中。
    • 政策的 XML 元素和屬性值會顯示在 API Proxy 編輯器右側的「Property Inspector」中。

  11. 在政策的 XML 中,將 <Rate> 元素的值變更為 1pm (這會轉換為雲端中每 60 秒允許約 2 個要求)。

    你可以指定每分鐘 (pm) 或每秒 (ps) 的費率,以整數值表示。這是非常低的限制,僅用於本教學課程,以說明政策。通常會將上限設得高出許多。

    請注意,屬性檢查器中的 Rate 值也會變更為「1pm」。 或者,您也可以在「Property Inspector」中變更「Rate」值,XML 檢視畫面就會反映這項變更。

  12. 按一下「儲存」,即可儲存目前的修訂版本和變更。
  13. 使用 curl 呼叫 API,將 org_name 換成您的 Apigee 機構名稱:

    curl "http://org_name-test.apigee.net/getstarted"

    例如:

    curl "http://ahamilton-eval-test.apigee.net/getstarted" | python -m json.tool

    確認要求成功,且您看到與先前相同的 XML 回應。 (您也可以直接在網路瀏覽器中輸入網址)。

  14. 在一分鐘內再執行兩到三次 curl 指令 (或重新整理瀏覽器視窗),您會發現由於超出政策的速率限制,系統會顯示以下訊息:
    {
    "fault": {
      "faultstring":"Spike arrest violation. Allowed rate : 1pm",
      "detail": {
        "errorcode":"policies.ratelimit.SpikeArrestViolation"}
      }
    }

    如果您嘗試在一分鐘內發出更多呼叫,應該會持續收到錯誤訊息。

  15. 編輯政策,將 <Rate> 限制設為 15pm (這表示雲端每 4 秒約允許 2 次呼叫),然後儲存 API Proxy。
  16. 執行 curl 指令或重複重新整理瀏覽器 (curl 速度較快)。 請注意,如果您在 4 秒間隔內發出 1 或 2 個呼叫,呼叫就會成功。如果快速撥打電話 (4 秒內超過兩通),應該會發生故障。但每隔 4 秒後,你就能繼續撥打電話,而不是像 1 點設定一樣,整整一分鐘都無法撥打。