Background
最近有個需求,因為要求全網站走https但網站允許外站圖,因此沒辦法要求某些圖檔走http
原本在公司內做了轉抓圖直接回吐的程式,但因為從公司Server連外
因此得開Proxy,外站圖實在太多,沒辦法一一開通,也不太有道理全開
原本做法是在外網架個server跑,但Serverless service似乎更適合這需求
所以就找上AWS Lambda Function
在寫Serverless service過程,主要卡在觀念上,瞭解了就滿容易的
先從架構下手比較容易上手
應用架構
三個元件組成,如下圖簡單來說,Lambda只是程式,
需API Gateway來處理http的request及response,
而Cloudwatch就可以monitor及看ap log,還可以設定dashboard及alarm
基本上只要寫好Lambda fucntion及設定Api Gateway就可以動了
那就開始吧~
1. Lambda function
- Create function
剛開始先選樣版來練習(在Blueprint輸入hello)
- Config
下一步填寫function name及role
第一次建立會有role的問題,所以要先create new role
選擇"Basic edge lambda"即可
完成後,就可以看到hello的code,另外右上方有test
可以設定測試案例
沒問題就算完成了,再來就要設定Api Gateway
2. Setup Api Gateway
Api Gateway是來處理http request,再轉call lambda function
所以要設定相關的http request/response header及parameter
知道Api Gateway的定位,就容易設定了
- Create API
找一下Api Gateway(1的部份),然後建立API(2的部份)
- 先從最簡單的get開始
醜醜的動畫...
- 指定lambda function
這個有好一點
因為我的lambda設置在ap-northeast-1(不知道的話,就點回labmda function找一下)
下方的function就會自己帶出來~
這樣就完成了 - 測試一下
click "TEST"
再次click "TEST",右邊就是結果
Response body是null,是因為原lambda function要帶參數,所以是回null
- Request/Response參數
放另一篇,太多看起來挺煩的