要在我的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函数中执行?
答案 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)
});