gpt4 book ai didi

java - 如何在 AWS Java SDK v2 Apache 客户端上设置代理

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:21:42 43 4
gpt4 key购买 nike

看起来没有关于如何做到这一点的好的来源,我找到信息的两个地方如下:

First link .这看起来是最新的版本。但是,即使我有依赖项,我也无法在项目的任何位置找到 software.amazon.awssdk.http.apache.ApacheHttpClient

 <groupId>software.amazon.awssdk</groupId>
<artifactId>aws-sdk-java</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<artifactId>aws-http-client-apache</artifactId>
<groupId>software.amazon.awssdk</groupId>
<version>2.0.0-preview-1</version>
</dependency>

second link看起来提供了一个关于如何配置客户端的过时版本。示例中的以下代码看起来无效:

DynamoDBClient client =
DynamoDBClient.builder()
.httpConfiguration(ClientHttpConfiguration.builder()
.httpClientFactory(apacheClientFactory)
.build())
.build();

ClientHttpConfiguration 不可用并且 httpConfiguration 方法在客户端不可用。

尝试一起破解一些东西给了我以下代码:

ProxyConfiguration proxyConfiguration = ProxyConfiguration.builder().endpoint(URI.create("host:port")).username("usr").password("pwd").build();

SdkHttpClient apacheClientFactory =
ApacheSdkHttpClientFactory.builder()
.socketTimeout(Duration.ofSeconds(10))
.connectionTimeout(Duration.ofMillis(750))
.proxyConfiguration(proxyConfiguration).build().createHttpClient();


this.s3client = S3Client.builder().httpClient(apacheClientFactory).build();

这可以编译,但我得到很多 java.lang.ClassNotFoundException: software.amazon.awssdk.http.ExecutableHttpRequest 异常,我不明白它们来自哪里或如何修复。

So my question is what is the correct way to setup a proxy for the 2.3.2 version of AWS Java SDK v2 and why is my implementation not working?

更新

当我添加以下依赖项时,出现另一个错误:

<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>apache-client</artifactId>
<version>2.3.2</version>
</dependency>

错误:

Caused by: java.lang.ClassNotFoundException: software.amazon.awssdk.http.SdkHttpClient$Builder

最佳答案

您似乎引入了多个版本的 AWS SDK for Java。尝试使用像这样使用导入范围的“Bill of Materials”BOM 方法:

<dependencyManagement>
<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>bom</artifactId>
<version>2.5.60</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

有了定义,带上你想要的特定部分:

<dependencies>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>iam</artifactId>
</dependency>
<dependency>
<groupId>software.amazon.awssdk</groupId>
<artifactId>apache-client</artifactId>
</dependency>
</dependencies>

您无需指定版本,因为 BOM 涵盖了这些版本。正确设置依赖项后,您可以执行以下操作:

  final SdkHttpClient httpClient = ApacheHttpClient.builder()
.proxyConfiguration(ProxyConfiguration.builder()
.useSystemPropertyValues(true)
.build())
.build();
this.s3client = S3Client.builder().httpClient(httpClient).build();

我正在使用 useSystemPropertyValues 以便它会获取 standard system properties为方便起见设置代理值。所有这些对我们都有效,并且代理被正确使用。

关于java - 如何在 AWS Java SDK v2 Apache 客户端上设置代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54235387/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com