Почему лямбда-функция, вызывающая клей AWS с помощью Node.JS, не console.log? - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь запустить работу склеивания AWS с помощью лямбда-функции, используя node.js. Я могу нормально протестировать лямбда-функцию, но после запуска скрипта ничего не происходит. Я добавил несколько строк console.log, но во время вызова метода SDK для запуска задания склеивания AWS ни одна из строк console.log ничего не записывает (я проверяю вывод на странице конфигурации лямбда-кода и в CloudWatch) , Я что-то здесь упускаю? Я проверил ниже, используя кнопку «ТЕСТ» в браузере.

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

var glue = new AWS.Glue ();

exports.handler = async (событие) => {

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": "\" Привет из лямбды! \ "" }

Запрос идентификатора: "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

ОТЧЕТ RequestId: e205ec08-dce1-4710-b944-f490544b1486 Продолжительность: 324,11 мс

Расчетная продолжительность: 400 мс Размер памяти: 128 МБ Макс. Используемая память: 68 МБ

1 Ответ

1 голос
/ 03 мая 2019

Ваша функция возвращается и закрывается до возврата из вашего склеенного задания. Вы можете переместить возврат в обратный вызов, чтобы завершить функцию после возврата

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;
  }
});


...