Aurora ServerlessのData APIのレスポンス(結果セット)サイズ制限がいつの間にか変わっていたのでそれについてです。
概要
Aurora ServerlessのData APIのレスポンス(結果セット)サイズ制限で、前までは、以下のどちらか(達した方)が上限という制限がありました。
それが、どうやら前者の「レスポンスサイズが1MB」という制限だけになり、「クエリが返す行数が1000行まで」という制限がなくなっていました。(2020/03/31付近から)
そんな記事やアップデート情報を見たことがなくて知らなかったので、書いておこうと思い記事にしました。(もう2年も前なので今更かという感じではありますが・・・)
Data API
Data API とは、LambdaなどからAurora Serverlessへの接続を効率的に行えるようにするためのAPIになります。
具体的には、Lambdaがスケーリングした際にDBへの接続数も比例して増えることで上がってしまうDBへの負荷を軽減するためのソリューションです。
内部でコネクションプーリングされ、複数接続をうまく使い回すことで負荷が軽減されるような仕組みになります。
これにて、LambdaからRDSへの接続がアンチパターンとされていた歴史が払拭され、API接続ができるようになったという素晴らしいソリューションになります!
また、Aurora ServerlessではなくRDSやAuroraの場合は、「RDS Proxy」というものを使用して同じくこのアンチパターンに対処ができます。
RDS ProxyはAurora Serverlessでは未対応で、逆にData APIは基本的にはAurora Serverlessで使うものになります。
※RedshiftにもData APIがありますが、ここで挙げるData APIは、Aurora Serverless用のものになります。
制限の情報
Data API 公式ドキュメント
タイトルのData APIのレスポンス制限に関してですが、公式ドキュメントと、そのドキュメントの管理元のGitHubにて内容を閲覧できます。
- 公式ドキュメント
上記ドキュメントには今は、レスポンスサイズの上限が1MBという旨だけ書いてあり、1000行までという旨は消えています。
注記
レスポンスサイズの上限は 1 MiB です。1 MiB を超えるレスポンスデータが返されると、その呼び出しは終了します。
1 秒あたりの最大リクエスト数は 1,000 です。
Quotaドキュメント
上記のドキュメントとは別で、RDSのQuotaドキュメント(サービス制限ドキュメント)にも、Data APIレスポンスサイズ制限に関して記載があります。
- 公式ドキュメント
しかし、ここにも同じく、1000行までという旨はありません。
いつ変わった?
前提
挙動の確認を、レスポンス制限が変わる前と後で実験するようなことができなかったため、公式ドキュメントのGitHubでの更新履歴(history)で判断することにします。
※サービスによっては、GitHubでは更新されず直接ドキュメントに反映されるケースがあります。
結論
結論をいうと、2020/04/01(03/31週)のcommitから変わっていました。
Quota制限では
上記で挙げたQuota制限のGitHubのhistory(更新履歴)では、レスポンス制限というよりData API自体の制限は前までは書いておらず、レスポンスサイズが1MBという制限だけが2020-08-07に追加されています。
ドキュメント変更はいつから?
2020−03−31から、ドキュメントから消えた更新履歴がありました。
- Documentation updates from the week of 2020-03-31 · awsdocs/amazon-aurora-user-guide@23df1e7 · GitHub
- Documentation updates from the week of 2020-03-31 · awsdocs/amazon-aurora-user-guide@23df1e7 · GitHub
- Documentation updates from the week of 2020-03-31 · awsdocs/amazon-aurora-user-guide@23df1e7 · GitHub
Data API制限まとめ
2022年4月現在、Aurora ServerlessのData APIの制限(Quota)値は以下になります。
- ※リージョンごとです。
- ※AWSサポートによる緩和は現在全て不可能です。
Name | Default |
---|---|
HTTPリクエストボディサイズ | 4MB |
最大並列クラスターシークレットペア数 | 30 |
最大並列(同時)リクエスト数 | 500 |
レスポンスサイズ上限(最大結果セット)サイズ | 1MB |
秒間最大リクエスト数 | 1000/秒 |
詳しくは公式ドキュメントにて。
最後に
ずっと1000行制限があるかと思って開発を進めサービスの処理のボトルネックになっていたのですが、更新されていることにずっと気付かず、ようやく最近になってわかった次第でした。
便利になって何よりです。