はじめに
この記事はサーバレスの勉強用として試したことまとめたものです。
今回はAPI GatewayとLambdaの連携を確認してみました。
API Gatewayとは
- APIの作成、監視、管理ができるサービスである。
- Webアプリのバックエンドデータやビジネスロジックにアクセスできる。
- サーバ管理が必要ないためLambdaと組み合わせてサーバレスアプリケーションを構築できる。
- 公式ドキュメント
https://aws.amazon.com/jp/api-gateway/
Lambdaとは
- サーバを準備することなくLambda関数と呼ばれるコードを実行できる。
- 実行時間に制限があるため時間を要する処理には不向きである。
- 様々なイベントをトリガーにLambdaを実行することができる。
- 公式ドキュメント
https://aws.amazon.com/jp/lambda/
Lambda関数の作成
- 以下のような値を表示するスクリプトを作成する。
import boto3
import json
def lambda_handler(event, context):
print(json.dumps(event))
return {
'statusCode' : 200,
'headers' : {
'content-type' : 'text/html'
},
'body' : '<htm><body>OK!!</body></html>'
}
- API Gatewayから呼び出されたイベント内容
| 項目 | 内容 |
|---|---|
| resource | 呼び出し元のリソース名 |
| path | URLパス |
| httpMethod | GET、HEAD、POSTなどのHTTPメソッド |
| headers | クライアントから送られたHTTPヘッダー |
| queryStringParameter | URLの末尾(?以降)に付けられたパラメータリスト |
| pathParameter | URLの末尾(?以降)に付けられた拡張パス名 |
| stageVariables | ステージに設定された変数値群 |
| requestContext | クライアント リクエストに関するコンテキスト情報 |
| body | クライアントから送られたbody部のデータ |
| isBase64Encodeed | bodyがBase64エンコードされているか |
API Gatewayの作成
- ゼロから作りながら覚えるAPI Gateway環境構築を参考に以下のようなAPIを作成する。
* メソッドリクエストの設定。
* 統合リクエストの設定。
アクセス確認
- エンドポイントを呼び出して確認する。
まとめ
- API Gatewayを作成するとエンドポイントと呼ばれるURLが作成される。
- 作成されたエンドポイントにリスクエスト送信することでLambda関数を呼び出すことができる。
- 次はS3で静的なWebサーバを利用して動作を確認してみたい。