
driven-adapter.dynamo-db-reactive.config.dynamodb-config.mustache Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of scaffold-clean-architecture Show documentation
Show all versions of scaffold-clean-architecture Show documentation
Gradle plugin to create a clean application in Java that already works, It follows our best practices!
package {{package}}.dynamodb.config;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
import software.amazon.awssdk.auth.credentials.WebIdentityTokenFileCredentialsProvider;
import software.amazon.awssdk.enhanced.dynamodb.DynamoDbEnhancedAsyncClient;
{{#metrics}}
import software.amazon.awssdk.metrics.MetricPublisher;
{{/metrics}}
import software.amazon.awssdk.regions.Region;
import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient;
import java.net.URI;
@Configuration
public class DynamoDBConfig {
{{#metrics}}
@Bean
@Profile({"local"})
public DynamoDbAsyncClient amazonDynamoDB(@Value("${aws.dynamodb.endpoint}") String endpoint,
@Value("${aws.region}") String region,
MetricPublisher publisher) {
return DynamoDbAsyncClient.builder()
.credentialsProvider(ProfileCredentialsProvider.create("default"))
.region(Region.of(region))
.endpointOverride(URI.create(endpoint))
.overrideConfiguration(o -> o.addMetricPublisher(publisher))
.build();
}
@Bean
@Profile({"dev", "cer", "pdn"})
public DynamoDbAsyncClient amazonDynamoDBAsync(MetricPublisher publisher, @Value("${aws.region}") String region) {
return DynamoDbAsyncClient.builder()
.credentialsProvider(WebIdentityTokenFileCredentialsProvider.create())
.region(Region.of(region))
.overrideConfiguration(o -> o.addMetricPublisher(publisher))
.build();
}
{{/metrics}}
{{^metrics}}
@Bean
@Profile({"local"})
public DynamoDbAsyncClient amazonDynamoDB(@Value("${aws.dynamodb.endpoint}") String endpoint,
@Value("${aws.region}") String region) {
return DynamoDbAsyncClient.builder()
.credentialsProvider(ProfileCredentialsProvider.create("default"))
.region(Region.of(region))
.endpointOverride(URI.create(endpoint))
.build();
}
@Bean
@Profile({"dev", "cer", "pdn"})
public DynamoDbAsyncClient amazonDynamoDBAsync(@Value("${aws.region}") String region) {
return DynamoDbAsyncClient.builder()
.credentialsProvider(WebIdentityTokenFileCredentialsProvider.create())
.region(Region.of(region))
.build();
}
{{/metrics}}
@Bean
public DynamoDbEnhancedAsyncClient getDynamoDbEnhancedAsyncClient(DynamoDbAsyncClient client) {
return DynamoDbEnhancedAsyncClient.builder()
.dynamoDbClient(client)
.build();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy