in amazon-kinesis-connector-flink/src/main/java/software/amazon/kinesis/connectors/flink/util/AWSUtil.java [160:219]
private static AWSCredentialsProvider getCredentialsProvider(final Properties configProps, final String configPrefix) {
CredentialProvider credentialProviderType = getCredentialProviderType(configProps, configPrefix);
switch (credentialProviderType) {
case ENV_VAR:
return new EnvironmentVariableCredentialsProvider();
case SYS_PROP:
return new SystemPropertiesCredentialsProvider();
case PROFILE:
String profileName = configProps.getProperty(
AWSConfigConstants.profileName(configPrefix), null);
String profileConfigPath = configProps.getProperty(
AWSConfigConstants.profilePath(configPrefix), null);
return (profileConfigPath == null)
? new ProfileCredentialsProvider(profileName)
: new ProfileCredentialsProvider(profileConfigPath, profileName);
case BASIC:
return new AWSCredentialsProvider() {
@Override
public AWSCredentials getCredentials() {
return new BasicAWSCredentials(
configProps.getProperty(AWSConfigConstants.accessKeyId(configPrefix)),
configProps.getProperty(AWSConfigConstants.secretKey(configPrefix)));
}
@Override
public void refresh() {
// do nothing
}
};
case ASSUME_ROLE:
final AWSSecurityTokenService baseCredentials = AWSSecurityTokenServiceClientBuilder.standard()
.withCredentials(getCredentialsProvider(configProps, AWSConfigConstants.roleCredentialsProvider(configPrefix)))
.withRegion(configProps.getProperty(AWSConfigConstants.AWS_REGION))
.build();
return new STSAssumeRoleSessionCredentialsProvider.Builder(
configProps.getProperty(AWSConfigConstants.roleArn(configPrefix)),
configProps.getProperty(AWSConfigConstants.roleSessionName(configPrefix)))
.withExternalId(configProps.getProperty(AWSConfigConstants.externalId(configPrefix)))
.withStsClient(baseCredentials)
.build();
case WEB_IDENTITY_TOKEN:
return WebIdentityTokenCredentialsProvider.builder()
.roleArn(configProps.getProperty(AWSConfigConstants.roleArn(configPrefix), null))
.roleSessionName(configProps.getProperty(AWSConfigConstants.roleSessionName(configPrefix), null))
.webIdentityTokenFile(configProps.getProperty(AWSConfigConstants.webIdentityTokenFile(configPrefix), null))
.build();
case AUTO:
return new DefaultAWSCredentialsProviderChain();
default:
throw new IllegalArgumentException("Credential provider not supported: " + credentialProviderType);
}
}