AWS Lambda(C#)でAPI Gatewayからパラメータを受け取る方法
はじめに
API Gatewayから呼び出されるLambda関数をC#(.NET Core 3.1)で作成した場合の、パラメータの受け渡し方法についてご紹介します。
Lambda関数の作成方法については、前回の記事をご参照ください。
Lambda関数の作成
C#のLambda関数では、下記のAssemby属性を指定することによって、引数及び戻り値について.NETクラスとJSONの相互変換を行なわれます。
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
例えば、下記のようなLambda関数を用意します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Amazon.Lambda.Core;
// Assembly attribute to enable the Lambda function's JSON input to be converted into a .NET class.
[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]
namespace AWSLambda1
{
public class Function
{
public ResponseParam FunctionHandler(RequestParam input, ILambdaContext context)
{
return new ResponseParam
{
StatusCode = 200,
Result = input?.ParamA + " - " + input?.ParamB
};
}
}
public class RequestParam
{
public string ParamA { get; set; }
public string ParamB { get; set; }
}
public class ResponseParam
{
public int StatusCode { get; set; }
public string Result { get; set; }
}
}
ここでは引数用にRequestParamクラス、戻り値用にResponseParamクラスを用意しています。
API Gatewayから以下のようなJSONデータをLambda関数を渡すと、.NETのRequestParamクラスへ自動的にマッピングしてくれます。
{"ParamA":"ValueA","ParamB","ValueB"}
このLambda関数をパブリッシュしておきます。
API Gatewayの作成
AWSマネジメントコンソールから作成したlambda関数を選択し、「トリガーを追加」ボタンをクリックします。

必要な項目を入力し、「追加」ボタンをクリックします。今回は、
- トリガーの種類:API Gateway
- API:Create an API
- API:REST API
- セキュリティ:オープン
を選択します。

画面下部に表示されたAPI名をクリックし、API Gatewayの設定画面へ移動します。
「統合リクエスト」をクリックします。

「Lambda プロキシ統合の使用」のチェックを外します。確認ダイアログが出たら「OK」を押してください。

画面下部にある「マッピングテンプレートの追加」をクリックします。

“application/json”を入力し、テキストボックス右側の「作成」ボタンをクリックします。

テンプレートに下記の内容を入力し、「保存」ボタンをクリックします。ここではクエリストリング”a”,”b”をそれぞれ”ParamA”,”ParamB”にマッピングしています。
{
"ParamA": "$input.params('a')",
"ParamB": "$input.params('b')"
}

以上で設定は終わりです。動作確認してみましょう。
動作確認
元のページに戻り、「テスト」ボタンをクリックします。

メソッドとクエリ文字列を入力し、「テスト」ボタンをクリックします。

うまくいくと、画面右側にレスポンス内容が表示されます。レスポンス本文にLambda関数の戻り値が想定通り出力されていますね。

エンドポイントから実行できるか確認してみましょう。エンドポイントから実行するためにはAPIのデプロイが必要です。
「アクション」 – 「APIのデプロイ」を選択します。

デプロイ先のステージを選択し、「デプロイ」ボタンをクリックします。

デプロイが完了すると、ステージエディターページに遷移します。
左側のツリーから該当のリソースとメソッドを選択すると、画面上部にエンドポイントが表示されます。

以下例のように、エンドポイントにクエリ文字列を付与してブラウザのアドレスバーに入れてみましょう。
https://xxxxxxxxxx.execute-api.ap-northeast-1.amazonaws.com/default/AWSLambda1?a=Value1&b=Value2
ブラウザに以下のような表示がされれば動作確認OKです。
{"StatusCode":200,"Result":"Value1 - Value2"}
以上です。
投稿者プロフィール

- 東京在住のフリーランスエンジニア
最新の投稿
AWS2020.11.05AWS CLI コマンドまとめ ~S3編~
AWS2020.11.02AWS コマンドラインインターフェイス(CLI)をインストールする~Windows編~
その他2020.10.30Chromeでクロスドメインiframe内の要素にアクセスする
AWS2020.10.29AWS API GatewayのREST APIでモックを作成する