Я пытаюсь создать приложение с базовой инфраструктурой клиент-сервер. Инфраструктура сервера размещается на AWS, и когда клиент входит в систему, он отправляет сообщение на сервер, чтобы настроить различные параметры инфраструктуры. Одна из частей инфраструктуры - это очередь SQS, из которой клиент может опрашивать, чтобы получать обновления с сервера (в конечном итоге я хотел бы создать службу push, но пока не знаю, как это сделать).
Я создаю это приложение на NodeJS с помощью Node AWS SDK. Проблема, с которой я столкнулся, заключается в том, что мне нужна очередь ARN, чтобы делать различные вещи, например, подписывать очередь SQS на тему SNS, которую использует приложение, но API создания очереди возвращает URL-адрес очереди, а не ARN. Таким образом, я могу получить ARN из URL-адреса с помощью API getQueueAttributes, но, похоже, он не работает. Всякий раз, когда я его вызываю, я получаю неопределенный ответ. Вот мой код, скажите, пожалуйста, что я делаю не так:
exports.handler = (event, context, callback) => {
new aws.SQS({apiVersion: '2012-11-05'}).createQueue({
QueueName: event.userId
}).promise()
)
.then(data => { /* This has the Queue URL */
new aws.SQS({apiVersion: '2012-11-05'}).getQueueAttributes({
QueueUrl: data.QueueUrl,
AttributeNames: ['QueueArn']
}).promise()
})
.then(data => {
console.log(JSON.stringify(data)); /* prints "undefined" */
})
/* Some more code down here that's irrelevant */
}
Спасибо!
All
вместоQueueArn
, что он возвращает? - person Ersoy   schedule 23.04.2020getQueueAttributes
в существующей очереди - я имею в виду, что если aws создает очередь асинхронно, вы можете не получить ее обратно, даже еслиcreateQueue
завершен. - person Ersoy   schedule 23.04.2020