本頁適用於 Apigee 和 Apigee Hybrid。
查看
Apigee Edge 說明文件。
課程內容
您將在本教學課程中學習:
- 新增會影響要求和回應的政策。
- 查看政策的影響。
事前準備
- Apigee 安裝。請參閱總覽和先決條件。
- 至少已附加一項政策的有效 API Proxy。請參閱「建構第一個 API Proxy 總覽」。
- 在電腦上安裝 HTTP API 用戶端,以便發出 API 呼叫。教學課程範例使用
curl
。
新增 SpikeArrest 政策
在本教學課程中,您將新增並設定 SpikeArrest 政策,以保護目標服務免於因使用量增加、用戶端發生錯誤或遭到惡意攻擊而導致的流量突然激增。如果要求次數超過頻率上限,API 會傳回 HTTP 429
錯誤。
全新 Proxy 編輯器
如要將 SpikeArrest 政策新增至 API Proxy,請按照下列步驟操作:
如果您使用的是 Cloud 控制台中的 Apigee UI:請依序選取「Proxy development」>「API Proxies」。
如果您使用的是傳統 Apigee UI:請依序選取「Develop」>「API Proxies」,然後在「Proxies」窗格中選取 Proxy 的環境。
如果您按照「入門」教學課程的說明操作,可以將其新增至您在「建立 API Proxy」一文中建立的 API Proxy。
- 按一下「開發」分頁標籤。
- 在左側窗格中,按一下「政策」列中的「+」按鈕。
在「建立政策」對話方塊中,點選「選取政策類型」欄位,然後向下捲動至「流量管理」,然後選取「SpikeArrest」。
您可以視需要變更政策的名稱和顯示名稱。 根據預設,Apigee 會為政策名稱提供簡短的前置字串,在本例中為 SA-。您可以在前置字串後方加上一系列以連字號分隔的描述性字詞。請參閱 命名慣例。
完成後,按一下「建立」即可建立政策。
您已建立尖峰流量防範政策,現在可以將該政策新增至 PreFlow 中的步驟。
- 在左側窗格中,依序選取「Proxy Endpoints」>「default」>「PreFlow」:
注意:您可能需要展開右側窗格中的視覺編輯器,才能查看所有元素。如要這麼做,請按一下並稍微向下拖曳視覺編輯器和文字編輯器之間的分隔線。
- 在視覺編輯器右下方的「回覆」窗格中,點選「PreFlow」旁的「+」按鈕:
- 在「新增政策步驟」對話方塊中,選取「尖峰流量防範」政策。
按一下「新增」,附加政策。
「Response」窗格現在會顯示「尖峰流量防範」政策:
您已將尖峰流量防範政策附加至 PreFlow,現在可以嘗試變更政策的程式碼:
在「Response」窗格中,選取「SA-」。
- 文字編輯器會顯示 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>
-
在政策的 XML 中,將
<Rate>
元素的值變更為1pm
(這表示雲端大約每 60 秒允許兩個要求)。您可以將速率指定為每分鐘 (
pm
) 或每秒 (ps
) 的整數值。這項限制非常低,僅供本教學課程說明政策。通常會將上限設為更高的值。請注意,屬性檢視器中的
Rate
值也會變更為1pm
。或者,您也可以在屬性檢查器中變更「Rate」值,系統會在 XML 檢視畫面中顯示該值。 - 按一下「儲存」,即可儲存目前修訂版本的變更內容。
傳統 Proxy 編輯器
如要將 SpikeArrest 政策新增至 API Proxy,請按照下列步驟操作:
- 登入 Apigee UI。
- 在左側導覽列中,依序選取「Develop」>「API Proxies」。
- 選取要新增 SpikeArrest 政策的 API 代理程式。
如果您按照「入門」教學課程的說明操作,可以將其新增至您在「建立 API Proxy」一文中建立的 API Proxy。
- 在新 API Proxy 的編輯器中,按一下「Develop」分頁:
您可以使用 API Proxy 編輯器查看 API Proxy 的結構,並設定其流程。 編輯器會以視覺化方式呈現 Proxy 的請求和回應訊息流程,以及可編輯的基礎 XML 顯示畫面,以便您定義 Proxy。
- 在左側導覽面板中,依序點選「Proxy Endpoints」>「預設」下方的「PreFlow」。(其他教學課程將介紹「流程」的概念)。
- 按一下頂端的「+Step」按鈕,對應到「Request PreFlow」。這會顯示可建立的所有政策分類清單。
- 在「流量管理」類別中選取「SpikeArrest」SpikeArrest。系統會顯示「New Policy」對話方塊:
- 保留預設名稱,然後按一下「新增」。新政策會附加至要求的 PreFlow 流程。
- 在導覽器中,確認「Proxy Endpoints」>「default」下方的「PreFlow」仍處於選取狀態,並在 API Proxy 編輯器中注意以下事項:
- 新的 SpikeArrest-1 政策已新增至 API Proxy 編輯器左側導覽器的「Policies」下方。
- 系統會將 SpikeArrest-1 圖示新增至 API Proxy 編輯器頂端中央的 Designer 檢視畫面,這是 Proxy 訊息流的視覺化呈現。
- 政策的 XML 會顯示在 API Proxy 編輯器底部中央的「Code」檢視畫面中。
- 在導覽器中,選取「Policies」下方的「SpikeArrest-1」SpikeArrest-1,並在 API Proxy 編輯器中注意以下事項:
- 政策詳細資料會顯示在 API Proxy 編輯器頂端中央的「Designer」檢視畫面中。
- 政策的 XML 會顯示在 API Proxy 編輯器底部中央的「Code」檢視畫面中。
- 政策的 XML 元素和屬性值會顯示在 API Proxy 編輯器右側的「Property Inspector」中。
-
在政策的 XML 中,將
<Rate>
元素的值變更為1pm
(這表示雲端大約每 60 秒允許兩個要求)。您可以將速率指定為每分鐘 (
pm
) 或每秒 (ps
) 的整數值。這項限制非常低,僅供本教學課程說明政策。通常會將上限設為更高的值。請注意,屬性檢視器中的
Rate
值也會變更為1pm
。或者,您也可以在屬性檢查器中變更「Rate」值,系統會在 XML 檢視畫面中顯示該值。 - 按一下「儲存」,即可儲存目前修訂版本的變更內容。
- 使用「Deploy to:」按鈕部署變更。
-
使用
curl
呼叫 API,並使用網域的網址:curl "http://YOUR_DOMAIN/myproxy"
其中:
ENV_GROUP_HOSTNAME
是您在佈建期間設定的環境群組主機名稱。DOMAIN_HOSTNAME
是網域主機名稱。
詳情請參閱「 測試 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
設定時,在整分鐘內都無法撥打電話。