【问题标题】:Hadoop `Unable to load AWS credentials from any provider in the chain`Hadoop`无法从链中的任何提供商加载 AWS 凭证`
【发布时间】:2023-03-11 21:16:01
【问题描述】:

我的用例是将文件从本地 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 &lt;bucket_name&gt;

但是,当我使用以下命令时

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

【问题讨论】:

    标签: amazon-web-services hadoop amazon-s3


    【解决方案1】:

    删除fs.s3a.aws.credentials.provider 选项并重试。如果未指定,则按顺序查询凭据提供程序类的默认列表(请参阅docs)。

    【讨论】:

    • 根据文档,我知道它将通过默认提供程序类。但是,当我删除fs.s3a.aws.credentials.provider 时,我得到了相同的AmazonClientException。我正在使用以下版本Hadoop 2.6.0-cdh5.4.11
    • 感谢 Jarmod,我能够弄清楚,我与 fs.s3a.aws.credentials.provider 不一致我将 fs.s3 的出现更改为 fs.s3a
    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 2021-08-08
    • 2017-07-10
    相关资源
    最近更新 更多