【问题标题】:Unable to load AWS Credentials无法加载 AWS 凭证
【发布时间】:2020-06-01 08:28:17
【问题描述】:

我按照下一个示例连接到 Amazon Kinesis Data Streams 并将连接的结果以 parquet 格式输出到 Amazon S3:https://docs.aws.amazon.com/glue/latest/dg/glue-etl-scala-example.html

当我配置到 AWS 的连接并尝试运行它时,它会引发下一个找不到凭据的错误,并且我已经在“C:\Users\user.aws\credentials”中分配了我还添加了环境变量:

AWS_ACCESS_KEY_ID=XXX
AWS_SECRET_ACCESS_KEY=XxXX

但仍然失败:

 ERROR AWSInstanceProfileCredentialsProviderWithRetries: Got an exception while fetching credentials org.apache.s
park.sql.kinesis.shaded.amazonaws.SdkClientException: Unable to load credentials from service endpoint

【问题讨论】:

    标签: amazon-web-services apache-spark aws-glue amazon-kinesis kinesis-stream


    【解决方案1】:

    错误消息不是关于您在"C:\Users\user.aws\credentials" 中拥有的凭据,而是关于实例配置文件中缺少凭据。

    AWSInstanceProfileCredentialsProviderWithRetries 类扩展 InstanceProfileCredentialsProvider 其中is

    Amazon EC2 实例元数据服务

    加载凭证的凭证提供程序实施

    您正在执行的代码应该在 EC2 实例上运行,因此它需要从 instance role 获取凭据。更重要的是,实例角色应该拥有您的代码所需的所有必要权限,例如,使用 Kinesis。

    从您问题中提供的链接中,尚不清楚示例代码应该在哪里准确执行。无论是自定义的 ec2 实例,还是一些胶水相关的托管实例。

    【讨论】:

    • 而且无法在本地运行?我使用下一个配置:docs.aws.amazon.com/glue/latest/dg/… 以及我在问题中添加的示例代码。 :S
    • @AsierGomez 应该可以,但是您需要在代码中使用不同的凭据提供程序。有很多 for java 列出了here。例如,DefaultAWSCredentialsProviderChain 可以使用“所有 AWS 开发工具包和 AWS CLI 共享的默认位置 (~/.aws/credentials) 的凭证配置文件”。
    • 最后将凭据作为选项添加到 sparkSession.readStream 它的工作原理:.option("awsAccessKeyId", "XXXX") .option("awsSecretKey", "xxxXXX") .option("aws_iam_role", "test-kinesis-full-access")
    • 很高兴听到它成功了。谢谢你告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    • 2023-02-03
    • 1970-01-01
    相关资源
    最近更新 更多