AWSのAPI Gatewayの使い方

動機

IoTでAPI使いたいけどパワーないから余計な処理はしたくない。
AWSでAPIをラッピングしてIoT側の処理をできるだけ減らそう。
→ AWS API Gatewayを使ってみる
→ あれ?値渡しどうするんだ?

Lambdaの設定

  1. 受け取ったものをそのまま返す式を作る

  2. Select blueprintをSkip

  3. Name:echo,Runtime:Node.js

  4. Edit Code inline

    exports.handler = function(event, context) {
    console.log(JSON.stringify({event: event, context: context}, null, 2));
    context.succeed({event: event});
    };
    

APIの作成

パラメータの受け渡し(GET)

  1. APIの作成

    1. Create API
    2. Create Resourceでechoを追加
    3. Create MethodでGETメソッドの追加
  2. Method Requestの設定

    1. URL Query String Parametersを開く
    2. nameにparamを追加
  3. Integration Requestの設定

    1. Integration typeはLambda functionでechoを設定

    2. Mapping Templateにapplication/jsonで以下を設定

      {
        "param": "$input.params('param')"
      }
      
  4. 試してみる

    1. https://xxxx.execute-api.region.amazonaws.com/stageName/echo?param=123
    2. {"event":{"param":"123"}}が表示されれば成功

パラメータの受け渡し例

  • $input.params()
    • クエリ全体を取得
  • $input.params('a')
    • クエリのパラメータaを取得
  • $input.json(x)
    • request bodyのxをjson形式で返す
    • $input.json($)で全体を取れる
  • $input.path(x)
    • request bodyのxを返す

参考先

その他