@see
もくじ
実際の利用はServerless Frameworkを利用します
パッケージとかをzipでまとめたり、GUIで定義が大変!
Serverless Frameworkを利用することで賢く利用できます。
ローカルでの開発
exports.handlerの引数3兄弟
event(object)
- パラメータ
- ヘッダ
- HTTPリクエスト情報
context(object)
- 実行時の環境情報
callback(function)
- 引数に渡される関数
eventとcontextを出力してみよう
event.json
event { "key1": "value1", "key2": "value2", "key3": "value3" }
index.js
exports.handler = async (event, context) => { // TODO implement const response = { event: event, // event情報 context: context, // context情報 statusCode: 200, body: JSON.stringify('Hello from Lambda!'), body2: JSON.stringify({ mei: 'yuu', sei: 'kanehiro' }) }; return response; };
response
Response: { "event": { "key1": "value1", "key2": "value2", "key3": "value3" }, "context": { "callbackWaitsForEmptyEventLoop": true, "functionVersion": "$LATEST", "functionName": "TestFunc", "memoryLimitInMB": "128", "logGroupName": "/aws/lambda/TestFunc", "logStreamName": "2019/10/18/[$LATEST]33e2b238e100432f97e0396ebf062cb9", "invokedFunctionArn": "arn:aws:lambda:ap-northeast-1:xxxxxxxx:function:TestFunc", "awsRequestId": "XXXXXXXX-de55-4384-bb27-728ebcb3ca8e" }, "statusCode": 200, "body": "\"Hello from Lambda!\"", "body2": "{\"mei\":\"yuu\",\"sei\":\"kanehiro\"}" }
その2 値を渡して出力させよう
event.json
{ "mei": "優", "sei": "金広", "like": "蕎麦", "job": "よろずや" }
index.js
exports.handler = async function(event, context, callback) { var data = event; const response = { sei: data.sei, mei: data.mei, like: data.like, job: data.job } return response; };
response
Response: { "sei": "金広", "mei": "優", "like": "蕎麦", "job": "よろずや" }
event.jsonの値によって分岐, callback
event.json
{ "mei": "優", "sei": "金広", "like": "蕎麦", "job": "よろずや" }
index.js
exports.handler = async function(event, context, callback) { var mei = event.mei; if(mei) { callback(null, mei + 'さん!'); } else { callback(null, '誰?'); } };
response
Response: "優さん!"
meiの値を削除してみる。
event.json
{ - "mei": "優", "sei": "金広", "like": "蕎麦", "job": "よろずや" }
Response: "誰?"