使用 Spring 将文件上传到 AWS S3 Boot 在没有 Proxy 的情况下工作正常但在 Proxy 下失败
Upload files to AWS S3 using Spring Boot works fine without Proxy but fails with Proxy
使用 spring 引导将文件上传到 AWS S3 在没有代理的情况下执行时效果很好,当我在 VM args 中添加代理时失败并出现以下错误,
Internal Server Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Server Error; Request ID: null; S3 Extended Request ID: null; Proxy: 192.168.1.171)
以下是我提供的 vm 参数,
-Dhttp.proxyHost=192.168.1.171 -Dhttp.proxyPort=9999 -Dhttps.proxyHost=192.168.1.171 -Dhttps.proxyPort=9999
当我开始执行程序包时,AWS SDK 自动初始化在 args 列表中找到的代理
并在控制台打印
com.amazonaws.http.AmazonHttpClient - Configuring Proxy. Proxy Host: 192.168.1.171 Proxy Port: 9999
我无法删除代理,因为我在 spring 安全性中使用 Oauth2 身份验证。
有什么方法可以在 AWS SDK 中禁用自动初始化代理?
实际上,通过网络进行通信的“端点”是一个地址,但链接需要“连接”,因此根据配置,它可能更像是 connection/connected“主机冲突”。
例如,我可以同时拥有一个网络服务器和一个通过 http 直接接收请求的数据库,但这取决于它们是否配置为彼此 and/or 以通过 irq 连接到网络到其他任何东西。
我在联系 AWS 后解决了这个问题,我不得不在 ClientConfiguration class 中配置方法“setNoneProxyHosts (String nonProxyHosts)”。这设置了客户端将在不通过代理的情况下访问的可选主机。
参数 - “nonProxyHosts”采用客户端将在不通过代理的情况下访问的主机。请按照此 link 此处了解有关 class 和方法的更多信息:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html#setNonProxyHosts-java.lang.String-
根据 AWS Support 提供的说明,我修改了配置并添加了以下内容;
public ClientConfiguration clientConfiguration() {
final ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setNonProxyHosts("*.s3.<ZONE>.amazonaws.com|*.s3-<ZONE>.amazonaws.com");
return clientConfiguration;
}
使用 spring 引导将文件上传到 AWS S3 在没有代理的情况下执行时效果很好,当我在 VM args 中添加代理时失败并出现以下错误,
Internal Server Error (Service: Amazon S3; Status Code: 500; Error Code: 500 Internal Server Error; Request ID: null; S3 Extended Request ID: null; Proxy: 192.168.1.171)
以下是我提供的 vm 参数,
-Dhttp.proxyHost=192.168.1.171 -Dhttp.proxyPort=9999 -Dhttps.proxyHost=192.168.1.171 -Dhttps.proxyPort=9999
当我开始执行程序包时,AWS SDK 自动初始化在 args 列表中找到的代理 并在控制台打印
com.amazonaws.http.AmazonHttpClient - Configuring Proxy. Proxy Host: 192.168.1.171 Proxy Port: 9999
我无法删除代理,因为我在 spring 安全性中使用 Oauth2 身份验证。 有什么方法可以在 AWS SDK 中禁用自动初始化代理?
实际上,通过网络进行通信的“端点”是一个地址,但链接需要“连接”,因此根据配置,它可能更像是 connection/connected“主机冲突”。 例如,我可以同时拥有一个网络服务器和一个通过 http 直接接收请求的数据库,但这取决于它们是否配置为彼此 and/or 以通过 irq 连接到网络到其他任何东西。
我在联系 AWS 后解决了这个问题,我不得不在 ClientConfiguration class 中配置方法“setNoneProxyHosts (String nonProxyHosts)”。这设置了客户端将在不通过代理的情况下访问的可选主机。 参数 - “nonProxyHosts”采用客户端将在不通过代理的情况下访问的主机。请按照此 link 此处了解有关 class 和方法的更多信息:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/ClientConfiguration.html#setNonProxyHosts-java.lang.String-
根据 AWS Support 提供的说明,我修改了配置并添加了以下内容;
public ClientConfiguration clientConfiguration() {
final ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setNonProxyHosts("*.s3.<ZONE>.amazonaws.com|*.s3-<ZONE>.amazonaws.com");
return clientConfiguration;
}