[ 
https://issues.apache.org/jira/browse/HADOOP-19384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17912040#comment-17912040
 ] 

ASF GitHub Bot commented on HADOOP-19384:
-----------------------------------------

steveloughran commented on code in PR #7284:
URL: https://github.com/apache/hadoop/pull/7284#discussion_r1910631412


##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/ProfileAWSCredentialsProvider.java:
##########
@@ -0,0 +1,46 @@
+package org.apache.hadoop.fs.s3a;
+
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.conf.Configuration;
+import software.amazon.awssdk.auth.credentials.AwsCredentials;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
+import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
+import software.amazon.awssdk.profiles.ProfileFile;
+
+import java.net.URI;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+
[email protected]
[email protected]

Review Comment:
   evolving



##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/ProfileAWSCredentialsProvider.java:
##########
@@ -0,0 +1,46 @@
+package org.apache.hadoop.fs.s3a;
+
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.conf.Configuration;
+import software.amazon.awssdk.auth.credentials.AwsCredentials;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
+import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
+import software.amazon.awssdk.profiles.ProfileFile;
+
+import java.net.URI;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+
[email protected]
[email protected]
+public class ProfileAWSCredentialsProvider implements AwsCredentialsProvider {
+    public static final String NAME
+            = "org.apache.hadoop.fs.s3a.ProfileAWSCredentialsProvider";
+
+    private ProfileCredentialsProvider pcp;
+
+    private static Path getCredentialsPath() {
+        String credentialsFile = 
SystemUtils.getEnvironmentVariable("AWS_SHARED_CREDENTIALS_FILE", null);
+        Path path = (credentialsFile == null) ?
+                
FileSystems.getDefault().getPath(SystemUtils.getUserHome().getPath(),".aws","credentials")
+                : FileSystems.getDefault().getPath(credentialsFile);
+        return path;
+    }
+
+    public ProfileAWSCredentialsProvider(URI uri, Configuration conf) {
+        ProfileCredentialsProvider.Builder builder = 
ProfileCredentialsProvider.builder();
+        
builder.profileName("default").profileFile(ProfileFile.builder().content(getCredentialsPath()).type(ProfileFile.Type.CREDENTIALS).build());
+        pcp = builder.build();
+    }
+
+    public ProfileAWSCredentialsProvider(Configuration conf) {
+        ProfileCredentialsProvider.Builder builder = 
ProfileCredentialsProvider.builder();
+        
builder.profileName("default").profileFile(ProfileFile.builder().content(getCredentialsPath()).build());

Review Comment:
   profile name should be configurable



##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/auth/CredentialProviderListFactory.java:
##########
@@ -84,7 +85,8 @@ public final class CredentialProviderListFactory {
           EnvironmentVariableCredentialsProvider.class,
           IAMInstanceCredentialsProvider.class,
           SimpleAWSCredentialsProvider.class,
-          TemporaryAWSCredentialsProvider.class));
+          TemporaryAWSCredentialsProvider.class,
+          ProfileAWSCredentialsProvider.class));

Review Comment:
   not a standard one...will need to be explicitly configured



##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/ProfileAWSCredentialsProvider.java:
##########
@@ -0,0 +1,46 @@
+package org.apache.hadoop.fs.s3a;
+
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.conf.Configuration;
+import software.amazon.awssdk.auth.credentials.AwsCredentials;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
+import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
+import software.amazon.awssdk.profiles.ProfileFile;
+
+import java.net.URI;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+
[email protected]
[email protected]
+public class ProfileAWSCredentialsProvider implements AwsCredentialsProvider {

Review Comment:
   `extends AbstractAWSCredentialProvider`
   
   and move into package auth



##########
hadoop-common-project/hadoop-common/src/main/resources/core-default.xml:
##########
@@ -1430,7 +1430,8 @@
     org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider,
     org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider,
     
software.amazon.awssdk.auth.credentials.EnvironmentVariableCredentialsProvider,
-    org.apache.hadoop.fs.s3a.auth.IAMInstanceCredentialsProvider
+    org.apache.hadoop.fs.s3a.auth.IAMInstanceCredentialsProvider,
+    org.apache.hadoop.fs.s3a.ProfileAWSCredentialsProvider

Review Comment:
   make this optional but document it



##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/ProfileAWSCredentialsProvider.java:
##########
@@ -0,0 +1,46 @@
+package org.apache.hadoop.fs.s3a;
+
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.conf.Configuration;
+import software.amazon.awssdk.auth.credentials.AwsCredentials;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
+import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
+import software.amazon.awssdk.profiles.ProfileFile;
+
+import java.net.URI;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+
[email protected]
[email protected]
+public class ProfileAWSCredentialsProvider implements AwsCredentialsProvider {
+    public static final String NAME
+            = "org.apache.hadoop.fs.s3a.ProfileAWSCredentialsProvider";
+
+    private ProfileCredentialsProvider pcp;

Review Comment:
   make final



##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/ProfileAWSCredentialsProvider.java:
##########
@@ -0,0 +1,46 @@
+package org.apache.hadoop.fs.s3a;
+
+import org.apache.commons.lang3.SystemUtils;

Review Comment:
   nit: use same import ordering as other classes



##########
hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/ProfileAWSCredentialsProvider.java:
##########
@@ -0,0 +1,46 @@
+package org.apache.hadoop.fs.s3a;
+
+import org.apache.commons.lang3.SystemUtils;
+import org.apache.hadoop.classification.InterfaceAudience;
+import org.apache.hadoop.classification.InterfaceStability;
+import org.apache.hadoop.conf.Configuration;
+import software.amazon.awssdk.auth.credentials.AwsCredentials;
+import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
+import software.amazon.awssdk.auth.credentials.ProfileCredentialsProvider;
+import software.amazon.awssdk.profiles.ProfileFile;
+
+import java.net.URI;
+import java.nio.file.FileSystems;
+import java.nio.file.Path;
+
[email protected]
[email protected]
+public class ProfileAWSCredentialsProvider implements AwsCredentialsProvider {
+    public static final String NAME
+            = "org.apache.hadoop.fs.s3a.ProfileAWSCredentialsProvider";
+
+    private ProfileCredentialsProvider pcp;
+
+    private static Path getCredentialsPath() {
+        String credentialsFile = 
SystemUtils.getEnvironmentVariable("AWS_SHARED_CREDENTIALS_FILE", null);
+        Path path = (credentialsFile == null) ?
+                
FileSystems.getDefault().getPath(SystemUtils.getUserHome().getPath(),".aws","credentials")

Review Comment:
   this path should be configurable





> Add support for ProfileCredentialsProvider
> ------------------------------------------
>
>                 Key: HADOOP-19384
>                 URL: https://issues.apache.org/jira/browse/HADOOP-19384
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs/s3
>    Affects Versions: 3.4.1
>            Reporter: Venkatasubrahmanian Narayanan
>            Assignee: Venkatasubrahmanian Narayanan
>            Priority: Minor
>              Labels: pull-request-available
>
> Hadoop currently doesn't support AWS' ProfileCredentialsProvider. A thin 
> wrapper is sufficient to get it to work, since it just needs us to fetch the 
> credentials file.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to