{Status: 202} при запуске лямбды из кода - PullRequest
0 голосов
/ 26 октября 2018

Это мой код в Javascript:

    var params = {
        FunctionName: "theTable",
        InvokeArgs: JSON.stringify({ "name": "KirklandWA" })
    };
    lambda.invokeAsync(params, function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else {
            console.log(data);
        }
    });

Это в лямбде:

exports.handler = async (event, context) => {
    return "theReturnedValue";
};

Что происходит, так это то, что он не возвращает theReturnedValue, а возвращает

{Статус: 202} Статус: 202

Код в Lambda вызывается, я убедился в этом на Cloudwatch.

Ответы [ 2 ]

0 голосов
/ 28 октября 2018

Проблема в том, что ваш lambda function ничего не возвращает обратно вызывающей стороне.

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

Функция callback принимает два значения: Ошибка и результаты

callback(Error error, Object result);

Если вы укажете значения ошибки, лямбда выдаст ошибку, которую вы предоставили пользователю, если вы не предоставитеЗначение ошибки, но результаты, это результаты, которые будут возвращены

Все это очень хорошо задокументировано здесь

Вот основные примеры

callback();     // Indicates success but no information returned to the caller.
callback(null); // Indicates success but no information returned to the caller.
callback(null, "success");  // Indicates success with information returned to the caller.
callback(error);    //  Indicates error with error information returned to the caller.

Ваша функция обработчика должна быть.

exports.handler = async (event, context,callback) => {
     callback(null, "theReturnedValue");
};
0 голосов
/ 27 октября 2018

Убедитесь, что ваш lambda выбран в качестве среды выполнения NodeJs 8.10, после проверки вы должны вернуть обещание напрямую:

exports.handler = async (event, context) => {
    return await new Promise((resolve, reject) => {
        resolve({ message: "hello world" });
    });
};

Я искал определение метода invokeAsync в документации aws-sdk и код состояния в порядке:

Параметры обратного вызова:

  1. err (Ошибка) - объект ошибки, возвращенный из запроса.Установите в null, если запрос выполнен успешно.
  2. data (Object) - десериализованные данные, возвращаемые из запроса.Установите в null, если возникает ошибка запросаОбъект данных имеет следующие свойства:
    • Состояние - (целое число) При успехе оно будет 202 .

Я готовлю вам базовый пример, пожалуйста, просмотрите файл handler.js :

https://github.com/ns4lin4s/stackoverflow

Не забудьте, что вы должны указать тело ответа:

enter image description here

Итак, когда вы закончите, дайте мне знать, как это работает!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...