0

我创建了一个 Lambda 函数,该函数使用 awswrangler 数据 api 从查询中读取来自 RDS 无服务器 Aurora PostgreSQL 数据库的数据。该查询包含一个条件,即 ID 列表。如果查询的 id 少于 1K,则效果很好,如果超过 1K,我会收到以下消息:

Maximum BadRequestException retries reached for query

一个示例查询是:

"""select * from serverlessDB where column_name in %s""" % ids_list

我调整了无服务器 RDS 实例以强制缩放并增加 lambda 函数的并发性。有没有办法解决这个问题?

4

1 回答 1

0

使用 PostgreSQL,一个WHERE IN子句中的 1000 多个项目应该没问题。

我相信您遇到了数据 API 限制。

参数集的数量没有固定的上限。但是,通过 Data API 提交的 HTTP 请求的最大大小为 4 MiB。如果请求超出此限制,数据 API 将返回错误并且不处理请求。此 4 MiB 限制包括 HTTP 标头的大小和请求中的 JSON 表示法。因此,您可以包含的参数集的数量取决于多种因素的组合,例如 SQL 语句的大小和每个参数集的大小。

响应大小限制为 1 MiB。如果调用返回超过 1 MiB 的响应数据,则调用终止。

每秒最大请求数为 1,000。/

您的请求超过 4 MB,或者您的查询响应超过 1 MB。我建议您将查询拆分为多个较小的查询。

参考:https ://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/data-api.html

于 2021-11-01T20:02:47.073 回答