AWS lambda
Last updated
Last updated
我們會使用到AWS Lambda 與API Gateway
兩個的用途分別為,Lambda可以讓我們寫function,API Gateway用來寫path與http method讓別人發出某個對應request時去執行Lambda function
1.前往 AWS Lambda
2.選左上的Create a Lambda function
,之後選擇左上的 Blank Function
,再來先點選Next
3.填寫function名稱,runtime選擇Node.js
將code部分改為
有關handler function的說明 http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-handler.html
4.拉到下面Role選單選擇Create a custom role
然後會跳出一個視窗點選Allow
,這樣Role即是lambda_basic_execution
5.點選Next並建立,之後可點擊Test
6.再來前往AWS 的API gateway服務,點選get start
,之後選擇New API
選項,並填寫名稱
7.點選Actions
的下拉選單,選擇Create resource
,輸入path與名稱後按確定
8.點選Actions
的下拉選單,選擇Create method
,然後下拉選單選擇POST
,然後勾選Lambda Function
,之後往下選擇Lambda Region
,輸入剛才的Lambda Function name
即可選擇Save
9.點選閃電圖案的Test
然後下拉點選Test
新增好Function後點save後才能按Test,才有反應
回到aws 的 Lambda 點選剛才創建的function兩下,進入修改code的地方
即可使用node.js模組
或是可使用第三方的模組,並且與資料庫溝通
這時先開啟terminal
index.js
然後輸入
之後輸入open .
把資料夾的內容index.js和node_modules壓縮成zip
注意:不可直接壓縮資料夾,要進入資料夾後選擇index.js和node_modules再按壓縮,因為index.js必須在zip檔案的根目錄
回到AWS Lambda上的function,將Code entry type
旁的選單選擇為Upload a ZIP file
然後把剛才的ZIP檔案拉上去
之後點選TEST即可
再來前往API Gateway
點選Actions
選單,選擇Deploy API
,選擇new stage然後輸入名稱
過幾秒他會跳出invoke url
,如下圖
點選左側Resource在點選Action即可修改API gateway
記得之後如果修改要重新再deploy
到AWS 的cloudwatch點選左側的Logs
即可看到
https://serverless.com/framework/docs/
之後資料夾內新增了兩個檔案handler.js
與serverless.yml
之後回到aws 然後點選service
中的IAM
,左側點選Users
,之後選Add user
然後往下拉,之後按下Create Access Key
按鈕
這邊記得把Access key ID
跟Secret access key
記下來
然後到terminal將這兩個加入電腦環境變數
然後點選左側選單Users
選擇Permissios
Tab 點選Add permissions
然後選擇Attach existing policies directly
在輸入框輸入AdministratorAccess
然後把他加入
然後修改serverless.yml
把region的#
拿掉,後面改為
並且把function下面的event註解拿掉
最後
成功後會給你一個可以去request的連結
回到AWS lambda上看到多出一個function
API gateway也會多出一個
於terminal輸入
測試本地