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

AWS SQS Java SDK:使用路径的端点覆盖,java,amazon-web-services,aws-sdk,amazon-sqs,aws-sdk-java-2.0,Java,Amazon Web Services,Aws Sdk,Amazon Sqs,Aws Sdk Java 2.0,我使用的是AWS SDK版本2.14.26 我希望能够将它指向我的AWS SQS模拟器,它允许我做一些奇特的事情,比如返回错误、延迟响应等。我有ElasticMQ,但我也想做一些有趣的事情,为此我有一个webapp,它模拟了许多事情,其中之一就是SQS 我的webapp位于http://localhost:8088/simulators/v1/aws/sqs. 我希望sdk能够从该路径发出任何API请求 比如说, https://sqs.eu-west-2.amazonaws.com/ ?

我使用的是AWS SDK版本2.14.26

我希望能够将它指向我的AWS SQS模拟器,它允许我做一些奇特的事情,比如返回错误、延迟响应等。我有ElasticMQ,但我也想做一些有趣的事情,为此我有一个webapp,它模拟了许多事情,其中之一就是SQS

我的webapp位于http://localhost:8088/simulators/v1/aws/sqs. 我希望sdk能够从该路径发出任何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.sqs异常:null(服务:sqs,状态代码:404,请求ID:null,扩展请求ID:null)

看看wireshark,它似乎只是指向/而不是我想要的端点,这导致它得到了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,而不必使用根路径。

X-Posted到aws fourms:我能够通过创建反向代理来解决问题。我曾经说过,我必须对我的jetty版本做一些更改:1。使用ServerConnector而不是套接字连接器ServerConnector http=new ServerConnector(服务器);http.setPort(8089);http.setHost(“localhost”);2.将“ProxyTo”更改为“ProxyTo”3。显然,将代理url更改为
http://localhost:8088/simulators/v1/aws/sqs