Тайм-аут отправки сообщения SQS - PullRequest
0 голосов
/ 05 января 2019

Я написал лямбда-функцию AWS в NodeJs, которая извлекает идентификаторы из базы данных и помещает их в очередь AWS SQS. У меня все работало нормально, пока я не развернул функцию приема сообщений, а теперь оригинальная функция не работает. Вот соответствующий код:

    async function sendHelper(rows)
    {
        let i;
        let params;
        let res;
        let sqs = new AWS.SQS({apiVersion: '2012-11-05'});
        for (i = 0; i < rows.length; i++) { 
            params = {
                MessageBody: rows[i].ID.toString(),
                QueueUrl: 'https://sqs.' + process.env.AWS_REGION_NAME + '.amazonaws.com/' + process.env.AWS_ID_SHORT + '/' + process.env.SQS_VENDPERSON_QUEUE_NAME
            };

            res = await sqs.sendMessage(params).promise().catch(err => errorHandler(err));

            console.log(res);
        }

        return null;
    }

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

1 Ответ

0 голосов
/ 05 января 2019

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

  1. Поместите лямбду в свой VPC
  2. Настройка конечной точки VPC для шлюза SQS или NAT (в зависимости от того, нужен ли вам только доступ к SQS или также необходим доступ к Интернету).

Ключевое примечание (которое я усвоил нелегко): Когда вы добавляете свою лямбда-функцию в подсеть, убедитесь, что вы ТОЛЬКО добавляете ее в приватную подсеть, иначе ничего не будет работа.

Потребуется немало переделать, чтобы получить права, но это выполнимо. Вот некоторые соответствующие документы:

https://docs.aws.amazon.com/lambda/latest/dg/vpc.html

и

https://aws.amazon.com/premiumsupport/knowledge-center/internet-access-lambda-function/

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