如何从自定义 REST 将数据加载到 Redshift API

How to load data into Redshift from a custom REST API

我是 AWS 的新手,如果之前问过这个问题,请原谅我。

我有一个 REST API,其中 return 有 2 个参数(姓名、电子邮件)。我想将这些数据加载到 Redshift 中。

我想制作一个每 2 分钟启动一次并调用 REST API 的 Lambda 函数。在这 2 分钟内,API 可能 return 最多 3-4 条记录。

那么,在这种情况下是只做一个插入操作还是我必须仍然使用COPY(使用S3)?我只担心性能和无错误(稳健)的数据插入。

此外,Lambda 函数将每 2 分钟异步启动一次,因此插入操作可能会重叠(但数据不会重叠)。

在这种情况下,如果我选择 S3 选项,我担心之前的 Lambda 调用生成的 S3 文件会被覆盖并发生冲突。

长话短说,将较少记录插入 redshift 的最佳做法是什么?

PS:我也可以使用其他 AWS 组件。我什至研究了 Firehose,它非常适合我,但它无法将数据加载到私有子网 Redshift。

提前致谢

因为你的数据不多;您可以使用复制或插入。复制命令针对批量插入进行了更优化..就像给你批量插入的能力一样..

两者都可以正常工作

是的,INSERT少量数据就可以了。

始终通过 COPY 命令加载的建议适用于大量数据,因为 COPY 加载是跨多个节点并行进行的。但是,对于几行,您可以使用 INSERT 而不会感到内疚。

如果您的 SORTKEY 是时间戳并且您按时间顺序加载数据,则也不需要执行 VACUUM,因为数据已经排序。但是,如果要删除行,最好仍然定期 VACUUM table。

仅供参考,AWS 现在支持数据 API 功能。

如官方文档所述,您可以使用 HTTP 请求轻松访问 Redshift 数据,而无需 JDBC 连接。

The Data API doesn't require a persistent connection to the cluster. Instead, it provides a secure HTTP endpoint and integration with AWS SDKs. You can use the endpoint to run SQL statements without managing connections. Calls to the Data API are asynchronous.

https://docs.aws.amazon.com/redshift/latest/mgmt/data-api.html

这是使用 Redshift 数据所需的步骤API

  1. 确定您作为数据 API 的调用者是否获得授权。有关授权的更多信息,请参阅授权访问 Amazon Redshift 数据 API。

  2. 确定您是否计划使用来自 Secrets Manager 的身份验证凭据或临时凭据调用数据 API。有关更多信息,请参阅调用 Amazon Redshift 数据时选择身份验证凭据 API。

  3. 如果您使用 Secrets Manager 作为身份验证凭据,请设置一个机密。有关更多信息,请参阅在 AWS Secrets Manager 中存储数据库凭证。

  4. 查看调用数据时的注意事项和限制 API。有关更多信息,请参阅调用 Amazon Redshift 数据时的注意事项 API。

  5. 从 AWS 命令​​行界面 (AWS CLI)、您自己的代码或使用 Amazon Redshift 控制台中的查询编辑器调用数据 API。有关从 AWS CLI 调用的示例,请参阅使用 AWS CLI 调用数据 API。