Amazon API Gateway 是一種全受管的服務,可讓開發人員輕鬆發佈、維護、監控和保護任何規模的 API. 它的角色有點像是我們一般的網頁程式中, 拿掉後段那些商業邏輯、查詢資料庫、字串處理所剩下的部份. 像是規劃 API網址格式、接傳參數處理, 存取控制這類的任務.
Serverless 架構的概念最近漸漸興起, 由於管理基礎建設始終就是需要心力去照顧的工作, 所以無伺服器架構這種新概念, 不用再管理Server, EC2也不開了, 那或許能再解放一些生產力出來, 讓大家的注意力更集中在有價值的地方.
初探 API Gateway
最近在玩 API Gateway 與後端串接 Lambda 吃了一些苦頭, 由於網路上能找到的文件資源大多以 NodeJS居多, 使用 Python 的就比較辛苦些.
以下推薦兩個連結, 能協助使用這樣組合的人迅速通過新手村的考驗:
- Build a Python Microservice with Amazon Web Services Lambda & API Gateway : 這是一個圖解非常多的 HelloWorld, 教你如何Create一個新的 API, 並且後端使用 Python 寫個 Lambda Function 來接參數、回傳資料.
- How to pass a querystring or route parameter to AWS Lambda from Amazon API Gateway : API Gateway 有個概念就是, 你的API如果想把參數傳遞到後方, 這些參數必需得登記、mapping轉換的步驟, 參數才能通過給後方的Lambda繼續處理. 否則 Lambda 從 event 接收到的會是空資料.
股價查詢API
這個練習題的組成如下:
- downloader: 交易所的每日收盤價
- parser: 將資料處裡, 轉成精簡的 csv ,放在 S3
- api gateway: 新建一個api, 網址 https://yourdomain.com/t/qureyprice/{id} , 設定參數轉換,並且指定後方的 lambda function 來處理後面的事.
- lambda function: 收到 api gateway傳來的參數後, 把需要的股價資料 JSON 回傳.
- 前端查詢頁面: 用 jQuery.getJSON() 寫的查詢頁面.
定價
- API 呼叫: 每百萬次 3.5 ~4.25 USD
- 頻寬傳輸: 跟以往的Data Transfer定價一樣, 網內不收費,網外收費.
大概相當於每10000次呼叫就要1~1.3塊台幣. 比起 AWS Lambda 每百萬次 0.2 USD,相差20倍左右. 感覺API Gateway 並不便宜. 我覺得開發速度的確會更快一些, 用途上,使用量較低的服務可能比較適合,例如上傳大頭照存到S3 這類的用途.