使用 Node.JS 调用 AWS glue 的 lambda 函数不使用 console.log 的原因是什么?

Reason why lambda function calling AWS glue using Node.JS does not console.log?

我正在尝试使用 lambda 函数启动 AWS 粘合作业,使用 node.js。我可以很好地测试 lambda 函数,但在脚本完成 运行 之后似乎什么也没有发生。我添加了一些 console.log 行,但是在调用 SDK 方法以启动 AWS 胶水作业期间,console.log 行中的 none 记录了任何内容(我正在检查 lambda 上的输出代码配置页面,以及 CloudWatch 上)。我在这里错过了什么吗?我使用浏览器内的 "TEST" 按钮测试了以下内容。

var AWS = require('aws-sdk'); AWS.config.update({地区: 'us-east-2'});

var glue = new 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": "\"Hello from Lambda!\"" }

请求 ID: "e205ec08-dce1-4710-b944-f490544b1486"

函数日志: 开始 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 毫秒

计费持续时间:400 毫秒内存大小:128 MB 使用的最大内存:68 MB

您的函数正在 returning 并在从您的粘合作业 returns 回调之前关闭。您可以在回调中移动 return 以使函数在回调 returns

后完成
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;
  }
});