はじめに
こんにちは。Tsukasaです!
皆さん、API Gateway + Lambdaの組み合わせは見たことありますよね?
もはやAWSのアーキテクチャを作成する際に頻出の組み合わせだと思います。
でも何故この2つを組み合わせるのか?に対する理解がいまいちだったので、今回はタイトルにもあるように映画館に例えることでAPI Gateway + Lambdaの役割について理解を深めていけたらと思います。
API Gateway, Lambdaとは
組み合わせる前にそもそもAPI GatewayとLambdaとは何でしょうか?
API Gateway は、あらゆる規模の REST、HTTP、および WebSocket API を作成、公開、維持、モニタリング、およびセキュア化するための AWS のサービスです。API 開発者は、AWS または他のウェブサービス、AWS クラウドに保存されているデータにアクセスする API を作成できるのが特徴です。
またユーザーからのリクエストを受け付けて、バックエンドの処理を行う機能もあります。
AWS Lambda は、サーバーの管理を行うことなくコードを実行できるコンピューティングサービスです。コードが実行され、スケールアップとスケールダウンが自動的に実行され、従量課金制の価格設定が適用されます。
重要なポイントとしてはサーバーレスで使われるものであるため、サーバ構築せずともプログラムを作成しすぐに実行することができます。
映画館に例えてみた(API Gateway)
それでは今回本題の映画館で例えてみたいと思います。
皆さん、映画館に行ったら何をしますか?
チケットを買ったり、ポップコーンを買ったりするかと思いますが、最終的にはチケットを持って、係の人に見せて、スクリーンまで行きますよね?
※因みに私はポップコーンは塩派ですが、映画館に行くとキャラメルポップコーンの匂いがするので、映画館に行くとキャラメルポップコーン買いがちです!最近は塩とキャラメルのコンボにハマってます。笑
話を戻しますと、皆さんチケットを買って(もしくは購入済のチケットを発券して)、ポップコーンを買ったら係の人にチケットを見せると思います。
この場合のユーザー(映画を見に来た人)のリクエストは映画を見ること(GET Request)です。
係の人はチケットを見て、この人をスクリーンに通して良いのか?の判断をしますよね?
これがAPI Gatewayの役割です!
もし違う日のチケットや他の映画館のチケットを持っていたら、その先に進むことはできません。
因みに技術的に見ると、この違ったチケットを持っていてスクリーンに行けないのは401エラー(認証されていないためアクセスを拒否する)がユーザーに返されます。
映画館に例えてみた(Lambda)
それではLambdaの役割は何でしょうか?
API Gateway(映画館の係の人)がユーザー(映画を見に来た人)のチケットを確認して問題がなければ、ユーザーはスクリーンに行って映画を見ることができます。
Lambdaの役割は映画を上映させることです。
より細分化すると
- 映写機の操作
- 映像の切り替え
- 明るさ調整
- 音響処理
このような作業は映画館の裏方のスタッフさんがやっているかと思います。
このように実際の処理ロジックを実行するのがLabmdaの役割です!
アーキテクチャ図で見てみた
こちらがAPI Gateway + Lambdaのアーキテクチャ図です。
先程の例で表すと、API Gatewayがチケット確認になるので、そこでチケットを確認してもらいます。
問題がなければ、スクリーンに行って映画を見られるので、スタッフさんが映画を上映させます。
これがLambdaの役割です。
また、先程少しだけ触れましたが、誤ったチケットを持っていると、API Gatewayの時点で弾かれているのでLambdaは実行されません。
WAFとAPI Gatewayの違いとは?
API Gatewayがチケットを確認して正しいものを持っているかどうかでLambdaを実行させるかさせないかという機能があると紹介しましたが、WAFとの違いは何でしょうか?
API Gatewayは権限があるかどうかをチェックするものですが、WAFはそもそもの攻撃を止めるものになります。
映画館の例で言うと、API Gatewayはチケットの確認をする係の人ですが、WAFは映画館にいる警備員です。映画館に怪しい人がいたら警備員が対応しますよね?これがWAFの役割です。
怪しい人がいたら、チケット確認まで行かずに警備員がすぐに声をかけて場合によってはスクリーンには通さないですよね?
AWS上でも同じことが言えます。WAFはAPI Gatewayに到達する前に攻撃をブロックすることができます。
これによりAPI Gatewayに対して不正なリクエストを事前に防ぐため、バックエンドが保護されます。
まとめ
API Gateway + Lambdaを映画館に例えた際を改めて下記にまとめようと思います。
- お客さんが映画館に来る
- 受付(API Gateway)がチケット内容を見て判断
- 「上映お願いします」と裏方スタッフ(Lambda)に依頼
- 裏方スタッフが映画を流す(処理を実行)
- 結果(映像)を受付経由でお客さんに届ける(レスポンス返す)
終わりに
いかがでしたでしょうか?
AWSのサービスは難しいものが多いですが、身近にあるものに例えることで、理解度をより高めることができると思います。
他にもまだまだ知らないサービスがあるので、身近なものに例えて理解度を高めていきたいと思います!
