Невозможно получить атрибуты очереди AWS SQS с помощью Java и TestContainers.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Невозможно получить атрибуты очереди AWS SQS с помощью Java и TestContainers.

Сообщение Anonymous »

Приведенный ниже код воспроизводит проблему, которую я наблюдаю в некоторых наших тестах.
  • запускаем тестовый контейнер
  • создаем SQS-клиент
  • использовать этот клиент для создания очереди
  • попытаться найти очередь ARN
Похоже, что создание очереди успешно и возвращает этот URL:
http://sqs.us-east-1.localhost:4566/000 ... 0/my-queue
Однако попытка запросить атрибуты очереди приводит к следующему:
java.net.UnknownHostException: sqs.us-east-1.localhost
public class Main {

private static final LocalStackContainer localStack =
new LocalStackContainer(DockerImageName.parse(
"localstack/localstack:3.1")).withServices(SQS);

public static void main(String[] args) {

localStack.start();

// create SQS client
AmazonSQSAsync sqs = AmazonSQSAsyncClientBuilder
.standard()
.withEndpointConfiguration(new EndpointConfiguration(
localStack.getEndpointOverride(SQS).toString(),
localStack.getRegion()))
.withCredentials(new AWSStaticCredentialsProvider(
new BasicAWSCredentials(
localStack.getAccessKey(),
localStack.getSecretKey())))
.build();

// create a new queue
String url = sqs.createQueue("my-queue").getQueueUrl();

// get ARN of new queue
String arn = sqs.getQueueAttributes(url, List.of("QueueArn"))
.getAttributes().get("QueueArn");
}
}

Приведенный выше код является частью проекта maven со следующими (и только этими) зависимостями:

com.amazonaws
aws-java-sdk-sqs
1.12.646


org.testcontainers
localstack
1.19.4


Я не могу понять, почему createQueue() работает, а getQueueAttributes() — нет. Что я здесь делаю не так?
[В «реальном» коде я не могу изменить версию aws-java-sdk-sqs, но я рад измените версии TestContainers и LocalStack, если это поможет]
Обновление: исправлено по предложению Трау (см. ниже). Необходимо использовать последнюю версию LocalStack и установить для SQS_ENDPOINT_STRATEGY значение динамическое:
LocalStackContainer localStack =
new LocalStackContainer(DockerImageName.parse("localstack/localstack:latest"))
.withEnv("SQS_ENDPOINT_STRATEGY", "dynamic")
.withServices(SQS);


Подробнее здесь: https://stackoverflow.com/questions/779 ... containers
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»