【问题标题】:Amazon S3 Error Code 403 Forbidden from EMR clusterAmazon S3 错误代码 403 禁止来自 EMR 集群
【发布时间】:2017-01-15 23:36:02
【问题描述】:

我知道这个问题可能已被多次询问,但我尝试了这些解决方案,但没有奏效。因此,在新线程中询问它以获得明确的解决方案。

我创建了一个具有 S3 只读权限(获取和列出所有 S3 资源)的 IAM 用户,但是当我尝试使用 HDFS 命令从 EMR 集群访问 S3 时,它会为某些文件夹引发“错误代码 403 禁止”异常。其他帖子中的人已将其回答为权限问题;我没有找到正确的解决方案,因为它是“禁止访问”而不是“拒绝访问”。此错误的行为仅出现在存储桶内的某些文件夹(包含对象)和某些空文件夹中。据观察,如果我使用本机 API 调用,那么它可以正常工作,如下所示:

使用 s3a 调用时出现异常“禁止”:

hdfs dfs -ls s3a://<bucketname>/<folder>

使用s3原生调用s3ns3时没有错误:

hdfs dfs -ls s3://<bucketname>/<folder>

hdfs dfs -ls s3n://<bucketname>/<folder>

对于空文件夹也观察到了类似的行为,我理解在 S3 上只有对象是物理文件,而其余的“存储桶和文件夹”只是一个占位符。但是,如果我创建一个新的空文件夹,则 s3a 调用不会引发此异常。

附: - 根 IAM 访问密钥超出此异常。

【问题讨论】:

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


    【解决方案1】:

    我建议您在 issues.apache.org、HADOOP 项目、组件 fs/s3 上提交 JIRA,使用您正在使用的确切 hadoop 版本。将堆栈跟踪添加为第一条注释,因为这是我们开始弄清楚发生了什么的唯一方法。

    FWIW,除了简单的只读和 R/W 之外,我们还没有测试受限权限;在路径中混合权限不可避免地会破坏事情,因为客户端代码希望能够 HEAD、GET 和 LIST 存储桶中的任何内容。

    顺便说一句,Hadoop S3 客户端都通过创建带有“/”后缀的 0 字节对象来模拟空目录,例如“文件夹/”;然后在其上使用 HEAD 来探测空桶。在空目录下添加数据时,模拟父目录为DELETE-d。

    【讨论】:

    • 感谢您的回复,我会为它打开 JIRA。
    • @AbhishekSakhuja - 你有没有提交过罚单?我遇到了同样的错误。谢谢!
    • 使用 S3A 连接器和 IAM 角色/假定角色和减少权限的 Hadoop 3.1 做了大量工作。在现在提交任何 JIRA 之前,请下载 Hadoop 3.1 并查看是否可以在那里重现它。这将是在任何人查看该问题之前你被要求做的第一件事
    猜你喜欢
    • 1970-01-01
    • 2016-01-18
    • 2017-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    • 2012-02-28
    相关资源
    最近更新 更多