我的用例是将文件从本地Hadoop集群上传到AWS S3。在实现它之前,我尝试执行简单的ls
命令以查看Hadoop中的存储桶内容。
在运行任何命令之前,我先导出类似这样的键
export AWS_ACCESS_KEY_ID=<AcessKeyId>
export AWS_SECRET_ACCESS_KEY=<secretekey>
export AWS_SESSION_TOKEN=<sessiontoken>
如果使用以下命令,我就能看到存储桶中的内容
aws s3api list-objects --bucket <bucket_name>
但是,当我使用以下命令时
hadoop fs -Dfs.s3a.aws.credentials.provider="org.apache.hadoop.fs.s3a.TemporaryAWSCredentialsProvider" -Dfs.s3.access.key="<Access key>" -Dfs.s3.secret.key="<Aws access key>" -Dfs.s3a.session.token="<session_token>" -libjars <path to hadoop-aws.jar file> -ls s3a://<bucket_name>/
我遇到以下错误
AmazonClientException: Unable to load AWS credentials from any provider in the chain
我的问题是,尽管我同时提供aws credentials
作为环境变量,以及在使用-Dfs.s3.access.key
的命令中提供了为什么我会看到AmazonClientException