AWS Lambdaで簡単なREST APIを作ってみた

はじめまして

Tech Divの山口です。
最近、実務の中でAWSのサービスを触ることが多くなってきたので、初めとしてAWS Lambdaの記事を書きたいと思います。

書きたいこと

  • AWS Lambdaで関数の作成
  • Amazon API Gatewayと連携させてブラウザからLambda関数を呼び出す

AWS Lambdaで関数の作成

さっそく作成していきます!
今回は1から作成していくので、下の画像の「一から作成」を選択していきます。
関数名はテキトーに「sum」とします。
ランタイムはNode.jsを選択します。
 ※ちなみにGo言語やJava、Python、Rubyなんかも選べます。
実行ロールについては会社のアカウントがあるので、「既存ロールを使用する」で会社で作成したロールを選択します。
で、関数作成ボタンをポチッ!

「コードエントリタイプ」をコードをインラインで編集で直接編集します。
冒頭でも言った通り、パラメータを足し算するだけの簡単なプログラムです。

exports.handler = async (event) => {
    let x = event.key1;
    let y = event.key2;
    let total = parseInt(x) + parseInt(y);
    
    const response = x + " + " + y + " = " + total;
    return response;
};

Amazon API Gatewayと連携させてブラウザからLambda関数を呼び出す

サービスからAmazon API Gatewayを選択し、「APIの作成」ボタンを押します。
下記を入力したら 「APIの作成」 ボタンを押します。そうするとAPIが作成されます

APIが作成できましたら、アクションボタン>API作成>GETメソッドを選択してGETメソッドを作成します。作成する際に、下記のように先ほど作成したLambda関数を指定します。保存ボタンを押します。

GETメソッドが作成されました!!

ただ、これだけではまだエンドポイントなどがない状態なので、細かい設定をしていきます。
細かい画像は省略させていただきますが、統合リクエストのリンクからマッピングテンプレートを選択し、マッピングテンプレートの追加>Content-Typeをapplication/jsonに設定し、下記JSON記述を行います。

{
 "key1": "$input.params('key1')",
 "key2": "$input.params('key2')"
}

これで準備が整いました!
アクション>APIのデプロイからデプロイを実施します。
今回は[新しいステージ]を選択してステージ名をtestにしました。

エンドポイントが発行されました!!
最後の/testはステージ名なのでproductionなどの本番提供用のステージを分けることもできます。
ということでさっそくURLたたいてAPIを呼び出したいと思います!
URLの最後に下記パラメータを付けてブラウザから呼び出します。

https://発行されたエンドポイント/test?key1=1&key2=2

無事に呼び出しが成功して、パラメータに渡した値が足し算されました

まとめ

今回はAWS Lambdaでの関数作成とAmazon API Gatewayへの連携を書きました。
次回はDBも絡めた構成やAWS Step Functionsも触ってみたいと思います。
ありがとうございました!