github.com/treeverse/lakefs@v1.24.1-0.20240520134607-95648127bfb0/clients/hadoopfs/src/main/java/io/lakefs/auth/TemporaryAWSCredentialsLakeFSTokenProvider.java (about)

     1  package io.lakefs.auth;
     2  
     3  import com.amazonaws.auth.AWSCredentialsProvider;
     4  import org.apache.hadoop.conf.Configuration;
     5  import com.amazonaws.auth.AWSCredentials;
     6  import com.amazonaws.auth.BasicSessionCredentials;
     7  import io.lakefs.Constants;
     8  import io.lakefs.FSConfiguration;
     9  
    10  import java.io.IOException;
    11  
    12  public class TemporaryAWSCredentialsLakeFSTokenProvider extends AWSLakeFSTokenProvider {
    13  
    14      public static final String NAME = "io.lakefs.auth.TemporaryAWSCredentialsLakeFSTokenProvider";
    15  
    16      public TemporaryAWSCredentialsLakeFSTokenProvider(String scheme, Configuration conf) throws IOException {
    17          String accessKey = FSConfiguration.get(conf, scheme, Constants.TOKEN_AWS_CREDENTIALS_PROVIDER_ACCESS_KEY_SUFFIX);
    18          if (accessKey == null) {
    19              throw new IOException("Missing AWS access key");
    20          }
    21          String secretKey = FSConfiguration.get(conf, scheme, Constants.TOKEN_AWS_CREDENTIALS_PROVIDER_SECRET_KEY_SUFFIX);
    22          if (secretKey == null) {
    23              throw new IOException("Missing AWS secret key");
    24          }
    25          String sessionToken = FSConfiguration.get(conf, scheme, Constants.TOKEN_AWS_CREDENTIALS_PROVIDER_SESSION_TOKEN_KEY_SUFFIX);
    26          if (sessionToken == null) {
    27              throw new IOException("Missing AWS session token");
    28          }
    29          AWSCredentialsProvider awsProvider = new AWSCredentialsProvider() {
    30              @Override
    31              public AWSCredentials getCredentials() {
    32                  return new BasicSessionCredentials(
    33                          accessKey,
    34                          secretKey,
    35                          sessionToken
    36                  );
    37              }
    38  
    39              @Override
    40              public void refresh() {
    41              }
    42          };
    43  
    44          this.initialize(awsProvider, scheme, conf);
    45      }
    46  }