AWS

【AWS Lambda】サーバレス開発の準備(Lambda+ API Gateway)

・AWS LambdaとAPI Gatewayの連携
・API Gatewayのコンソールで結果確認

はじめに

AWS Lambdaを使う中で一番有名なAPI Gatewayとの連携の紹介となります。
この記事ではAPI Gatewayのコンソールでテストを行いAWS LambdaでHello Worldを返却します。

AWS Lambdaを初めて触る方は下記を参考ください。

【AWS Lambda】はじめてのサーバレス開発①(PythonでHello Worldを確認) ・AWS Lambdaを初めて触る方・AWS Lambdaを動かしてHello Worldを確認 はじめに AWSの超有名...

AWS Lambdaの状態

AWS Lambdaは下記で設定したものを使っていますので参考ください。

【AWS Lambda】はじめてのサーバレス開発①(PythonでHello Worldを確認) ・AWS Lambdaを初めて触る方・AWS Lambdaを動かしてHello Worldを確認 はじめに AWSの超有名...

上記からの変更として、コードを以下にしています。(Python3.7)

import json

def lambda_handler(event, context):
    hoge = json.dumps(['hoge', 'Hello World'])
    return {
        'statusCode': 200,
        'body': hoge
    }

hogeという変数の中にJSON形式でHello Worldを設定しています。
API Gatewayとの連携はJSON形式で行います。

API Gatewayへ移動

まずは以下URLからAPI Gatewayのコンソールに移動します。

https://console.aws.amazon.com/apigateway

移動後、APIを選択して、APIを作成を押します。

API Gatewayの作成

APIタイプを設定します。
今回はブラウザ上で確認したいので一般的なREST APIを「構築」を選択します。

REST APIの作成します。
今回は難しいことは考えずデフォルト設定のまま、API名を任意に設定します。
API名を設定後、APIの作成を選択します。

リソースの設定

API Gatewayを作成後リソースを設定します。
このリソースによって、実行したいLambda関数の指定やそれに伴うURLパラメーターを設定します。

今回は、「testPython」というリソースを作成して、それが呼ばれるとLambda関数の実行を設定します。

まずはリソースの作成です。
リソース画面のアクションにて「リソースの作成」を選択します。

子リソース作成の画面が表示されます。
リソース名を任意に設定して、「リソースの作成」を選択します。

メソッドの設定

リソース作成後はメソッドを設定します。
今回はLambda関数を呼ぶだけのためGETを設定します。
前述で作成したリソースを選択するとプルダウンが表示されるので「GET」を設定してチェックボタンを押します。

Lambda関数を設定

リソースとメソッドを設定するとセットアップ画面が表示されます。
デフォルトでは統合タイプにLambda関数が設定されているため変更せず、Lambda関数に作成している関数名を設定します。

設定後、保存ボタンを押してください。

API Gatewayに設定したLambda関数名を実行する権限が付与されていない場合はこのタイミングで付与します。
OKボタンを押してください。

メソッドの実行・結果確認

リソース・メソッド・Lambda関数を設定したら動作確認します。
前述でセットアップを保存したらメソッドの実行画面が表示されます。

ここではクライアントが作成したリソースにリクエストしたときの動きと結果を視覚的に表せれています。
動作確認はクライアント上部にある「テスト」を選択します。

テストを選択するとパラメーターやヘッダーの設定を求められますが今回はLambda関数側で何も設定していないため空のまま「テスト」を選択します。

テストを選択するとテスト結果が表示されます。
Lambda関数側が正常に動作している場合はステータスは「200」が返り、レスポンス本文にLambda関数のreturn文が返却されます。

最後に

以上でAPI GatewayとAWS Lambdaの連携紹介となります。
このままだとテストでの動作確認しか出来ないため、REST APIとしてブラウザからURLを叩いて結果取得する方法もあります。

ポリシーやロールなどの権限周りまで波及するため今回は割愛させていただきます。

ブラウザからURLを叩いて結果確認

API Gatewayの設定はREST APIのためURLから呼び出すことが出来ます。

ベースURLは以下の通りです。

https://{restapi_id}.execute-api.{region}.amazonaws.com/{stage_name}/

{restapi_id} は API ID、{region} はリージョン、{stage_name} は API デプロイのステージ名です。

API IDとは、API GatewayのAPI一覧にあるIDから取得可能です。
APIデプロイのステージ名はリソース名です。

参考サイト

Amazon API Gateway での REST API の呼び出し

https://docs.aws.amazon.com/ja_jp/apigateway/latest/developerguide/how-to-call-api.html