将数据从aws lambda推送到redshift

时间:2016-05-25 10:46:29

标签: amazon-web-services amazon-redshift aws-lambda

我正在尝试创建一个连接到RedShift的Lambda函数:

var pg = require('pg');
var conString = 'postgresql://username:Password@JDBC-URL';
var client = new pg.Client(conString);
client.connect(function(err) { if(err) {
        console.log('could not connect to redshift', err);
    }
    });
pgClient.end();

但我得到了这个例外:

Unable to import module 'index': Error 
at Function.Module._resolve Filename (module.js:325:15) 
at Function.Module._load (module.js:276:25) 
at Module.require (module.js:353:17) 
at require (internal/module.js:12:17) 
at Object.<anonymous> (/var/task/index.js:1:72) 
at Module._compile (module.js:409:26) 
at Object.Module._extensions..js (module.js:416:10) 
at Module.load (module.js:343:32) 
at Function.Module._load (module.js:300:12) 
at Module.require (module.js:353:17)

有人可以帮我解决这个问题吗。

感谢。

2 个答案:

答案 0 :(得分:2)

如果您的目标是将数据从AWS Lambda推送到Amazon Redshift,则可以使用 AWS Lambda Redshift Loader

请参阅: A Zero-Administration Amazon Redshift Database Loader

答案 1 :(得分:1)

从Lambda将数据加载到Amazon Redshift的另一种成功方法可以是通过kinesis firehose [1],它可以在内部将数据保存在s3中,建议将数据加载到redshift而不是insert命令。[2]

数据流: Lambda&gt; Firehose(s3)&gt;红移。

为使用这种方式节省时间的人提供进一步的阅读建议(即使是故障排除指南,如果事先阅读,也可以节省大量时间): https://stackoverflow.com/a/34221861/2406687

脚注:

[1]“COPY命令是加载表格的最有效方法。您还可以使用INSERT命令向表中添加数据,尽管它比使用http://docs.aws.amazon.com/redshift/latest/dg/t_Loading_data.html上的COPY效率低得多。” / p>

[2] http://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html