Из моего локального aws-cli я могу получить атрибуты и получить queueUrl данной очереди. Принимая во внимание, что я не могу заставить эту функцию работать из приложения adhoc spring. Это всего лишь пробный код. У нас есть конфиг для подключения к AWS SQS. Может ли кто-нибудь помочь мне в этом?
Поток выглядит так: приложение A (предварительное приложение) вызывает службу учетных данных, чтобы получить сведения о токене, для которого установлена роль. Затем приложение A использует эти данные токена для подключения к AWS и чтения из SQS. Я могу подключиться к AWS, но при попытке сделать getUrl получаю исключение.
Допуск роли в AWS-
{"Version": "2012-10-17", "Statement": [{"Action": ["sqs: "],"Resource": "", "Effect": "Allow"}]}
Рабочая команда-
aws sqs get-queue-attribute --queue-url --attribute-names All --region us-east-1
Образец кода Java-
AmazonSQS sqs = AmazonSQSClientBuilder.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withRegion(Regions.US_EAST_1).build();
String queueUrl = "";
try {
queueUrl = sqs.getQueueUrl("queue-name").getQueueUrl();
} catch (Exception e) {
System.out.println(e);
}
ReceiveMessageRequest receiveMessageRequest = new ReceiveMessageRequest(queueUrl).withWaitTimeSeconds(10)
.withMaxNumberOfMessages(10);
List<Message> sqsMessages = sqs.receiveMessage(receiveMessageRequest).getMessages();
for (Message message : sqsMessages) {
System.out.println("Received vice message from sqs - " + message.getBody() + ". Message ReceiptHandle - "
+ message.getReceiptHandle());
}
Получение исключения-
Произошла ошибка (AWS.SimpleQueueService.NonExistentQueue), когдавызов операции GetQueueUrl: указанная очередь не существует или у вас нет к ней доступа.