在 API 中新增 SpikeArrest 政策

本頁適用於 ApigeeApigee Hybrid

查看 Apigee Edge 說明文件。

課程內容

您將在本教學課程中學習:

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

事前準備

新增 SpikeArrest 政策

在本教學課程中,您將新增並設定 SpikeArrest 政策,以保護目標服務免於因使用量增加、用戶端發生錯誤或遭到惡意攻擊而導致的流量突然激增。如果要求次數超過頻率上限,API 會傳回 HTTP 429 錯誤。

全新 Proxy 編輯器

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

  1. 如果您使用的是 Cloud 控制台中的 Apigee UI:請依序選取「Proxy development」>「API Proxies」

    如果您使用的是傳統 Apigee UI:請依序選取「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. 在視覺編輯器右下方的「回覆」窗格中,點選「PreFlow」旁的「+」按鈕:

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

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

    「Response」窗格現在會顯示「尖峰流量防範」政策:

    回應窗格中顯示的尖峰流量防範政策。

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

  1. 在「Response」窗格中,選取「SA-」

    「Policies」分頁中顯示的 SpikeArrest 政策。

  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。或者,您也可以在屬性檢查器中變更「Rate」值,系統會在 XML 檢視畫面中顯示該值。

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

傳統 Proxy 編輯器

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

  1. 登入 Apigee UI
  2. 在左側導覽列中,依序選取「Develop」>「API Proxies」
  3. 選取要新增 SpikeArrest 政策的 API 代理程式。

    如果您按照「入門」教學課程的說明操作,可以將其新增至您在「建立 API Proxy」一文中建立的 API Proxy。

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

    「Develop」分頁位於「Overview」和「Trace」分頁之間。

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

  5. 在左側導覽面板中,依序點選「Proxy Endpoints」>「預設」下方的「PreFlow」。(其他教學課程將介紹「流程」的概念)。
  6. 按一下頂端的「+Step」按鈕,對應到「Request PreFlow」。這會顯示可建立的所有政策分類清單。

    按一下「請求前置流程」中的「步驟」。

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

    建立 SpikeArrest 政策。

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

    查看 PreFlow 和 SpikeArrest 政策。

  10. 在導覽器中,選取「Policies」下方的「SpikeArrest-1」SpikeArrest-1,並在 API Proxy 編輯器中注意以下事項:
    • 政策詳細資料會顯示在 API Proxy 編輯器頂端中央的「Designer」檢視畫面中。
    • 政策的 XML 會顯示在 API Proxy 編輯器底部中央的「Code」檢視畫面中。
    • 政策的 XML 元素和屬性值會顯示在 API Proxy 編輯器右側的「Property Inspector」中。

    「Property Inspector」窗格會顯示 SpikeArrest-1 政策的值。

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

    您可以將速率指定為每分鐘 (pm) 或每秒 (ps) 的整數值。這項限制非常低,僅供本教學課程說明政策。通常會將上限設為更高的值。

    請注意,屬性檢視器中的 Rate 值也會變更為 1pm。或者,您也可以在屬性檢查器中變更「Rate」值,系統會在 XML 檢視畫面中顯示該值。

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

    curl "http://YOUR_DOMAIN/myproxy"

    其中:

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

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

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

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

      如果您在 1 分鐘內嘗試撥打更多次電話,仍會繼續收到錯誤訊息。

    • 編輯政策,將 <Rate> 限制設為 15pm (這表示雲端每四秒可允許大約兩次呼叫),然後儲存並部署 API 代理程式。
    • 執行 curl 指令或重複重新整理瀏覽器 (curl 速度較快)。請注意,如果您在四秒間隔內撥打一或兩通電話,通話就會成功。如果您快速呼叫 (在四秒內呼叫兩次以上),就會收到錯誤訊息。但在每個 4 秒間隔後,您可以繼續撥打電話,而不會像使用 1pm 設定時,在整分鐘內都無法撥打電話。