星期五, 12月 01, 2017

AWS Lambda Function Step by Step

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

  1. Create function
    剛開始先選樣版來練習(在Blueprint輸入hello)
  2. Config
    下一步填寫function name及role
    第一次建立會有role的問題,所以要先create new role
    選擇"Basic edge lambda"即可

    完成後,就可以看到hello的code,另外右上方有test
    可以設定測試案例


    1. 建立新的test case
    2. 系統已預算,直接created即可

    3. 測試


    沒問題就算完成了,再來就要設定Api Gateway


2. Setup Api Gateway
Api Gateway是來處理http request,再轉call lambda function
所以要設定相關的http request/response header及parameter
知道Api Gateway的定位,就容易設定了

  1. Create API
    找一下Api Gateway(1的部份),然後建立API(2的部份)


  2. 先從最簡單的get開始
    醜醜的動畫...

  3. 指定lambda function
    這個有好一點

    因為我的lambda設置在ap-northeast-1(不知道的話,就點回labmda function找一下)
    下方的function就會自己帶出來~
    這樣就完成了



  4. 測試一下
    click "TEST"


    再次click "TEST",右邊就是結果
    Response body是null,是因為原lambda function要帶參數,所以是回null


  5. Request/Response參數
    放另一篇,太多看起來挺煩的



3. Cloud Watch
  1. 看ap log
    進入CloudWatch Service, 點選"Logs",找對應的Log Group
    如下圖,所有AWS的log都會放在cloudwathch,所以要分group

    log會用時間序切開,這樣比較方便以時間點切入找log
    有時log沒這麼快出現,就點一下1的refresh圖示即可


    進入就可以看到lambda function記的log
    在1的部份,由於未帶參數,所以三個value都是undefind
    如果有帶的話,就會如2的部份

  2. 設定dashboard
  3. 設定alarm
    好歹出了問題要知道
== Cache設定 因為是認url,應該認到uri (含?後帶的參數),所以得在method裡選cache