Description
Describe the bug
DefaultCredentialsProvider#create does not create a new instance as documentation suggests but instead returns the same instance every time.
At the same time DefaultCredentialsProvider
implements SdkAutoCloseable
and has method close()
- if that one is called the static instance returned will be broken for ever. We encountered this issue after upgrading SDK to 2.17.283 when WebIdentityTokenFileCredentialsProvider
started to implement SdkAutoCloseable
and our code stopped working.
Expected Behavior
DefaultCredentialsProvider#create
returns new instance every time
Current Behavior
DefaultCredentialsProvider#create
returns the same instance every time
Reproduction Steps
Running this code on eks pod should do the trick
try(DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider.create()) {
AwsCredentials awsCredentials = defaultCredentialsProvider.resolveCredentials();
System.out.println(awsCredentials);
}
try(DefaultCredentialsProvider defaultCredentialsProvider = DefaultCredentialsProvider.create()) {
AwsCredentials awsCredentials = defaultCredentialsProvider.resolveCredentials();
System.out.println(awsCredentials);
}
Possible Solution
Create method should do what it says:
public static DefaultCredentialsProvider create() {
return new DefaultCredentialsProvider(builder());
}
Additional Information/Context
No response
AWS Java SDK version used
2.17.283
JDK version used
amazon coretto 17.0.4.9.1
Operating System and version
alpine 3.16