31
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AWS Lambdaにクエリ文字列(get値)を引数で渡すトリガを設定する

Posted at

やりたいこと

クエリ文字列(get値)付きのURLをキーにLambdaを実行させたい。
そして、必須のクエリ文字列がない場合はエラーで弾きたい。

先にまとめ

  1. LambdaのトリガーにAPI Gatewayを設定
  2. API GatewayGetメソッドを作成
  3. Getメソッドのメソッドリクエストを開く
  • リクエストの検証 -> クエリ文字列パラメータおよびヘッダーの検証に変更
  • URL クエリ文字列パラメータ にクエリ文字列を追加で、必要なgetのkeyを追加(必要に応じて、必須にチェックを付ける)
  1. Getメソッドの統合リクエストを開き、本文マッピングテンプレートを開く
  • リクエスト本文のパススルー-> **テンプレートが定義されていない場合 (推奨)**を選択
  • application/jsonを追加する

記載は、以下の形(fooを任意で書き換える)

application/json
{
  "foo": "$input.params('foo')"
}

アクションAPIデプロイを実行すると反映される。

実装の流れ

Amazon API GatewayでAWS Lambda関数にクエリ文字列をパラメータとして渡す - Qiitaを参考に実装する

1. Lambda関数を準備する

確認用のfuntionを設定する

lambda関数コード(nodeJs)
exports.handler = function(event, context) {
    console.log(JSON.stringify({event: event, context: context}, null, 2));
    context.succeed({event: event});
};

2.URLを処理するAPI Gatewayのメソッドを準備する

Designerから、API Gatewayを選択し、トリガーの設定

  • API名 -> APIの設定名
  • デプロイされるステージ -> 識別としてURLの値に使われる値
    (セキュリティは今回はオープンを選択)

設定が終わったら、ページ上部の保存でLambda全体の設定を保存する

3.API Gatewayの詳細設定

メソッドを作成

API Gatewayで、作成したAPI名のメッソドをのリソースを開く

  1. リソースでANYメソッドがある場合、今回は必須のGet値がない場合は弾くためアクションからメソッドを削除する。
    any削除.PNG

  2. アクションメソッドを作成Getを作成

  • 総合タイプはLambda関数を選択する

メソッドリクエストで、必須の値をURL クエリ文字列を指定

  • リクエストの検証で、クエリ文字列パラメータおよびヘッダーの検証を選択
  • URL クエリ文字列パラメータ に追加したいパラメータ文字を入力する(必須を選択することで、パラメータが存在しない場合はエラーにできる)

メソッドクエスト作成.PNG

統合リクエストで、パラメータをマッピングする

本文マッピングテンプレート を開き、

  • リクエスト本文のパススルーで**テンプレートが定義されていない場合(推奨)**を選択
  • マッピングテンプレートの追加を選択
  • Content-Typeにapplication/jsonを入力
  • テンプレートを以下のように入力し、「保存」する
application/json*
{
  "Lambdaで受け取る値": "$input.params('URLパラメータ')",
  "foo": "$input.params('hoge')"
}

統合リクエスト作成.PNG

テストで文字列引数を流してみる

テスト実行前.PNG

テスト例
{
  "event": {
    "foo": "fuga"
  }
}

アクションからAPIのデプロイを実行することで公開される

以上です。
お疲れ様でした!!

31
33
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
33

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?