Я использую AWS Java SDK, а также весеннюю облачную среду для использования SES и SQS в моем проекте. Я сталкиваюсь с небольшой проблемой. Когда я пытаюсь запустить свое приложение, я получаю сообщение об ошибке:
Ошибка создания компонента с именем 'simpleMessageListenerContainer'
в ресурс пути к классу
[Орг / springframework / облако / AWS / сообщения / конфигурация / аннотации / SqsConfiguration.class]:
Ошибка вызова метода init; вложенное исключение
com.amazonaws.services.sqs.model.AmazonSQSException: учетные данные должны
быть ограниченным допустимым регионом, а не «очередью».
В качестве предисловия в моем файле app.properties
имеется свойство queue.endpoint=https://queue.amazonaws.com/1234567890/queue-name.fifo
, и конечная точка извлекается из aws cli.
Я прочитал документацию AWS и обнаружил, что эта конечная точка является устаревшей конечной точкой. Это свойство используется аннотацией @SqsListener
из библиотеки aws весеннего облака.
Мне удалось избежать этой проблемы, посмотрев, использую ли я устаревшую конечную точку и преобразовал ее в не унаследованную конечную точку с помощью сценария оболочки, т.е. https://sqs.us-east-1.amazonaws.com/123456780/queue-name.fifo
.
Мне было интересно, были ли в библиотеке Spring Cloud AWS проблемы с использованием устаревших конечных точек. Я заметил, что не было проблем для других моих очередей, где конечные точки были https://us-east-2.queue.amazonaws.com/1234567890/queue2-name.fifo
, поэтому, возможно, он неправильно проанализировал устаревшую конечную точку us-east-1
? Я также не уверен, были ли какие-либо конфигурации, которые необходимо было выполнить в моем приложении, чтобы использовать устаревшие конечные точки.