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

时间:2017-07-30 08:21:09

标签: amazon-web-services amazon-s3 amazon-redshift amazon-kinesis-firehose

我是AWS新手,请原谅我以前询问此问题。

我有一个REST API,它返回2个参数(名称,电子邮件)。我想将这些数据加载到Redshift中。

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

所以,在这种情况下,可以只进行插入操作还是我还要使用COPY(使用S3)?我只担心性能和无差错(强大)数据插入。

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

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

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

PS:我也可以使用其他AWS组件。我甚至研究过对我来说很完美的Firehose,但它无法将数据加载到Private Subnet Redshift中。

提前全部谢谢

3 个答案:

答案 0 :(得分:2)

是的,drawable-nodpi 少量数据会很好。

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

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

答案 1 :(得分:0)

因为你没有太多数据;你可以使用副本或插入。复制命令更适合批量插入..它就像给你批量插入的能力..

两者都将同样正常

答案 2 :(得分:0)

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

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

Data API不需要与集群的持久连接。相反,它提供了安全的HTTP终结点并与AWS开发工具包集成。您可以使用端点来运行SQL语句,而无需管理连接。对Data API的调用是异步的。

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

这是使用Redshift Data API所需的步骤

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

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

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

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

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