使用AWS Lammbda查询数据库,并将结果推送到Geckoboard

我正在尝试设置AWS Lambda函数来查询MySQL数据库并将结果上传到Geckoboard进行分析。 但是,它会一直超时。 这是我的代码:

'use strict'; var API_KEY = [API KEY]; var gb = require('geckoboard')(API_KEY); var AWS = require('aws-sdk'); var mysql = require('mysql'); var connection = mysql.createConnection({ [DATABASE DETAILS] }); var mysqlQuery = ' SELECT DATE(created_at) as date, COUNT(DATE(created_at)) as number_of_entries FROM table WHERE updated_at IS NOT NULL GROUP BY date '; var schema = { id: 'geckoboard_target', fields: { date: { type: 'datetime', name: 'date' }, number_of_entries: { type: 'number', name: 'number_of_entries' } } }; function uploadToGeckoboard(schema, data, context) { gb.datasets.findOrCreate( schema, function (err, dataset) { if (err) { console.error('Error connecting to Geckoboard:',err); context.fail('Failed'); } dataset.put( data, function (err) { if (err) { console.error('Error uploading to Geckoboard',err); context.fail('Failed'); } console.log('Dataset created and data added'); context.succeed('Success'); } ); } ); } exports.handler = (event, context) => { connection.connect(function(err) { if (!err) { connection.query(mysqlQuery, function(err, data) { if (!err) { console.log("Results:", JSON.stringify(data)); uploadToGeckoboard(schema, data, context); connection.end(); } else { console.log("Query error:", err); context.fail(); } }); } else { console.log("Error connecting database:", err.message); context.fail(); } }); }; 

直到数据返回并调用uploadToGeckoboard函数uploadToGeckoboard 。 之后,它只是超时。 我已经尝试了相同的代码,删除了lambda处理程序和上下文,它从我的本地机器运行就好了。

任何帮助将不胜感激!

事实certificate,代码是很好的。 问题是,在开发过程中,我们已经启用了lambdaconfiguration中的VPC,希望能够实现我们认为必需的RDS读取function。

closures解决了永久超时,并显示不需要VPC来进行RDS查询。 哎呀!

Interesting Posts