ある企業が、API GatewayのREST APIにカスタムオーソライザー(Lambda Authorizer)を実装してJWTトークンを検証している。APIへのリクエストのうち、同一のトークンを持つリクエストが1分間に数百回発生しており、毎回Lambdaオーソライザーが起動してトークン検証を行っている。この結果、オーソライザーのLambda実行コストが増大し、APIのレイテンシにも悪影響が出ている。最もコスト効率よくレイテンシを改善する方法として適切なものはどれか。
- A. API GatewayのスロットリングをLambda Authorizerと同じレートに設定して呼び出し数を制限する
- B. Lambda Authorizerのキャッシュを有効化し、TTLを適切な値(例: 300秒)に設定する
- C. Lambda Authorizerの処理をStep Functionsのステートマシンに移行してスループットを上げる
- D. Lambda Authorizerを廃止してAPI GatewayネイティブのCognito User Pool Authorizerに置き換える
解答と解説を見る
正解: B
API Gatewayは、Lambda Authorizerのレスポンス(IAMポリシー)をキャッシュする機能を提供している。TTL(有効期限)を設定すると、同一の認証トークン(またはリクエストパラメータ)に対するオーソライザー結果がキャッシュされ、TTL期間内は再度Lambdaを呼び出さずにキャッシュ済みポリシーを使って認可が行われる。これによりLambdaの呼び出し回数が大幅に減少し、コストとレイテンシが改善される。選択肢DのCognito User Pool Authorizerへの移行はJWTトークン(特にCognito発行のもの)には有効だが、既存のカスタムJWT検証ロジックを廃棄してCognito依存に変えることは「コードの変更を最小限に」という一般的な要件に反する可能性があり、既存インフラの大規模変更を伴う。選択肢CのStep Functionsはオーソライザーのスループット問題解決に適したサービスではなく、むしろレイテンシが増大する。選択肢Aのスロットリング制限はAPIへの総リクエスト数を絞るものであり、認可コストの削減やレイテンシ改善ではなく、正当なリクエストも制限する副作用がある。
📚 関連サービスの解説: AWS Lambda