在 API 中新增 SpikeArrest 政策

本頁內容適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

課程內容

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

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

事前準備

新增 SpikeArrest 政策

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

全新 Proxy 編輯器

如要將 SpikeArrest 政策新增至 API Proxy,請按照下列步驟操作:

  1. 如果您使用 Cloud 控制台中的 Apigee 使用者介面:選取「Proxy development」>「API Proxies」

    如果您使用傳統的 Apigee 使用者介面:選取「Develop」>「API Proxies」,然後在「Proxies」窗格中,選取 Proxy 的環境。

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

  2. 按一下「開發」分頁標籤。
  3. 在左側窗格中,按一下「政策」列中的「+」按鈕。
  4. 在「建立政策」對話方塊中,點選「選取政策類型」欄位,然後向下捲動至「流量管理」,並選取「SpikeArrest」

  5. 視需要變更政策的「名稱」和「顯示名稱」。 根據預設,Apigee 會為政策名稱提供簡短前置字串,在此案例中為 SA-。您可以在前置字串後方加上以連字號分隔的描述性字詞序列。請參閱「 命名慣例」。

    建立政策對話方塊。

    完成後,按一下「建立」即可建立政策。

尖峰流量防範政策建立完成後,即可將其新增至 PreFlow 的步驟。

  1. 在左側窗格中,依序選取「Proxy Endpoints」>「default」>「PreFlow」

    在 Proxy Explorer 中選取 PreFlow 的目標端點。

    注意:您可能需要在右側窗格中展開視覺化編輯器,才能看到所有元素。 如要這麼做,請按一下並將視覺化編輯器和文字編輯器之間的分隔線稍微向下拖曳。

  2. 在視覺化編輯器的右下方,按一下「Response」(回覆) 窗格中「PreFlow」(前置流程) 旁的「+」按鈕:

    在「回應」窗格中,按一下「PreFlow」旁的「+」按鈕。

  3. 在「Add policy step」(新增政策步驟) 對話方塊中,選取「Spike Arrest」(尖峰流量防範) 政策。
  4. 按一下「新增」附加政策。

    「Response」(回應) 窗格現在會顯示「Spike Arrest」(尖峰流量防範) 政策:

    「Response」(回應) 窗格中顯示尖峰流量防範政策。

現在您已將尖峰流量防範政策附加至 PreFlow,可以試著變更政策的程式碼:

  1. 在「回應」窗格中,選取「SA」

    「政策」分頁中顯示的尖峰流量防範政策。

  2. 文字編輯器會顯示 Proxy 的 XML 程式碼,包括 PreFlow 的 Response 元素中的 Spike Arrest 政策步驟。
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <SpikeArrest continueOnError="false" enabled="true" name="SA-">
        <DisplayName>SA-</DisplayName>
        <Properties/>
        <Identifier ref="request.header.some-header-name"/>
        <MessageWeight ref="request.header.weight"/>
        <Rate>30ps</Rate>
    </SpikeArrest>
  3. 在政策的 XML 中,將 <Rate> 元素的值變更為 1pm (這會轉換為雲端中每 60 秒允許約兩項要求)。

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

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

  4. 按一下「儲存」,即可儲存變更後的目前修訂版本。

傳統 Proxy 編輯器

如要將 SpikeArrest 政策新增至 API Proxy,請按照下列步驟操作:

  1. 登入 Apigee 使用者介面
  2. 在左側導覽列中選取「開發」>「API Proxy」
  3. 選取要新增 SpikeArrest 政策的 API Proxy。

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

  4. 在新的 API Proxy 編輯器中,按一下「Develop」(開發) 分頁:

    「開發」分頁位於「總覽」和「追蹤」分頁之間。

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

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

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

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

    建立 SpikeArrest 政策。

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

    查看含有 SpikeArrest 政策的 PreFlow。

  10. 在 Navigator 中,選取「Policies」下的「SpikeArrest-1」SpikeArrest-1,並在 API Proxy Editor 中注意下列事項:
    • 政策詳細資料會顯示在 API Proxy 編輯器的頂端中央設計師檢視畫面中。
    • 政策的 XML 會顯示在 API Proxy 編輯器底部的「程式碼檢視」中。
    • 政策的 XML 元素和屬性值會顯示在 API Proxy 編輯器右側的「屬性檢查器」中。

    「Property Inspector」(屬性檢查器) 窗格會顯示 SpikeArrest-1 政策的值。

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

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

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

  12. 按一下「儲存」,即可儲存變更後的目前修訂版本。
  13. 使用「Deploy to:」(部署至:) 按鈕部署變更
  14. 使用網域的網址,透過 curl 呼叫 API:

    curl "http://YOUR_DOMAIN/myproxy"

    其中:

    • ENV_GROUP_HOSTNAME 是您在佈建期間設定的環境群組主機名稱
    • DOMAIN_HOSTNAME 是您的網域主機名稱。

    詳情請參閱「 測試 API Proxy」。

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

    接著,請嘗試以不同方式測試 Rate 設定:

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

      如果在一分鐘內嘗試撥打更多電話,系統仍會顯示錯誤訊息。

    • 編輯政策,將 <Rate> 限制設為 15pm (這表示雲端每四秒約允許兩次呼叫),然後儲存並部署 API Proxy。
    • 執行 curl 指令或重複重新整理瀏覽器 (curl 速度較快)。 請注意,如果您在四秒間隔內撥打一或兩通電話,通話會成功。如果快速發出呼叫 (四秒內超過兩次),應該會收到錯誤訊息。但每隔 4 秒後,您就能繼續撥打電話,而不是像 1pm 設定一樣,必須等待一分鐘才能撥打電話。