在AWS Lamda函数中执行Node CLI命令

时间:2017-09-07 15:20:32

标签: javascript node.js amazon-web-services amazon-ec2 aws-lambda

要在我的EC2实例中执行Node命令,我只需在CLI中使用以下内容

gsjson 1KIg84G9CXErw2bWhkEHWUkOI4CR-biFeLqCtdypaLU8 fruits.json

当我尝试在打包的AWS Lambda函数中执行此操作时,它不起作用。这是我的Node AWS Lambda代码:

var gsjson = require('google-spreadsheet');
var fs = require('fs');

exports.handler = function(event, context) {
    // Create JSON file from Google Sheet using gsjson
    gsjson 1KIg84G9CXErw2bWhkEHWUkOI4CR-biFeLqCtdypaLU8 fruits.json {
        if (err) {
            context.fail("JSON file creation error: " + err);
        } else {
            context.succeed("JSON file created"); 
        }
    });

    //Read the content from the /tmp directory to check the JSON file exists
    fs.readdir("/tmp", function (err, data) {
        console.log(data);

    });
}

如何在EC2 CLI中执行Node命令,但在AWS Lambda函数中执行?

1 个答案:

答案 0 :(得分:0)

您不能只是将命令行命令粘贴到NodeJS代码的中间,并期望它能够正常工作。在这种情况下,您将gsjson作为库包含在内,您应该将其用作库。在the official documentation gsjson中,它显示了如何通过命令行执行某些操作的多个示例,以及可以完成相同操作的相应NodeJS API代码。您需要使用NodeJS API代码版本。

例如,您的代码需要更改为以下内容:

gsjson({
    spreadsheetId: '1KIg84G9CXErw2bWhkEHWUkOI4CR-biFeLqCtdypaLU8'
})
.then(function(result) {
    console.log(result.length);
    console.log(result);
    // do something with the spreadsheet result here
})
.catch(function(err) {
    console.log(err.message);
    console.log(err.stack);
    context.fail(err)
});