API Gateway + Lambda の基礎知識

Lambda
スポンサーリンク

皆さん、こんにちは。hidesanです。

今回は、「APIGateway + Lambda」の基礎知識というテーマでご紹介したいと思います。

 

昨今のシステムは、サーバーレス構成が増えております。

そしてAWSでサーバーレス構成と言ったら「APIGateway + Lambda」という組み合わせは非常に良く使われます。

 

では、「APIGateway + Lambda」という組み合わせによって具体的にはどういったことができるのか?

ということですが、それは以下の記事でも紹介させていただいたようにWebAPIが手軽に作れるということです。

Amazon API GatewayとLambdaを使って簡単なWebAPIを作ってみよう!
皆さん、こんにちわ。 hidesanです。 今回は、AWSサービスを使って簡単なWebAPIを作ってみたいと思います。 APIにも様々なものがありますが、その中でもWebAPIというのはHTTPプロトコルを利用したAPIです。...

 

本記事では、より基本的な部分に立ち返って、「APIGateway + Lambda」についてご紹介したいと思います。
ぜひ最後までお読みくださいませ。

 

スポンサーリンク

そもそもAPIGatewayとは?

「APIGatewayって何?」

という方に簡単にAPIGatewayについてご紹介したいと思います。

 

APIGatewayとは、下図のようにクライアントからのリクエストを受け取り、バックエンドのサービスへ渡すことを主に行うサービスです。

 

 

渡す先はLambdaだけではなく、EC2やKinesis、その他Webサービス等、いろんなものと組み合わせることができます。

 

また、APIGatewayはマネージドサービスとなっておりますので、APIGatewayを使うために別途サーバーを立てる必要はありません。

そのため、APIGateway自体のメンテナンスや拡張性なんかを考える必要はありません。

ボタンをポチポチしていくだけで、APIGatewayが用意されるんです。

とても使いやすいサービスですよね!

 

※そもそもLambdaって何?という方は以下の記事をご一読ください。

Lambdaとは?はじめてのLambda開発
こんにちは、hidesanです。 今回は、Lambda開発の初めの一歩ということで、Lambdaについてご紹介したいと思います。 最近ではサーバーレス開発が脚光を浴びておりますが、 AWSでサーバーレス開発を行うのに欠かせないサー...

 

 

なぜLambaにAPIGatewayが必要なのか?

ここまでAPIGatewayについてご紹介してきましたが、

「なぜLambdaと組み合わせをするの?」

と、疑問に思っている方へ向けてご説明したいと思います。

 

そもそも、Lambdaはプログラムを動かすサービスですが、何らかのトリガーがなければそれは動きません。

 

APIGatewayは、そのトリガーになるサービスの一つです。

APIGatewayを利用することで以下のような流れでLambdaが動くようになります。

  1. クライアントからリクエストを受け取り、指定のLambdaをキック(起動)する
  2. キックされたLambdaが動き、プログラムに沿って処理を行う
  3. Lambdaの処理が完了したら、APIGatewayに処理結果のレスポンスを返す
  4. APIGatewayはレスポンスを受け取り、クライアントへ返す

 

APIGateway + Lambdaを設定する方法

LambdaとAPIGatewayを組み合わせるには以下の2通りの方法があります。

  1. Lambdaのコンソール画面から設定する方法
  2. APIGatewayのコンソール画面から設定する方法

 

今回は(2)の方法についてご紹介したいと思います。

以下は既にLambda関数が作成されている状態を想定しています。
Lambda関数の作り方がわからない、という方はこちらの記事をご一読ください。

 

(1) APIGatewayマネジメントコンソールを開く

(2) [REST API]→[構築]をクリックする

(3) [REST]、[新しいAPI]を選択し、API名を入力します。
入力し終わったら右下にある[APIの作成]ボタンをクリックします。

以上でAPIGatewayの土台が整いました。

 

(4) [アクション]→[メソッドの作成]をクリックします。

(5) すると空のプルダウンメニューが表示されるので、そこをクリックして[GET]を選択し、チェックマークをクリックして確定させましょう。

(6) [Lambda関数]を選択。Lambdaリージョン欄は、Lambda関数があるリージョンを選択します。
そして、Lambda関数欄にLambda名、またはLambda関数のARNを入力し、[保存]ボタンをクリックします。

(7) [保存]ボタンをクリックすると”Lambda関数に権限を追加する”という画面が表示されますので[OK]をクリックして進みます。

これでAPIGatewayとLambdaの基本的な関連付けの設定が完了しました。

あとは下図にて、細かな設定を行います。
例えばリクエストの変数とLambdaが受け取る変数のマッピング方法を変えたり、レスポンス内容を変えたり、色々とできます。

※今回は基礎知識ですので割愛させていただきます。

 

これで完了と思いきや、そうではありません!
ここまで設定した内容を実際に使えるように「デプロイ」しなくてはいけません。

以下より、APIのデプロイの方法をご紹介します。

(8) “/”を選択し、[アクション]→[APIのデプロイ]をクリックします。

(9) “APIデプロイ”という画面が表示されます。
“デプロイされるステージ”欄は、”[新しいステージ]”を選択、ステージ名は任意の名前を入力します。

※ここでいうステージとは、APIをデプロイする先の環境という意味になります。
APIGatewayは、ステージを分けて運用することができます。例えば開発環境用のAPIだったり、本番環境用のAPIだったり。
ステージを変えるとAPIのURLのパスが変わる、という点にご注意ください。

(10) 下図の赤枠の通り、”test”というステージの下に、”/”と”GET”が表示されます。
※表示されない場合は、”test”の左横の”▶︎”をクリックしてください。

(11) “GET”をクリックすると、下図の赤枠のように”URLの呼び出し”が表示されます。
このURLがLambdaと連動したAPIのURLとなります。

(12) 取得したURLをブラウザで表示してみます。

Lambdaのプログラム通りの結果が返ってきました。

 

まとめ

いかがでしたでしょうか?

今回はAPIGateway + Lambdaの基礎編をご紹介させていただきました。

 

Lambda関数はプログラムを動かすサービスだけど、誰かにキック(起動)されなくては動けない。
そしてキックしてくれる相手の1つとして、今回APIGatewayを使った方法をご紹介させていただきました。

 

もちろんAPIGateway以外からもキックすることは可能です。

例えばCloudWatch Eventを使って定期的にLambdaをキックするとか。

それは後日ご紹介させていただきたいと思いますので楽しみにしておいてくださいね。

以上、hidesanでした!

スポンサーリンク
Lambda
Tech Dive
タイトルとURLをコピーしました