はじめに
apigateway -> lambdaって作りでアプリケーションを作ることが多くなてきて、
コード書いて、アップロードして、api叩いてデバッグしてってめんどくさい、ローカルでもget postとかで開発したい!
ってことから作りました。
とりあえずクエリーパラメータとjsonを受け取れるところまで!
apigatewayとlambdaを設定する
他のサイトを参考にしてください
- lambdaはこんなの
lambda.py
def handler(event, context):
res = {}
res['method'] = event['context']['http-method']
res['url'] = event['params']['path']
res['query-string'] = event['params']['querystring']
res['json-body'] = event['body-json']
return res
- ApiGatewayのマッピングテンプレートはこんな感じ
#set($allParams = $input.params())
{
"body-json" : $input.json('$'),
"base64-body": "$util.base64Encode($input.body)",
"params" : {
#foreach($type in $allParams.keySet())
#set($params = $allParams.get($type))
"$type" : {
#foreach($paramName in $params.keySet())
"$paramName" : "$util.escapeJavaScript($params.get($paramName))"
#if($foreach.hasNext),#end
#end
}
#if($foreach.hasNext),#end
#end
},
"stage-variables" : {
#foreach($key in $stageVariables.keySet())
"$key" : "$util.escapeJavaScript($stageVariables.get($key))"
#if($foreach.hasNext),#end
#end
},
"context" : {
"http-method": "$context.httpMethod",
}
}
これをローカルで開発したい!
dockerを使って開発環境を作る
githubに上げてあります。
docker build
docker-compose build
docker run
docker-compose up
lambdaを動かす
localhostの:80にアクセスするとlambda.pyが動きます
#GET
curl localhost/aaa?a=1
{
"json-body": {},
"method": "GET",
"query-string": {
"a": "1"
},
"url": "/aaa"
}
#POST
curl -H "Content-type: application/json" -X POST -d '{"a":1,"b":2}' localhost/aaa
{
"json-body": {
"a": "1",
"b": "2"
},
"method": "POST",
"query-string": {},
"url": "/aaa"
}
今後
urlパラメータも取れるようにします