AWS SQS Java SDK:使用路径覆盖端点

问题描述

我正在使用AWS SDK 2.14.26版。

我希望能够将其指向我的AWS SQS模拟器,这使我能够执行一些奇特的事情,例如返回错误,延迟响应等。我确实有ElasticMQ,但我也想做一些花哨的事情,为此,我有一个可模拟许多事物的webapp,其中之一就是SQS。

我的Web应用程序托管在http:// localhost:8088 / simulators / v1 / aws / sqs。我希望我可以期望sdk从该路径https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-making-api-requests.html

开始发出任何API请求

例如,

https://sqs.eu-west-2.amazonaws.com/   
?Action=CreateQueue
&DefaultVisibilityTimeout=40
&QueueName=MyQueue
&Version=2012-11-05
&AUTHParaMS

将成为

http://localhost:8088/simulators/v1/aws/sqs   
?Action=CreateQueue
&DefaultVisibilityTimeout=40
&QueueName=MyQueue
&Version=2012-11-05
&AUTHParaMS

但是当我创建客户端并尝试获取队列时:

SqsClient client = SqsClient.builder()
                .region(Region.of("SIMULATOR"))
                .credentialsProvider((()->AwsBasicCredentials.create("ignored","bySim")))
                .endpointOverride(new URI("http://localhost:8088/simulators/v1/aws/sqs"))
                .build();
client.getQueueUrl(GetQueueUrlRequest.builder()
      .queueName("test123")
      .build());

我明白了

software.amazon.awssdk.services.sqs.model.SqsException: null (Service: Sqs,Status Code: 404,Request ID: null,Extended Request ID: null)

看着Wireshk,它似乎只是指向/而不是我想要的端点,这导致它得到404

1287    2020-10-12 16:07:10.982955272   127.0.0.1   127.0.0.1   HTTP    801 POST / HTTP/1.1  (application/x-www-form-urlencoded)
[Full request URI: http://localhost:8088/]

是否有一种方法可以使aws sdk从/ simulators / v1 / aws / sqs的路径开始?因为我希望我的模拟器应用程序能够模拟可能的API,而不必使用根路径。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)