首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用AWS Lammbda查询数据库,并将结果推送到Geckoboard

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

Stack Overflow用户
提问于 2017-06-19 16:29:04
回答 1查看 266关注 0票数 3

我正在尝试设置一个AWS函数,它将查询MySQL数据库并将结果上传到Geckoboard进行分析。然而,它将永远超时。这是我的密码:

代码语言:javascript
复制
'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函数时,它才会成功。在那之后,它只是超时。我尝试了相同的代码,删除了lambda处理程序和上下文,并且它在我的本地机器上运行得很好。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-20 13:49:54

事实证明,代码是很好的。问题是,在开发过程中,我们启用了lambda配置中的VPC --希望能够实现我们认为必要的RDS读取能力。

关闭它解决了永久超时,并显示,不需要VPC进行RDS查询。糟了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44635634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档