Хотите получить AWS лямбда-ошибку на клиентскую консоль - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь получить сообщение об ошибке от Lambda для отображения на моем клиенте. По сути, я вызываю конечную точку API-шлюза с моего клиента, который выполняет лямбду. В этой функции есть определенное условие, и если это условие не выполняется, я хочу отправить конкретное сообщение c моему клиенту. Это то, что у меня сейчас есть.

Библиотека:

export function failure(body) {
    return buildResponse(500, body);
}

function buildResponse(statusCode, body) {
    return {
        statusCode: statusCode,
        headers: {
            'Access-Control-Allow-Origin': '*',
            'Access-Control-Allow-Credentials': true
        },
        body: body
    };
}

и фактическая функция:

export async function main(event, context) {

    const data = JSON.parse(event.body);

    const saleCount = await getSaleCount();

    if (count >= 25) {
        // This is the error i'm referring to
        return failure({ status: false, error: 'My error' });
    }

    const params = {
        TableName: process.env.salesTable,
        Item: {
            foo: bar
        }
    };

    try {
        await dynamoDbLib.call('put', params);
        return success(params.Item);
    } catch(e) {
        console.log(e);
        return failure({ status: false });
    }
}

async function getSaleCount(foo) {
    // do stuff and return value
    return bar;
}

Кажется, я не могу получить сообщение в этом ошибка в интерфейсе. Есть предложение try-catch, и ошибка определенно подхватывается перехватчиком, но ошибка просто отображается как

Error: Request failed with status code 500
    at createError (createError.js:16)
    at settle (settle.js:17)
    at XMLHttpRequest.handleLoad (xhr.js:59)

Более того, я могу фактически увидеть сообщение как ответ на моей вкладке Сеть:

{"status": "false", "error": "My error"}

Это интеграция с Lambda Proxy, поэтому я попробовал следующие методы на этой странице: https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-lambda-proxy-integrations.html Значение:

// This returns me a 502 on the frontend
throw new Error('My error');

// This also doesn't allow me to access the message
return {statusCode: 400, body: 'My error'};

I ' Я в абсолютной растерянности, поэтому я очень ценю любой вклад. Большое спасибо!

...