我正在尝试通过使用node.js的lambda函数启动AWS胶水作业。我可以很好地测试lambda函数,但是在脚本运行过程中似乎没有任何反应。我添加了一些console.log行,但是在SDK方法调用期间以启动AWS胶粘作业,没有console.log行记录任何内容(我正在检查lambda代码配置页面和CloudWatch上的输出) 。我在这里想念什么吗?我使用浏览器中的“测试”按钮测试了以下内容。
var AWS = require('aws-sdk'); AWS.config.update({region:'us-east-2'});
var胶=新的AWS.Glue();
exports.handler =异步(事件)=> {
console.log("Hello!")
var params = {
JobName: 'ETL-store-inventory',
};
//Invoke job run
glue.startJobRun(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
console.log("Done")
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
};
我从控制台获得以下信息:
响应: { “ statusCode”:200, “ body”:“ \”你好,Lambda!“ }
请求ID: “ e205ec08-dce1-4710-b944-f490544b1486”
功能日志: START RequestId:e205ec08-dce1-4710-b944-f490544b1486版本:$ LATEST
2019-05-03T17:17:55.427Z e205ec08-dce1-4710-b944-f490544b1486您好!
2019-05-03T17:17:55.525Z e205ec08-dce1-4710-b944-f490544b1486完成
END RequestId:e205ec08-dce1-4710-b944-f490544b1486
REPORT RequestId:e205ec08-dce1-4710-b944-f490544b1486持续时间:324.11 ms
计费时间:400 ms内存大小:128 MB已使用的最大内存:68 MB
答案 0 :(得分:0)
在粘合作业的回调返回之前,您的函数正在返回并关闭。您可以在回调内移动return以使函数在回调返回后完成
var AWS = require('aws-sdk'); AWS.config.update({region: 'us-east-2'});
var glue = new AWS.Glue();
exports.handler = async (event) => {
console.log("Hello!")
var params = {
JobName: 'ETL-store-inventory',
};
//Invoke job run
return glue.startJobRun(params, function(err, data) {
if (err) {
console.log(err, err.stack); // an error occurred
const response = {
statusCode: 200,
body: JSON.stringify('An error occurred!'),
};
return response
} else {
console.log(data); // successful response
console.log("Done")
const response = {
statusCode: 200,
body: JSON.stringify('Hello from Lambda!'),
};
return response;
}
});