如何判断 Spark 正在使用哪些 AWS 凭证读取 S3 文件?

How to tell what AWS credentials Spark is using to read S3 files?

我是 运行 以前 运行 不错的 Oozie 工作。现在我在访问 S3 文件时遇到权限被拒绝的错误。我只是想弄清楚它使用了哪些凭据以及在哪里修复它们。

据我所知,凭据似乎来自多个位置,并且不确定优先顺序(例如 ~/.aws/credentials、环境变量、hadoop 配置、IAM 角色等)。

有没有办法判断哪个是正在使用的活动凭据?是否可以在 spark 日志记录中打印活动的 AWS 帐户密钥 ID?

因为你运行 Cloudera集群,你可能看过这篇文档Make a modified copy of the configuration files

最好在 core-site.xml 文件中添加以下元素:

<property>
    <name>fs.s3a.access.key</name>
    <value>Amazon S3 Access Key</value>
</property>

<property>
    <name>fs.s3a.secret.key</name>
    <value>Amazon S3 Secret Key</value>
</property>
  1. 出于安全原因,AWS 登录详细信息并未真正记录下来。
  2. Spark submit 将从您的桌面获取 AWS_ 环境变量并设置 fs.s3a 值,覆盖其中的任何值。

在s3a连接器中,顺序是

  1. URI 中的秘密(坏的,避免的,从最近的版本中删除)
  2. fs.s3a 属性
  3. 环境变量
  4. 提供给 EC2 VM 的 IAM 凭据

您可以configure the list of authentication providers更改顺序、删除它们等