spring-cloud-aws
spring-cloud-aws copied to clipboard
How to configure proxy for SQS in Spring Cloud AWS 3
Discussed in https://github.com/awspring/spring-cloud-aws/discussions/1027
Originally posted by ghughal January 22, 2024
With 2.4.x version, we were using ClientConfiguration
to configure proxy (and other properties like max retry, max connection etc.) here is a sample below:
import com.amazonaws.ClientConfiguration;
import com.amazonaws.auth.profile.ProfileCredentialsProvider;
import com.amazonaws.services.sqs.AmazonSQSAsync;
import org.springframework.beans.factory.annotation.Value;
import com.amazonaws.services.sqs.AmazonSQSAsyncClientBuilder;
public class SqsConfig {
@Value("${cloud.aws.client.proxy-host}")
public String proxyHost;
@Value("${cloud.aws.client.proxy-port}")
public String proxyPort;
@Value("${cloud.aws.client.non-proxy-hosts}")
public String nonProxyHost;
// Value is populated by the region code in the cloud environment.
@Value("${cloud.aws.region.static}")
public String region;
public ClientConfiguration clientConfiguration() {
final ClientConfiguration config = new ClientConfiguration();
config.setProxyHost(proxyHost);
config.setProxyPort(Integer.parseInt(proxyPort));
config.setNonProxyHosts(nonProxyHost);
return config;
}
public AmazonSQSAsync localamazonSqsAsync() {
String awsProfileName = "adfs";
return AmazonSQSAsyncClientBuilder
.standard()
.withRegion(region)
.withCredentials(new ProfileCredentialsProvider(awsProfileName))
.withClientConfiguration(clientConfiguration())
.build();
}
}
but it's not clear how to do that programmatically with 3.1.x version and it was not clear from documentation. Thank you.
Here is what I have for the migration to 3.1.x.
import com.amazonaws.ClientConfiguration;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
public class SqsConfig {
@Value("${cloud.aws.client.proxy-host}")
public String proxyHost;
@Value("${cloud.aws.client.proxy-port}")
public String proxyPort;
@Value("${cloud.aws.client.non-proxy-hosts}")
public String nonProxyHost;
// Value is populated by the region code in the cloud environment.
@Value("${cloud.aws.region.static}")
public String region;
public ClientConfiguration clientConfiguration() {
final ClientConfiguration config = new ClientConfiguration();
config.setProxyHost(proxyHost);
config.setProxyPort(Integer.parseInt(proxyPort));
config.setNonProxyHosts(nonProxyHost);
return config;
}
public SqsAsyncClient localamazonSqsAsync() {
String awsProfileName = "adfs";
return SqsAsyncClient.builder()
.region(Region.of(region))
.credentialsProvider(ProfileCredentialsProvider.create(awsProfileName))
// .asyncConfiguration(clientConfiguration()) -- tried using asyncConfiguration but this does not take the client configuration
.build();
}
Any information on how to incorporate the clientConfiguration?