AWS 応用コース

サーバレス API の
認証・処理経路

ClientがCognitoでJWTを取得する認証経路と、JWTをAPI Gatewayへ送るAPI経路を分けて読み解きます。

TL;DR
  1. ClientはCognitoでJWTを取得する。
  2. API Gateway authorizerがJWTを検証する。
  3. 待たせる処理はSQSへ渡す。

01 認証とAPI呼び出しは二つの経路

CognitoでJWTを取得しAPI Gateway authorizerで検証する二経路
ClientはCognitoでJWTを取得し、API Gatewayのauthorizerが検証してからLambdaを呼ぶ。
CognitoはAPI Gatewayの後ろを通るinline hopではありません。 ClientがUser Poolで認証してJWTを受け取り、そのJWTをAPI Gatewayへ送信します。Cognito authorizerが検証に成功した場合だけLambdaが呼ばれます。

02 proxy 統合で route を保つ

複数URLを一つのLambdaへ集約
{proxy+} などで入口を集約し、アプリ内部のルータへ渡す。

URLやメソッドごとにLambdaを量産すると運用対象が増えます。API Gatewayのルートは入口の制御に絞り、サービス単位のルーティングはLambda内のアプリに任せます。

03 同期と非同期を分ける

APIとSQS workerの役割分担
APIは受理を返し、後続処理はキューとworkerで完了させる。

重い処理や再試行が必要な処理まで同期HTTPに詰め込まない。SQSへメッセージを渡せば、利用者への応答と後続処理の可用性を分離できます。

結論: JWT取得・authorizer検証・業務・非同期の境界を固定すると、サーバレスAPIは拡張しやすく調査もしやすくなります。