はじめに
簡単な処理を行うWebアプリケーションでは処理をLambda関数に実装してそれをWebアプリケーションから呼び出すいわゆるサーバレスアプリケーションを構築することがあります。
今回の記事ではサーバアレスアプリケーションの基本的な構成であるAmazonAPIGatewayを利用したLambda関数呼び出しの実装例を投稿しました。
[この構成の利用例(署名付きURLを発行する)]
アーキテクチャ図
構築手順
1.Lambda関数の実装
①Lambda関数を作成します
※特にAPIGateway用の設定等はなく、必要に応じた処理を実装してください
※ここでは呼び出された後でメッセージを返すだけの処理を書いています
2.API Gatewayの設定
①APIタイプを選択
・ここではWebアプリケーションから呼び出される「HTTP API」を選択
②「統合を作成して設定」
③「ルートを設定」
・メソッドはGetやPostを選択できますが、ここではANYを選択
④「ステージを設定」
⑤設定を確認して「作成」
⑥Lambdaのコンソール画面でAPIGatewayがトリガーになっていることを確認
3.動作確認
①WebブラウザでAPIのURLを実行してみる
・Lambdaのコンソール画面かAPIGatewayのコンソール画面で作成したAPIのURLが確認できるため、それをWebブラウザのURL欄に入力して動作確認する
追加で設定
・今後の記事で開設予定ですが、APIGatewayの運用にはコスト面やセキュリティの観点からいくつか注意するポイントがあります。ここではコスト面の設定として「使用量プラン」の設定について記載しておきます
使用量プラン
APIのリクエスト(その後続処理で呼び出されるサービスを含む)によりAWSのコストが発生している場合、APIリクエストは必要最低限の回数に絞る必要があります。また、APIが不正アクセスにより大量のリクエストが行われた場合もコスト増につながります。
そのためリクエストを制限するための使用量プランというものがあります。
設定手順
①APIGatewayの左メニューから「使用量プラン」を選択
②使用量プランンの詳細の設定
・1秒当たりのリクエスト回数、クライアントの同時リクエスト数、1日当たりのリクエスト回数の制限を設定します
さいごに
APIGatewayとLambdaを使用したサーバレスWebアプリケーションは簡単に実装でき、運用の負担も少ないためこのアーキテクチャを採用するケースは多いですが、利用者や利用回数が多い場合のコストや権限制御も考慮すると意外と気にしないといけないことが多いと思います。
場合によってはEC2などに独自のシステムを構築してあげたほうがコストが運用コストが安いこともあるかも・・・サービスの利便性だけでなく、システムがどのように利用されるかも考慮してアーキテクチャを検討していきたいところです。