API Gatewayのキャッシュクラスターが未設定

キャッシュが適したREST APIにレスポンスキャッシュを設定してください。

説明

API Gateway REST APIのキャッシュクラスターは、繰り返されるリクエストのレスポンスを再利用し、バックエンドの負荷を軽減できます。キャッシュがないこと自体は脆弱性ではありません。データの鮮度やユーザーごとのデータ分離を先に確認してください。

想定される影響

キャッシュ可能なリクエストを繰り返し処理すると、バックエンドの負荷や応答遅延が増えることがあります。

対処方法

キャッシュが適切なら、CacheClusterEnabled: trueと対象メソッドのCachingEnabled: trueを設定してください。キャッシュキーと有効期間はレスポンスの特性に合わせて決めてください。

例

GETレスポンスのキャッシュを有効にする例です。API、デプロイリソース、必要なキャッシュキー設定は省略しています。

変更前

yaml
Resources:
  ProdStage:
    Type: AWS::ApiGateway::Stage
    Properties:
      StageName: Prod
      RestApiId: !Ref MyRestApi
      DeploymentId: !Ref MyDeployment
      TracingEnabled: true

変更後

yaml
Resources:
  ProdStage:
    Type: AWS::ApiGateway::Stage
    Properties:
      StageName: Prod
      RestApiId: !Ref MyRestApi
      DeploymentId: !Ref MyDeployment
      TracingEnabled: true
      CacheClusterEnabled: true
      MethodSettings:
        - ResourcePath: /*
          HttpMethod: GET
          CachingEnabled: true

参考資料