API Gateway + Lambda 已經是個很泛用的組合
使用 API Gateway 專心處理路由和參數驗證
而 Lambda 則專心處理業務邏輯的部分
但是總有一些特別的情境
像是 Lambda 調用其他的程式等待執行節
導致這個 Lambda Function 的 Runtime 有點長
官方文件中明確說明 timeout 時間為 30 秒
而且這個限制是不可調整的
許多人可能會說:「這樣我們直接呼叫 Lambda Function 不就好了」
AWS Lambda 提供長達 15 分鐘的 Runtime 時間
這樣就可以解決超時問題又可以順利完成功能
只是相對來說 URL 醜一點而已
嚴格來說,捨棄 API Gateway 直接呼叫 Lambda
還有可能少考慮到一些安全性的問題
官方對於 AWS Lambda 其實還有基於資源型的 Policy
這個是個可以提高安全性的方式
但是仍然無法解決網址很醜的問題
這時候我們可以考慮在前面掛一層 Load Balance
有了 Load Balance 以後
對外我們可以針對 Port 做限制
對 Lambda 的來說來源依舊是統一來自 AWS 上的資源
不用擔心 AWS Lambda 特規不好管理的問題
而多了 AWS Load Balance 比較大的好處
除了可以綁憑證
讓網址看起來更加合規以外
也可以在 Load Balance 上綁定 Web ACLs
處理一些常見的網路攻擊
整體安全性提升不少
如果提供的不是動態資料
其實還可以在 Applicatoin Load Balance 前方多掛 Cloud Front 做 Cache
參考資料: