Spark无法找到有效的S3数据源-跨帐户IAM角色/承担角色是否可能出现问题?

时间:2018-10-12 19:50:24

标签: amazon-web-services apache-spark amazon-s3

我正在AWS EMR集群上运行Spark。我的设置是所有感兴趣的文件都放在帐户A的S3存储桶中,而加密文件的KMS密钥在帐户B中。要对此进行处理,我设置了一个跨帐户IAM角色,由帐户A中群集的EC2 IAM角色,该角色可以访问存储桶和KMS密钥。但是,这似乎不起作用。

对于找到的每个文件,日志中都充满这样的消息:

18/10/10 19:08:00 WARN InMemoryFileIndex: The directory s3://mybucket/subfolder/subfolder2/file.csv was not found. Was it deleted very recently?

这令人迷惑,因为我知道S3中存在该路径/文件,甚至我什至还通过SSH到EMR节点并承担了角色并亲自从CLI运行S3下载命令,并且该命令没有问题,因此假设角色操作看来不错。我还可以将数据下载到使用属于帐户A的KMS密钥加密的同一存储桶中,而永远不会下载使用帐户B的密钥进行加密的存储桶中的数据。

我为此帐户的跨帐户IAM角色使用了非常相似的自定义凭据提供程序:https://github.com/zillow/aws-custom-credential-provider/blob/master/src/main/java/com/zillow/zda/data_lake/credential/RoleBasedAWSCredentialProvider.java,基于此处的AWS建议:https://aws.amazon.com/blogs/big-data/securely-analyze-data-from-another-aws-account-with-emrfs/

有人遇到过此Spark错误吗?试图告诉我什么?从表面上看,它只是看起来是错误的:该路径存在,并且在CLI上执行假定角色操作后,即可从EC2实例本身进行访问。

0 个答案:

没有答案