Aurora ServerlessのData APIのレスポンス制限が変更されていた話

Aurora ServerlessのData APIのレスポンス(結果セット)サイズ制限がいつの間にか変わっていたのでそれについてです。

概要

Aurora ServerlessのData APIのレスポンス(結果セット)サイズ制限で、前までは、以下のどちらか(達した方)が上限という制限がありました。

  • SQLクエリのレスポンスサイズが1MB
  • SQLクエリが返す行数が1000行


それが、どうやら前者の「レスポンスサイズが1MB」という制限だけになり、「クエリが返す行数が1000行まで」という制限がなくなっていました。(2020/03/31付近から)


そんな記事やアップデート情報を見たことがなくて知らなかったので、書いておこうと思い記事にしました。(もう2年も前なので今更かという感じではありますが・・・)


Data API

Data API とは、LambdaなどからAurora Serverlessへの接続を効率的に行えるようにするためのAPIになります。

具体的には、Lambdaがスケーリングした際にDBへの接続数も比例して増えることで上がってしまうDBへの負荷を軽減するためのソリューションです。

docs.aws.amazon.com


内部でコネクションプーリングされ、複数接続をうまく使い回すことで負荷が軽減されるような仕組みになります。

これにて、LambdaからRDSへの接続がアンチパターンとされていた歴史が払拭され、API接続ができるようになったという素晴らしいソリューションになります!


また、Aurora ServerlessではなくRDSやAuroraの場合は、「RDS Proxy」というものを使用して同じくこのアンチパターンに対処ができます。

RDS ProxyはAurora Serverlessでは未対応で、逆にData APIは基本的にはAurora Serverlessで使うものになります。

docs.aws.amazon.com


※RedshiftにもData APIがありますが、ここで挙げるData APIは、Aurora Serverless用のものになります。


制限の情報

Data API 公式ドキュメント

タイトルのData APIのレスポンス制限に関してですが、公式ドキュメントと、そのドキュメントの管理元のGitHubにて内容を閲覧できます。

  • 公式ドキュメント

docs.aws.amazon.com

github.com


上記ドキュメントには今は、レスポンスサイズの上限が1MBという旨だけ書いてあり、1000行までという旨は消えています

注記

レスポンスサイズの上限は 1 MiB です。1 MiB を超えるレスポンスデータが返されると、その呼び出しは終了します。

1 秒あたりの最大リクエスト数は 1,000 です。


Quotaドキュメント

上記のドキュメントとは別で、RDSのQuotaドキュメント(サービス制限ドキュメント)にも、Data APIレスポンスサイズ制限に関して記載があります。

  • 公式ドキュメント

docs.amazonaws.cn

github.com


しかし、ここにも同じく、1000行までという旨はありません。


いつ変わった?

前提

挙動の確認を、レスポンス制限が変わる前と後で実験するようなことができなかったため、公式ドキュメントのGitHubでの更新履歴(history)で判断することにします。

※サービスによっては、GitHubでは更新されず直接ドキュメントに反映されるケースがあります。


結論

結論をいうと、2020/04/01(03/31週)のcommitから変わっていました。


Quota制限では

上記で挙げたQuota制限のGitHubhistory(更新履歴)では、レスポンス制限というよりData API自体の制限は前までは書いておらず、レスポンスサイズが1MBという制限だけが2020-08-07に追加されています。

github.com


ドキュメント変更はいつから?

2020−03−31から、ドキュメントから消えた更新履歴がありました。


Data API制限まとめ

2022年4月現在、Aurora ServerlessのData APIの制限(Quota)値は以下になります。

  • ※リージョンごとです。
  • AWSサポートによる緩和は現在全て不可能です。
Name Default
HTTPリクエストボディサイズ 4MB
最大並列クラスターシークレットペア数 30
最大並列(同時)リクエスト数 500
レスポンスサイズ上限(最大結果セット)サイズ 1MB
秒間最大リクエスト数 1000/秒


詳しくは公式ドキュメントにて。

docs.amazonaws.cn


最後に

ずっと1000行制限があるかと思って開発を進めサービスの処理のボトルネックになっていたのですが、更新されていることにずっと気付かず、ようやく最近になってわかった次第でした。

便利になって何よりです。