|
@@ -24,9 +24,10 @@ import com.amazonaws.auth.AWSCredentials;
|
|
|
import com.amazonaws.auth.AWSCredentialsProvider;
|
|
|
import com.amazonaws.auth.AWSStaticCredentialsProvider;
|
|
|
import com.amazonaws.auth.DefaultAWSCredentialsProviderChain;
|
|
|
+import com.amazonaws.client.builder.AwsClientBuilder;
|
|
|
import com.amazonaws.http.IdleConnectionReaper;
|
|
|
import com.amazonaws.services.ec2.AmazonEC2;
|
|
|
-import com.amazonaws.services.ec2.AmazonEC2Client;
|
|
|
+import com.amazonaws.services.ec2.AmazonEC2ClientBuilder;
|
|
|
import org.apache.logging.log4j.LogManager;
|
|
|
import org.apache.logging.log4j.Logger;
|
|
|
import org.elasticsearch.ElasticsearchException;
|
|
@@ -45,17 +46,18 @@ class AwsEc2ServiceImpl implements AwsEc2Service {
|
|
|
private AmazonEC2 buildClient(Ec2ClientSettings clientSettings) {
|
|
|
final AWSCredentialsProvider credentials = buildCredentials(logger, clientSettings);
|
|
|
final ClientConfiguration configuration = buildConfiguration(clientSettings);
|
|
|
- final AmazonEC2 client = buildClient(credentials, configuration);
|
|
|
- if (Strings.hasText(clientSettings.endpoint)) {
|
|
|
- logger.debug("using explicit ec2 endpoint [{}]", clientSettings.endpoint);
|
|
|
- client.setEndpoint(clientSettings.endpoint);
|
|
|
- }
|
|
|
- return client;
|
|
|
+ return buildClient(credentials, configuration, clientSettings.endpoint);
|
|
|
}
|
|
|
|
|
|
// proxy for testing
|
|
|
- AmazonEC2 buildClient(AWSCredentialsProvider credentials, ClientConfiguration configuration) {
|
|
|
- return new AmazonEC2Client(credentials, configuration);
|
|
|
+ AmazonEC2 buildClient(AWSCredentialsProvider credentials, ClientConfiguration configuration, String endpoint) {
|
|
|
+ final AmazonEC2ClientBuilder builder = AmazonEC2ClientBuilder.standard().withCredentials(credentials)
|
|
|
+ .withClientConfiguration(configuration);
|
|
|
+ if (Strings.hasText(endpoint)) {
|
|
|
+ logger.debug("using explicit ec2 endpoint [{}]", endpoint);
|
|
|
+ builder.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(endpoint, null));
|
|
|
+ }
|
|
|
+ return SocketAccess.doPrivileged(builder::build);
|
|
|
}
|
|
|
|
|
|
// pkg private for tests
|