Получение строки ошибки из Lambda, вызванной через AWS API - PullRequest
0 голосов
/ 17 февраля 2019

Рассмотрим следующий пример лямбда-функции:

//get-account
exports.handler = (data, context, callback) => {
    callback("Account not found");
};

Лямбда выдаст эту ошибку примерно так:

{
  "errorMessage": "Account not found"
}

Это именно то, что я хочу.Однако рассмотрите возможность вызова этой функции через AWS API

return new Promise((resolve, reject) => {
    Lambda.invoke({
        FunctionName: 'get-account',
        InvocationType: "RequestResponse",
        Payload: JSON.stringify({ account_id: account_id })
    }, function(err, data) {

        //only true if the invocation failed...
        if(err) { return reject(err); }

        //parse the payload. We will need it regardless of error/success
        let response = JSON.parse(data.Payload);

        //did the function throw an error?
        if(data.FunctionError) {
            //the error message will be [object Object], which is no good!
            reject(response.errorMessage);
            return;
        }

        //success!
        resolve(response);
    });
});

. В этом случае я обнаружил, что ошибка всегда преобразуется в строку [object Object].Кажется, что лямбда берет объект ошибки из обратного вызова (объект ошибки, который он создает), а затем оборачивает его в другой объект ошибки.Итак, в конечном итоге Lambda.invoke делает это:

{
    errorMessage: {
        errorMessage: "Account not found"
    }
}

Но вместо того, чтобы возвращать этот построенный объект, он возвращает,

{
    errorMessage: '[object Object]'
}

Кто-нибудь видит способ обойти это?Я НЕ хочу изменить то, как моя лямбда-функция выводит ошибки.Я только хочу получить правильную ошибку из функции вызова лямбды.Это просто невозможно из-за того, как Lambda.invoke() снова включает ошибку?

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