当サイトにはアフィリエイト広告が含まれます。なおレビューは私の感想を書いており、内容を指示するご依頼はお断りしています

「API Gateway」から「Lambda」を呼び出して、クエリパラメータを受け取る(python)

「API Gateway」から「Lambda」の関数を実行する

「アクション」の「リソースの作成」からメソッド(ディレクトリ)を作成し、「/api/dir1/path1」「/api/dir1/path2」を作る。

次に「/api/dir1/path1」を選択した状態で、「アクション」の「メソッドの作成」から「GET」を作成する

GETのセットアップ画面で、呼び出したい「Lambda」を指定して保存します

これで「テスト」を実行すると、「API Gateway」から選択した「Lambda」の関数が呼び出されるようになります。

「API Gateway」から「Lambda」にクエリパラメータを渡す

上記の「メソッドリクエスト」から「URL クエリ文字列パラメータ」に受け取りたいクエリパラメータを登録する。※「必須」「キャッシュ」は一度登録した後に、選択できるようになります

次に「統合リクエスト」から「マッピングテンプレート」を登録する

「マッピングテンプレートの追加」をクリックして、Content-Typeに「application/json」を登録

すると、画面下に以下のような入力エリアが出現します

その入力エリアに、「メソッドリクエスト」の「URL クエリ文字列パラメータ」をJSON形式で登録します

{
    "my_param1": "$input.params('my_param1')",
    "my_param2": "$input.params('my_param2')",
    "my_param3": "$input.params('my_param3')"
}

「my_param1~3」の部分を、自分で設定した「URL クエリ文字列パラメータ」の名称に置き換えてください

以上で、「API Gateway」の設定は完了です

「API Gateway」から送られたクエリパラメータを受け取って、「Lambda」で利用する

def lambda_handler(event, context):
    return {
        'status': 200,
        'body': event['my_param1'] # 自身の設定したクエリパラメータ
    }

といった感じで、

event['my_param1'] # 自身の設定したクエリパラメータ

とすれば、「API Gateway」から送られたクエリパラメータを「Lambda」で使用することが出来ます

API Gateway+Lambdaで、日本語が文字化けしたら

右下の「統合レスポンス」をクリックして

マッピングテンプレートのContent-Typeに application/json;charset=UTF-8

テンプレートに $input.json('$')を入力して保存します。

これで日本語が文字化けしなくなりました。