fs.s3.awsAccessKeyId 和 fs.s3.awsSecretAccessKey 未设置为 EMR 默认 IAM 角色

fs.s3.awsAccessKeyId and fs.s3.awsSecretAccessKey are not set for EMR default IAM roles

我的一项 EMR 工作依赖于分别从 fs.s3.awsAccessKeyIdfs.s3.awsSecretAccessKey 属性获取 AWS 访问密钥 ID 和秘密访问密钥。但是,当我 运行 EMR 集群使用默认的 EC2 和 EMR 角色时,这些属性不存在。

如何在 运行使用默认角色连接 EMR 集群时获取这些访问密钥,此时需要使用 IAM 角色?我可以做到的一种方法是自己明确设置这些属性,但我想看看我是否遗漏了其他东西。

使用角色而不是硬编码键是最佳做法 (http://docs.aws.amazon.com/general/latest/gr/aws-access-keys-best-practices.html)。 EMR 上的一个示例是底层 Hadoop FS 调用使用分配给 EC2 实例的角色来生成临时安全凭证。

您的应用程序可以构建为执行相同的操作 (http://docs.aws.amazon.com/IAM/latest/UserGuide/roles-usingrole-ec2instance.html),以便它从分配的角色获取临时访问密钥和带有令牌的秘密,而不是从固定配置中读取它。