in iep-spring-aws2/src/main/java/com/netflix/iep/aws2/AwsClientFactory.java [369:396]
public <T> T newInstance(String name, Class<T> cls, String accountId, Optional<Region> region) {
try {
Config cfg = getConfig(name, cls);
Config clientConfig = cfg.getConfig("client");
Region selectedRegion = region.orElseGet(() -> chooseRegion(name, cls));
SdkHttpService service = createSyncHttpService(clientConfig);
Method builderMethod = cls.getMethod("builder");
AwsClientBuilder<?, ?> builder = ((AwsClientBuilder<?, ?>) builderMethod.invoke(null))
.credentialsProvider(createCredentialsProvider(cfg.getConfig("credentials"), accountId, service))
.region(selectedRegion)
.dualstackEnabled(shouldUseDualstack(cfg, selectedRegion))
.overrideConfiguration(createClientConfig(clientConfig));
AttributeMap attributeMap = getSdkHttpConfigurationOptions(clientConfig);
if (builder instanceof AwsSyncClientBuilder<?, ?>) {
((AwsSyncClientBuilder<?, ?>) builder)
.httpClient(service.createHttpClientBuilder().buildWithDefaults(attributeMap));
} else if (builder instanceof AwsAsyncClientBuilder<?, ?>) {
SdkAsyncHttpService asyncService = createAsyncHttpService(clientConfig);
((AwsAsyncClientBuilder<?, ?>) builder)
.httpClient(asyncService.createAsyncHttpClientFactory().buildWithDefaults(attributeMap));
}
return (T) builder.build();
} catch (Exception e) {
throw new RuntimeException("failed to create instance of " + cls.getName(), e);
}
}