本文指導您如何使用API Gateway訪問VPC內部的後端服務API,並詳細說明如何運用阿里雲APP認證中的AppCode來實現安全調用。
前提條件
建立VPC環境,可參見搭建IPv4專用網路和搭建IPv6專用網路。
建立ECS伺服器,可參見建立ECS執行個體。
購買VPC環境的SLB、ECS,並搭建服務。
本例API Gateway的後端服務選擇的是Virtual Private Cloud的ECS執行個體,ECS中部署了Web服務,使用的是Nginx,連接埠使用的是80連接埠。
配置流程
使用API Gateway訪問VPC內部的後端服務API,具體配置流程如下:
建立VPC授權
如果您想讓API Gateway能夠訪問VPC,則需要建立VPC授權。
登入API Gateway控制台,選擇地區並在左側導覽列選擇API管理 > VPC授權。
在授權列表頁面,單擊右上方建立授權。
在建立VPC授權頁面,輸入VPC授權名稱、VPC Id、執行個體Id或地址、連接埠號碼。
說明若需要指定網域名稱來訪問SLB或ECS上的網站(vhost),可將網域名稱配置到Host。
VPC Id、執行個體ID或私網地址可在後端服務(ECS、CLB等)執行個體詳情中可以找到。
ALB網路類型必須為私網類型,並且建立後不可修改為公網類型,修改為公網類型後引起的網關請求失敗,後果需自行承擔。
建立分組
API分組是API的嵌入式管理單元,因此需要先建立API分組,然後在分組下建立API。
登入API Gateway控制台,選擇地區並在左側導覽列選擇API管理 > 分組管理,單擊右上方建立分組。
在建立分組彈框頁面,選擇執行個體,輸入分組名稱為
nginx-demo
,BasePath為/
,單擊確定。
在分組列表查看建立的分組,點擊分組名稱可以進入到分組詳情頁,進行綁定網域名稱、修改基本資料、變更分組執行個體等操作。
API分組會自動分配公網次層網域,此次層網域僅供調試使用,如果直接存取此網域名稱,每天有1000次的限制(海外Region及中國香港限制100次/天)。因此建議為分組綁定自己的獨立網域名稱後使用。
建立API
登入API Gateway控制台,選擇地區並在左側導覽列選擇API管理 > 分組管理。
在分組列表頁面下,單擊所建立的
nginx-demo
分組操作列下的API管理。在API列表頁面,單擊右上方建立API。
在建立API頁面的基本資料欄,配置如下資訊,單擊下一步。
配置項
樣本值
分組
nginx-demo
API名稱
nginx-test
安全認證
阿里雲APP
AppCode認證
允許APPcode(header&Query)認證
簽名演算法
HMAC_SHA256
在定義API請求欄,配置如下資訊,單擊下一步。
配置項
樣本值
協議
HTTP,HTTPS。
請求Path
/nginx
HTTP Method
GET
入參請求模式
入參透傳
說明定義client端(如瀏覽器、手機APP或其他的業務系統)如何請求您的API,需要確定的內容包括請求協議、請求Path、HTTP Method、入參請求模式、和入參定義。在本例中,入參請求方式選擇入參透傳,表示用戶端發送過來的參數API Gateway不做處理,直接透傳給後端VPC。
在定義API後端服務欄,配置如下資訊,單擊下一步。
配置項
樣本值
後端配置
選擇自訂後端服務
後端服務類型
選擇VPC
VPC授權名稱
***-microservice
後端請求Path
/
HTTP Method
GET
後端逾時
10000
說明本步驟是定義API Gateway收到client端的請求後,如何參數映射以及串連哪個後端地址。本例中的後端服務類型選擇VPC,選擇前面步驟中建立的VPC授權或手動輸入VPC授權名稱,然後填寫後端請求path。
在定義返回結果欄,單擊建立。
說明本步驟用於API協助文檔的自助產生,協助API使用者更好地理解。可以設定返回ContentType、返回結果樣本和失敗返回結果樣本。本例中不涉及到這部分,因此可以點擊建立按鈕。
在建立成功之後彈框中單擊發布。
在發布彈框中發布的環境選擇線上,輸入請填寫變更備忘,單擊發布。
說明對API進行過修改後,都需要發布到對應的環境(API Gateway內建了三個環境:"線上"、"預發"、"測試")中,新配置才會生效。
建立應用和API授權
應用(APP)是調用API服務時的身份。在本例建立API時,認證方式選擇的是“阿里雲APP認證”,因此在API發布後,還需要建立APP,並將APP和API的對應關係建立好,才能夠正常訪問。
建立應用
登入API Gateway控制台,選擇地區並在左側導覽列選擇API調用 > 應用管理。
在應用與授權頁面,單擊右上方建立APP。
在建立應用頁面,輸入應用程式名稱,單擊確定。
在應用與授權頁面,單擊已建立好的應用程式名稱,進入應用詳情頁面,可以看到阿里雲APP下有兩種認證方式,AppKey和AppCode。本例中我們選擇使用APPCode的方式進行簡單認證。關於阿里雲APP的更多描述可見此文檔使用簡單認證(AppCode)方式調用API。
對API進行授權
登入API Gateway控制台,選擇地區並在左側導覽列選擇API管理 > API列表。
在API列表頁面,找到已建立好的
nginx-test
API,單擊操作列> 授權。在授權頁面,選擇選擇要授權的環境為線上。搜尋之前建立的應用,單擊添加並確定,提示授權成功,即成功授權。
安全性群組允許存取網關出口地址
若您的ECS安全性群組沒有對相應的連接埠允許存取所有網段,那麼就需要您在安全性群組中允許存取API Gateway的出口地址,避免安全性群組攔截。 網關的出口IP為API分組所在的執行個體的出口地址。
登入API Gateway控制台,在左側導覽列選擇API管理 > 分組管理,在分組列表頁面,單擊所建立的目標API分組名稱。
在分組詳情頁面,查看分組所在的執行個體類型。
在左側導覽列選擇執行個體與叢集,單擊執行個體類型,找到對應執行個體查看到出口地址資訊。
登入ECS控制台,在左側導覽列選擇執行個體與鏡像 > 執行個體 。單擊所建立的ECS執行個體,進入詳情頁面,選擇安全性群組欄,單擊安全性群組名稱,在安全性群組詳情頁面,選擇入方向 > 快速添加,配置網關的出口地址。
調試API
API Gateway提供了線上調試的功能,因此建議在API Gateway上完成API配置之後,可以先通過此功能確認API是否配置成功,然後再通過client端進行調用。
登入API Gateway控制台,在左側導覽列選擇API調用 > 調式。
在調試頁面選擇,所建立的
nginx-test
API,驗證方式選擇使用AppCode,然後單擊發送請求,即可看到如下圖資訊說明配置成功。
調用API
可參考文檔用戶端調用API。
如果網域名稱沒有指定環境,調用API時,預設是調用線上環境的API。關於API環境,詳情可參考環境管理。
本文主要的目的是快速入門,並未考慮後端的高可用,若您有需求可參考使用VPC內資源作為API的後端服務。