Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use AwsCredentialsProvider and AwsRegionProvider interfaces for bean … #1034

Open
wants to merge 1 commit into
base: 5.0.x
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Use AwsCredentialsProvider and AwsRegionProvider interfaces for bean …
…declaration instead of their Chain classes
shduke committed Apr 17, 2021
commit 62dcf25e74734019ce824e26ceab15b07be25a0c
Original file line number Diff line number Diff line change
@@ -15,12 +15,13 @@
*/
package io.micronaut.aws.sdk.v2;

import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.BootstrapContextCompatible;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.env.Environment;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.DefaultCredentialsProvider;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.DefaultAwsRegionProviderChain;

@@ -41,9 +42,8 @@ public class CredentialsAndRegionFactory {
* @return An {@link AwsCredentialsProviderChain} that attempts to read the values from the Micronaut environment
* first, then delegates to {@link DefaultCredentialsProvider}.
*/
@Bean(preDestroy = "close")
@Singleton
public AwsCredentialsProviderChain awsCredentialsProvider(Environment environment) {
public AwsCredentialsProvider awsCredentialsProvider(Environment environment) {
return AwsCredentialsProviderChain.of(
EnvironmentAwsCredentialsProvider.create(environment),
DefaultCredentialsProvider.create()
@@ -56,7 +56,7 @@ public AwsCredentialsProviderChain awsCredentialsProvider(Environment environmen
* first, then delegates to {@link DefaultAwsRegionProviderChain}.
*/
@Singleton
public AwsRegionProviderChain awsRegionProvider(Environment environment) {
public AwsRegionProvider awsRegionProvider(Environment environment) {
return new AwsRegionProviderChain(
new EnvironmentAwsRegionProvider(environment),
new DefaultAwsRegionProviderChain()
Original file line number Diff line number Diff line change
@@ -15,14 +15,14 @@
*/
package io.micronaut.aws.sdk.v2.service;

import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.awscore.client.builder.AwsAsyncClientBuilder;
import software.amazon.awssdk.awscore.client.builder.AwsClientBuilder;
import software.amazon.awssdk.awscore.client.builder.AwsSyncClientBuilder;
import software.amazon.awssdk.core.SdkClient;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;

/**
* Abstract class that eases creation of AWS client factories.
@@ -37,16 +37,16 @@
*/
public abstract class AwsClientFactory<SB extends AwsSyncClientBuilder<SB, SC> & AwsClientBuilder<SB, SC>, AB extends AwsAsyncClientBuilder<AB, AC> & AwsClientBuilder<AB, AC>, SC, AC extends SdkClient> {

protected final AwsCredentialsProviderChain credentialsProvider;
protected final AwsRegionProviderChain regionProvider;
protected final AwsCredentialsProvider credentialsProvider;
protected final AwsRegionProvider regionProvider;

/**
* Constructor.
*
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected AwsClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected AwsClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
this.credentialsProvider = credentialsProvider;
this.regionProvider = regionProvider;
}
Original file line number Diff line number Diff line change
@@ -19,10 +19,10 @@
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClient;
import software.amazon.awssdk.services.dynamodb.DynamoDbAsyncClientBuilder;
import software.amazon.awssdk.services.dynamodb.DynamoDbClient;
@@ -45,7 +45,7 @@ public class DynamoDbClientFactory extends AwsClientFactory<DynamoDbClientBuilde
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected DynamoDbClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected DynamoDbClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}

Original file line number Diff line number Diff line change
@@ -19,10 +19,10 @@
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.s3.S3AsyncClient;
import software.amazon.awssdk.services.s3.S3AsyncClientBuilder;
import software.amazon.awssdk.services.s3.S3Client;
@@ -48,7 +48,7 @@ public class S3ClientFactory extends AwsClientFactory<S3ClientBuilder, S3AsyncCl
* @param regionProvider The region provider
* @param configuration The service configuration
*/
public S3ClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider,
public S3ClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider,
S3ConfigurationProperties configuration) {
super(credentialsProvider, regionProvider);
this.configuration = configuration;
Original file line number Diff line number Diff line change
@@ -20,10 +20,10 @@
import io.micronaut.context.annotation.BootstrapContextCompatible;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClient;
import software.amazon.awssdk.services.secretsmanager.SecretsManagerAsyncClientBuilder;
import software.amazon.awssdk.services.secretsmanager.SecretsManagerClient;
@@ -46,7 +46,7 @@ public class SecretsManagerClientFactory extends AwsClientFactory<SecretsManager
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected SecretsManagerClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected SecretsManagerClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}

Original file line number Diff line number Diff line change
@@ -19,10 +19,10 @@
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.ses.SesAsyncClient;
import software.amazon.awssdk.services.ses.SesAsyncClientBuilder;
import software.amazon.awssdk.services.ses.SesClient;
@@ -45,7 +45,7 @@ public class SesClientFactory extends AwsClientFactory<SesClientBuilder, SesAsyn
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected SesClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected SesClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}

Original file line number Diff line number Diff line change
@@ -19,10 +19,10 @@
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.sns.SnsAsyncClient;
import software.amazon.awssdk.services.sns.SnsAsyncClientBuilder;
import software.amazon.awssdk.services.sns.SnsClient;
@@ -45,7 +45,7 @@ public class SnsClientFactory extends AwsClientFactory<SnsClientBuilder, SnsAsyn
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected SnsClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected SnsClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}

Original file line number Diff line number Diff line change
@@ -19,10 +19,10 @@
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.sqs.SqsAsyncClient;
import software.amazon.awssdk.services.sqs.SqsAsyncClientBuilder;
import software.amazon.awssdk.services.sqs.SqsClient;
@@ -45,7 +45,7 @@ public class SqsClientFactory extends AwsClientFactory<SqsClientBuilder, SqsAsyn
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected SqsClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected SqsClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}

Original file line number Diff line number Diff line change
@@ -20,10 +20,10 @@
import io.micronaut.context.annotation.BootstrapContextCompatible;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.ssm.SsmAsyncClient;
import software.amazon.awssdk.services.ssm.SsmAsyncClientBuilder;
import software.amazon.awssdk.services.ssm.SsmClient;
@@ -47,7 +47,7 @@ public class SsmClientFactory extends AwsClientFactory<SsmClientBuilder, SsmAsyn
* @param credentialsProvider The credentials provider
* @param regionProvider The region provider
*/
protected SsmClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected SsmClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}

Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ package io.micronaut.aws.sdk.v2

import io.micronaut.context.ApplicationContext
import software.amazon.awssdk.auth.credentials.AwsCredentials
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider
import software.amazon.awssdk.auth.credentials.AwsSessionCredentials
import spock.lang.Specification
import spock.util.environment.RestoreSystemProperties
@@ -38,7 +38,7 @@ class EnvironmentAwsCredentialsProviderSpec extends Specification {

when:
AwsCredentials awsCredentials =
applicationContext.getBean(AwsCredentialsProviderChain).resolveCredentials()
applicationContext.getBean(AwsCredentialsProvider).resolveCredentials()

then:
awsCredentials.accessKeyId() == TEST_KEY_ID
@@ -59,7 +59,7 @@ class EnvironmentAwsCredentialsProviderSpec extends Specification {

when:
AwsCredentials awsCredentials =
applicationContext.getBean(AwsCredentialsProviderChain).resolveCredentials()
applicationContext.getBean(AwsCredentialsProvider).resolveCredentials()

then:
awsCredentials.accessKeyId() == TEST_KEY_ID
@@ -79,7 +79,7 @@ class EnvironmentAwsCredentialsProviderSpec extends Specification {

when:
AwsSessionCredentials awsCredentials =
applicationContext.getBean(AwsCredentialsProviderChain).resolveCredentials() as AwsSessionCredentials
applicationContext.getBean(AwsCredentialsProvider).resolveCredentials() as AwsSessionCredentials

then:
awsCredentials.accessKeyId() == TEST_KEY_ID
@@ -96,7 +96,7 @@ class EnvironmentAwsCredentialsProviderSpec extends Specification {

when:
AwsSessionCredentials awsCredentials =
applicationContext.getBean(AwsCredentialsProviderChain).resolveCredentials() as AwsSessionCredentials
applicationContext.getBean(AwsCredentialsProvider).resolveCredentials() as AwsSessionCredentials

then:
awsCredentials.accessKeyId() == "yamlAccessKeyId"
@@ -117,7 +117,7 @@ class EnvironmentAwsCredentialsProviderSpec extends Specification {

when:
AwsCredentials awsCredentials =
applicationContext.getBean(AwsCredentialsProviderChain).resolveCredentials()
applicationContext.getBean(AwsCredentialsProvider).resolveCredentials()

then:
awsCredentials.accessKeyId() == TEST_KEY_ID
Original file line number Diff line number Diff line change
@@ -2,7 +2,7 @@ package io.micronaut.aws.sdk.v2

import io.micronaut.context.ApplicationContext
import software.amazon.awssdk.regions.Region
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain
import software.amazon.awssdk.regions.providers.AwsRegionProvider
import spock.lang.Specification
import spock.util.environment.RestoreSystemProperties

@@ -17,7 +17,7 @@ class EnvironmentAwsRegionProviderSpec extends Specification {
])

when:
Region region = applicationContext.getBean(AwsRegionProviderChain).region
Region region = applicationContext.getBean(AwsRegionProvider).region

then:
region.toString() == TEST_REGION
@@ -31,7 +31,7 @@ class EnvironmentAwsRegionProviderSpec extends Specification {
ApplicationContext applicationContext = ApplicationContext.run("yaml")

when:
Region region = applicationContext.getBean(AwsRegionProviderChain).region
Region region = applicationContext.getBean(AwsRegionProvider).region

then:
region.toString() == TEST_REGION
@@ -47,7 +47,7 @@ class EnvironmentAwsRegionProviderSpec extends Specification {
ApplicationContext applicationContext = ApplicationContext.run()

when:
Region region = applicationContext.getBean(AwsRegionProviderChain).region
Region region = applicationContext.getBean(AwsRegionProvider).region

then:
region.toString() == TEST_REGION
Original file line number Diff line number Diff line change
@@ -4,10 +4,10 @@
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Requires;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.http.SdkHttpClient;
import software.amazon.awssdk.http.async.SdkAsyncHttpClient;
import software.amazon.awssdk.regions.providers.AwsRegionProviderChain;
import software.amazon.awssdk.regions.providers.AwsRegionProvider;
import software.amazon.awssdk.services.rekognition.RekognitionAsyncClient;
import software.amazon.awssdk.services.rekognition.RekognitionAsyncClientBuilder;
import software.amazon.awssdk.services.rekognition.RekognitionClient;
@@ -20,7 +20,7 @@
@Factory
public class RekognitionClientFactory extends AwsClientFactory<RekognitionClientBuilder, RekognitionAsyncClientBuilder, RekognitionClient, RekognitionAsyncClient> {

protected RekognitionClientFactory(AwsCredentialsProviderChain credentialsProvider, AwsRegionProviderChain regionProvider) {
protected RekognitionClientFactory(AwsCredentialsProvider credentialsProvider, AwsRegionProvider regionProvider) {
super(credentialsProvider, regionProvider);
}