Specify sts provider path for conversion to kclStsProvider

This commit is contained in:
Ethan Katnic 2024-09-05 09:39:22 -07:00
parent 4d5a3995f0
commit ac7d975c5f
2 changed files with 11 additions and 5 deletions

View file

@ -27,6 +27,8 @@ import java.util.stream.Stream;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain; import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.services.sts.auth.StsAssumeRoleCredentialsProvider;
import software.amazon.kinesis.multilang.auth.KclStsAssumeRoleCredentialsProvider;
/** /**
* Get AwsCredentialsProvider property. * Get AwsCredentialsProvider property.
@ -184,12 +186,14 @@ class AwsCredentialsProviderPropertyValueDecoder implements IPropertyValueDecode
* or null if the class cannot be resolved or does not extend AwsCredentialsProvider. * or null if the class cannot be resolved or does not extend AwsCredentialsProvider.
*/ */
private static Class<? extends AwsCredentialsProvider> getClass(String providerName) { private static Class<? extends AwsCredentialsProvider> getClass(String providerName) {
String className = providerName.replace( // Convert any form of StsAssumeRoleCredentialsProvider string to KclStsAssumeRoleCredentialsProvider
"software.amazon.awssdk.auth.credentials.StsAssumeRoleCredentialsProvider", if (providerName.equals(StsAssumeRoleCredentialsProvider.class.getSimpleName())
"software.amazon.kinesis.multilang.auth.KclStsAssumeRoleCredentialsProvider"); || providerName.equals(StsAssumeRoleCredentialsProvider.class.getName())) {
providerName = KclStsAssumeRoleCredentialsProvider.class.getName();
}
final Class<? extends AwsCredentialsProvider> clazz; final Class<? extends AwsCredentialsProvider> clazz;
try { try {
final Class<?> c = Class.forName(className); final Class<?> c = Class.forName(providerName);
if (!AwsCredentialsProvider.class.isAssignableFrom(c)) { if (!AwsCredentialsProvider.class.isAssignableFrom(c)) {
return null; return null;
} }

View file

@ -25,6 +25,7 @@ import software.amazon.awssdk.auth.credentials.AwsBasicCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentials; import software.amazon.awssdk.auth.credentials.AwsCredentials;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider; import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain; import software.amazon.awssdk.auth.credentials.AwsCredentialsProviderChain;
import software.amazon.awssdk.services.sts.auth.StsAssumeRoleCredentialsProvider;
import software.amazon.kinesis.multilang.auth.KclStsAssumeRoleCredentialsProvider; import software.amazon.kinesis.multilang.auth.KclStsAssumeRoleCredentialsProvider;
import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.equalTo;
@ -121,7 +122,8 @@ public class AWSCredentialsProviderPropertyValueDecoderTest {
for (final String className : Arrays.asList( for (final String className : Arrays.asList(
KclStsAssumeRoleCredentialsProvider.class.getName(), // fully-qualified name KclStsAssumeRoleCredentialsProvider.class.getName(), // fully-qualified name
KclStsAssumeRoleCredentialsProvider.class.getSimpleName(), // name-only; needs prefix KclStsAssumeRoleCredentialsProvider.class.getSimpleName(), // name-only; needs prefix
"software.amazon.awssdk.auth.credentials.StsAssumeRoleCredentialsProvider")) { StsAssumeRoleCredentialsProvider.class.getName(), // user passes full sts package path
StsAssumeRoleCredentialsProvider.class.getSimpleName())) {
final AwsCredentialsProvider provider = decoder.decodeValue(className + "|arn|sessionName"); final AwsCredentialsProvider provider = decoder.decodeValue(className + "|arn|sessionName");
assertNotNull(className, provider); assertNotNull(className, provider);
} }