Node.js Promise отклоняется при получении URL-адреса конечной точки SQS - PullRequest
0 голосов
/ 11 июля 2019

У меня есть служба, которая отправляет сообщения в очередь SQS, но для этого мне нужно получить URL-адрес очереди. Я делаю это с помощью Promises и асинхронных функций и с помощью функции SQS.getQueueUrl. Всякий раз, когда я вызываю функцию getQueueUrl, Promise всегда отклоняется. Я не уверен, где я иду не так.

Я получаю неразрешенные ошибки в обещаниях в журналах Cloudwatch. Чтобы исправить это, я использовал функции .then () и .catch () для регистрации отклонения или разрешения обещания. Всегда записывается, что Обещание было отклонено. После исправления неразрешенных ошибок в обещании, обещание все еще отклоняется.

Edit: После добавления console.dir (err) в код, я получаю следующий вывод: AWS.SimpleQueueService.NonExistentQueue: указанная очередь не существует или у вас нет к ней доступа.

Я еще раз посмотрю на мои настройки IAM и разрешения очереди.

const queueName = process.env.QUEUE_NAME
if (!queueName) {
throw new Error('QUEUE_NAME must be defined')
} else {
console.log(queueName)
}

const queuePromise = getQueueUrl()
queuePromise
.then(() => {
console.log('promise resolved')
})  
.catch(() => {
console.log('promise rejected') //Always gets rejected
})  


async function getQueueUrl() {
const queueUrl = (await SQS.getQueueUrl({ QueueName: queueName 
}).promise())
.QueueUrl
console.log('Using queue URL')
return queueUrl
}


//Implementation 
const url = await queuePromise //This is where getQueueUrl gets 
called

Ожидаемый результат заключается в том, что функция getQueueUrl будет использовать AWS SDK для извлечения QueueUrl из SQS, если предоставляется имя очереди. Вместо этого Обещание отклоняется, а URL-адрес очереди не возвращается.

...