はじめに
この記事はサーバレスの勉強用として試したことまとめたものです。
今回は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を作成する。
![APIGateway_API作成.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F466400%2F4be0232a-0994-daac-497b-257e97d24031.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a7cac744619b192b85dc2ef95d2e3523)
![APIGateway_メソッドリクエスト確認.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F466400%2Fd28c65d6-7fa7-828d-916a-58f5d9eee7db.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=dea4ce75c91baec6d2724821b3aa2487)
![APIGateway_統合リクエスト確認.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F466400%2Faa9b81c9-7a08-cce0-ad1c-9f422b0a0aac.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=dcec3f18d7453e72302af003c675eecf)
アクセス確認
- エンドポイントを呼び出して確認する。
![APIGateway_アクセス確認.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F466400%2F02c40fda-f8af-2d5e-fa61-7ada0814515a.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=72dfc1c5bfe9f529814e6998a0bae14b)
まとめ
- API Gatewayを作成するとエンドポイントと呼ばれるURLが作成される。
- 作成されたエンドポイントにリスクエスト送信することでLambda関数を呼び出すことができる。
- 次はS3で静的なWebサーバを利用して動作を確認してみたい。