diff options
Diffstat (limited to 'jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java')
-rw-r--r-- | jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java new file mode 100644 index 00000000000..6223f19d6de --- /dev/null +++ b/jdisc-cloud-aws/src/main/java/com/yahoo/jdisc/cloud/aws/VespaAwsCredentialsProvider.java @@ -0,0 +1,39 @@ +// Copyright Verizon Media. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. + +package com.yahoo.jdisc.cloud.aws; + +import com.amazonaws.auth.AWSCredentials; +import com.amazonaws.auth.AWSCredentialsProvider; +import com.amazonaws.auth.PropertiesCredentials; + +import java.nio.file.Path; +import java.util.concurrent.atomic.AtomicReference; + +public class VespaAwsCredentialsProvider implements AWSCredentialsProvider { + + private static final String DEFAULT_CREDENTIALS_PATH = "/opt/vespa/var/container-data/opt/vespa/conf/credentials.properties"; + + private final AtomicReference<AWSCredentials> credentials = new AtomicReference<>(); + private final Path credentialsPath; + + public VespaAwsCredentialsProvider() { + this.credentialsPath = Path.of(DEFAULT_CREDENTIALS_PATH); + refresh(); + } + + @Override + public AWSCredentials getCredentials() { + return credentials.get(); + } + + @Override + public void refresh() { + try { + // TODO : implement reading from json file + PropertiesCredentials propertiesCredentials = new PropertiesCredentials(this.credentialsPath.toFile()); + credentials.set(propertiesCredentials); + } catch (Exception e) { + throw new RuntimeException("Unable to get credentials in " + credentialsPath.toString(), e); + } + } +} |