API Gateway の Count と使用量プランの使用状況の値に差がある理由を教えてください
困っていた内容
開発段階で、API Gateway の呼び出し回数について計測をしています。
API Gateway の呼び出し回数について、CloudWatch コンソールで確認できる Count メトリクスと API Gateway の使用量プランの使用状況の値に差がある理由について教えてください。
どう対応すればいいの?
API Gateway の使用量プランでは、有効な API キーの送信を伴うリクエストが正常に受け付けられた場合においてクォータの消費が計上されます。
クォータの枠内として正常に受信され、その後に Lambda などの API バックエンドからエラーが応答された場合も、バックエンドから正常応答が得られた場合と同様に使用量プランのクォータが消費されます。
API GatewayのAPIキーと使用量プランについて調べてみた | DevelopersIO
API Gatewayから呼び出したLambda関数がエラーを返した場合もAPIキーと使用量プランのアクセス回数には計上されますので注意してください。
API ステージ上に実在しないリソースやメソッドに対するリクエストが受信された場合などのゲートウェイレスポンスによるエラー応答は、クォータの消費に計上されません。
一方で CloudWatch の Count メトリクスは API キーを必要としないリソースやメソッドに対するリクエストの発生時や、ゲートウェイレスポンスによる使用量プランのクォータ消費を伴わないエラー応答の発生時においても計上されます。
そのため、CloudWatch の Count メトリクスと API Gateway の使用量プランでは、同一のステージを対象とする場合でも、両者の値は一致しない場合があります。
注意点
使用量プランによるクォータの適用はベストエフォートでの動作となります。
そのため、使用量プランで消費されたクォータ数と実際に処理されたリクエスト数で若干の差異が生じる可能性がある点にはご注意ください。
API Gateway での REST API の使用量プランと API キー - Amazon API Gateway
使用量プランのスロットリングとクォータはハードリミットではなく、ベストエフォートベースで適用されます。場合によっては、クライアントは設定されているクォータを超えることがあります。コストの管理や API へのアクセスのブロックを行う際に使用プランのクォータやスロットリングに依存しないでください。AWS Budgets を使用してコストをモニタリングすること、および AWS WAF を使用して API リクエストを管理することを検討してください。