最近把這個IP地理資料庫的API搞定之後, 想把之前API Gateway(以下簡稱為 APIGW)幾個之前沒弄懂的部分再摸熟一點:

  • Custom Domain Names: 如上面的Demo,可以把API整合到自己的Domain之下.
  • API Keys: 給開發人員用的金鑰
  • Usage Plans: 流量控管計畫
  • 使用API Key 呼叫API

Custom Domain Names

這個功能是把API 的URL 從:

https://api-id.execute-api.region.amazonaws.com/stage
轉換成
https://api.example.com/myservice

步驟:

  • 先切換到美東 Virginia區(必要!)
  • 先在 AWS Certificate Manager (ACM)服務裡,新增一筆domain name,然後要求憑證,例如: api.crazyfan.net
  • 等著收Email 確認信
  • 切換到你自己原來的Region
  • 回到 AWS APIGW - Custom Domain Names - Create Custom Domain Name 新增一筆
  • 填入Domain Name/ ACM Certificate(你剛才在ACM服務裡申請的)
  • 填入 API 網址對應, 例如我就填了 ipgeo 對應到我寫好API 的Test Stage, 以後我的API網址就會是 api.crazyfan.net/ipgeo/...
  • 存檔, 然後它要等約20分鐘, 根據討論區看來,似乎要推送資料到全世界的CloudFront所以比較久.
  • 然後你會取得一個 Distribution Domain Name ,例如 ooooxxxxxx.cloudfront.net
  • 到 AWS Route53服務裡自己的網域裡, 新增一筆 CNAME Record,以我來說就是新增一筆 api.crazyfan.net 指到 ooooxxxxxx.cloudfront.net
  • OK

API Keys

這是給開發人員用的金鑰. 概念上你應該把這個當做 API 識別用途, 而不是帳密用途.

  • 隨意產生一個Key
  • 先不要跟任何 Usage Plans 連結上,下個步驟再處理.

Usage Plans

這個功能協助你控管 API的使用量. 啟動以後,該筆API的存取,一定要使用API Key,不能再裸奔了.

  • AWS APIGW -APIs -你使用的 API - Resources - Method Request - API Key Require 修改成 True - 打勾.

--

  • 然後你得重新 Deploy / redeploy 你這隻 API才會生效 (這點容易忘記,請多留意)
  • AWS API Gateway - Usage Plans - Create 一個新的用量計畫 - Quota之類的大概填一下 (由於APIGW 沒有免費方案緩衝,一旦開始用就會產生費用, 約每2500~2800次call 計為 0.01美金,自己抓一下)
  • 下一步 - Associated API Stages : 把這個Usage Plan跟你寫的 API關連起來.
  • 下一步 - Usage Plan API Keys: 選擇你剛才Create的API Key.
  • 大功告成, 你現在擁有的是一個可控制流量的API, 而且得用API Key才能呼叫.
  • 目前放在頁面頂端的DEMO, 每天的流量上限控制在幾百次內, 費用可控制,所以可以放心地公開DEMO,也算這功能順便帶來的優點吧.

呼叫方式

呼叫的時候, 需要將 x-api-key 放在 header 送出去(注意:是header,不是body). 所以現在不能再 API URL 貼在瀏覽器網址列了那麼簡單了. 平常測試我覺得用 curl 是比較輕鬆的方式, 以下是指令參考:

curl -k -H "x-api-key: oooxxxoooxxxoooxxxoooxxx" https://api.crazyfan.net/ipgeo/8.8.8.8

參考資料