AWS SQS Java SDK:使用路径的端点覆盖
我使用的是AWS SDK版本2.14.26 我希望能够将它指向我的AWS SQS模拟器,它允许我做一些奇特的事情,比如返回错误、延迟响应等。我有ElasticMQ,但我也想做一些有趣的事情,为此我有一个webapp,它模拟了许多事情,其中之一就是SQS 我的webapp位于http://localhost:8088/simulators/v1/aws/sqs. 我希望sdk能够从该路径发出任何API请求 比如说,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/ ?
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