Среда Middy позволяет моей AWS Lambda в ожидании, так что он никогда не возвращает ответ - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть NodeJS 12.x Лямбда, как это, и я использую middy. js для подключения к кластеру RedShift, вот выдержка:

const middy = require('@middy/core')
const dbManager = require('@middy/db-manager');

const lambda = middy(async (event, context) => {
    const { db } = context;
    const records = await db.distinct('XXX').from('YYY');

    // print result
    console.log(records);

    // return result
    return {
        'statusCode': 200,
        'body': JSON.stringify(records)
    }
});

lambda    
    .use(dbManager({
        config: {
          client: 'pg',
          connection: {
            host: 'XXX',
            port: '1111',
            schema: 'public',
            user: 'XXX',
            password: 'XXX',
            database: 'XXX'
          }
        }
    }));

module.exports = { lambda }

Когда я запускаю это Лямбда-результат получен (т.е. console.log распечатывает результаты), но функция остается в ожидании, пока не истечет время ожидания. Я почти уверен, что мне чего-то не хватает с механизмом асинхронного ожидания / ожидания, но я не знаю, что и где мне нужно изменить.

1 Ответ

0 голосов
/ 28 апреля 2020

Решение состоит в том, чтобы установить context.callbackWaitsForEmptyEventLoop = false.

Это можно сделать с помощью промежуточного программного обеспечения Middy, называемого DoNotWaitForEmptyEventL oop

...