はじめに
この記事はサーバレスの勉強用として試したことまとめたものです。
今回は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サーバを利用して動作を確認してみたい。