BBH
-Biz Branding Hub-
投稿日 : 
2020/05/05
更新日 : 
2020/05/05

【AWS】APIGatewayとLambdaを連携させるチュートリアル

APIGatewayを用いてLambdaをHTTPで呼び出す方法について解説します。

概要

APIGatewayとは、独自で作成したビジネスロジックやデータ、または各種AWSサービスをHTTPで呼び出せるようにするためのサービスです。
APIGatewayがHTTPリクエストの受け口となり、適切なバックエンドに割り振ってくれます。

今回はバックエンドにLambdaを指定してAPIを作成してみます。
また、バックエンドにLambdaを指定することをLambda統合と呼ぶようです。

以下が今回作成するAPIの簡単な概略図です。

Lambdaの作成

まずはバックエンドの処理であるLambdaを作成していきましょう。
今回はチュートリアルなので、単純な固定文字列を返すだけの処理を作成します。

APIGateewayサンプル(Lambda)
import json

def lambda_handler(event, context):
    res = {
        "statusCode" : 200,
        "headers" : {"Access-Control-Allow-Origin" : '*'},
        "body" : 'APIGateway Tutorial'
    }
    return res


APIGatewayとLambdaを統合する場合は、LambdaのレスポンスをAPIGatewayでハンドルできるような形式で返す必要があります。
上記のように返却値はbodyに含め、それ以外にステータスコードやヘッダーなどを付与してやる必要があります。
詳細については以下の記事を参照ください。

Lmabdaを作成したら保存して「アクション > 新しいバージョンを発行」をします。

これでLambda側の設定は完了です。

APIGatewayの設定

次にAPIGatewayを設定していきます。

APIGatewayを開き、「APIを作成」を選択します。

APIタイプを選択で「REST API」を「構築」します。

任意の名前や説明を入力。
それ以外はデフォルトのままで、「APIの作成」を選択します。

「アクション > メソッドの作成」を選択し、GETメソッドを作成

統合タイプで「Lambda関数」を選択。
Lambda関数には先ほど作成したLambda関数を設定します。
権限追加のポップアップが出たら、OKを選択します。

作成完了後、「テスト」を選択してテストを実施します。

以下のようにリクエストが返ってくればOKです。

テストが正常完了したら、APIGatewayをデプロイします。
デプロイすることで外部ネットワークからAPIを叩くことができます。
「アクション > APIのデプロイ」を選択。

デプロイするステージの選択画面が表示されます。
はじめてデプロイする場合は、ステージが存在しないので「新しいステージ」を選択します。
ステージ名や説明などは任意の値を入力しましょう。
入力が完了したら「デプロイ」を選択します。

デプロイが完了すると以下のようにステージのURLが表示されます。
このURLにリクエストを投げることでLambdaを起動することができます。

リクエストを投げてみる

Lambda、APIGatewayの設定が完了したので実際にリクエストを投げてみます。
今回作成したのはGETメソッドなので、ブラウザからでも直接起動することが可能です。

以下のようなリクエストが返ってくるはずです。

以上でAPIGstewayのLambda統合のチュートリアルは終了です。
今回はLambdaで固定を返すだけですが、当然パラメータを受けて動的に返却値を返すことも可能です。
パラメータを受けるサンプルについては、以下の記事を参照ください。

Profile

管理人プロフィール

都内でITエンジニアをやってます。
変遷:中規模SES→独立系SIer→Webサービス内製開発
使用技術はその時々でバラバラですが、C#、AWSが長いです。
どちらかと言うとバックエンドより開発が多かったです。
顧客との折衝や要件定義、マネジメント(10名弱程度)の経験あり。
最近はJava+SpringBootがメイン。

Recommend