这个问题通常是由于遇到了企业代理的限制导致的,因此可以采取以下步骤来解决:
设置代理配置。在AWS SDK客户端初始化时,需要设置代理传输。
配置系统代理。在您的Java应用程序中设置了常规HTTP代理系统的全局系统代理配置后,AWS SDK客户端将自动使用这些设置。
示例代码:
System.setProperty("https.proxyHost", "your_proxy_host");
System.setProperty("https.proxyPort", "your_proxy_port");
System.setProperty("http.proxyHost", "your_proxy_host");
System.setProperty("http.proxyPort", "your_proxy_port");
SdkHttpClient httpClient = ApacheHttpClient.builder()
.proxyConfiguration(ProxyConfiguration.builder()
.endpoint(URI.create("http://your_proxy_service_url"))
.username("your_username")
.password("your_password")
.build())
.build();
StsClient stsClient = StsClient.builder()
.httpClient(httpClient)
.build();
AssumeRoleRequest assumeRoleRequest = AssumeRoleRequest.builder()
.roleArn("arn:aws:iam::account-id:role/role-name")
.roleSessionName("session-name")
.build();
AssumeRoleResponse assumeRoleResponse = stsClient.assumeRole(assumeRoleRequest);
Credentials credentials = assumeRoleResponse.credentials();
上面的代码演示了如何通过将代理配置传递给AWS SDK的客户端来解决此问题。您还可以通过其他方法来配置代理设置,具体取决于您的应用程序环境。
总之,设置AWS SDK客户端的代理传输和系统代理配置,可以有效解决AWS Java V2 SDK在企业代理后从STS服务获取令牌失败而出现连接超时的问题。