我知道这个问题可能被问了很多次,但我尝试了这些解决方案,但没有奏效。因此,在一个新的线程中请求一个确定的解决方案。
我创建了一个具有s3只读权限(获取并列出所有s3资源)的iam用户,但当我尝试使用hdfs命令从emr集群访问s3时,它会对某些文件夹抛出“错误代码403禁止”异常。其他职位的人回答说这是一个权限问题;我没有找到正确的解决方法,因为它是“禁止”而不是“拒绝访问”。此错误的行为仅出现在bucket中的某些文件夹(包含对象)和某些空文件夹中。据观察,如果我使用本机api调用,那么它正常工作如下:
使用s3a调用时出现异常“禁止”: hdfs dfs -ls s3a://<bucketname>/<folder>
使用s3本机调用时没有错误 s3n
以及 s3
:
hdfs dfs -ls s3:/// hdfs dfs -ls s3n://<bucketname>/<folder>
对于空文件夹也观察到了类似的行为,我知道在s3上只有对象是物理文件,而其余的“bucket和folders”只是一个占位符。但是,如果我创建了一个新的空文件夹 s3a
调用不会引发此异常。
p、 s.-根iam访问密钥超过此异常。
1条答案
按热度按时间fcy6dtqo1#
我建议您在issues.apache.org、hadoop project、component fs/s3上提交一份jira文件,使用您正在使用的hadoop版本。添加堆栈跟踪作为第一个注解,因为这是我们开始了解发生了什么的唯一方法。
fwiw,除了简单的只读和r/w之外,我们还没有测试过受限权限;在路径上混合权限不可避免地会破坏一些东西,因为客户机代码希望能够引导、获取和列出bucket中的任何内容。
顺便说一句,hadoops3客户端通过创建后缀为“/”的0字节对象来模拟所有的空目录,例如“folder/”;然后用一个头在上面探测一个空桶。在空目录下添加数据时,模拟父目录为delete-d。