【问题标题】:fs.s3.awsAccessKeyId and fs.s3.awsSecretAccessKey are not set for EMR default IAM roles没有为 EMR 默认 IAM 角色设置 fs.s3.awsAccessKeyId 和 fs.s3.awsSecretAccessKey
【发布时间】:2015-10-11 18:12:41
【问题描述】:

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

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

【问题讨论】:

    标签: emr elastic-map-reduce amazon-emr


    【解决方案1】:

    使用角色而不是硬编码键是最佳做法 (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),以便从分配的角色中获取临时访问密钥和带有令牌的密钥,而不是从固定配置中读取它。

    【讨论】:

    • 我遇到的问题是我的 EMR 作业使用 AmazonS3EncryptionClient,我需要使用 AWSCredentials 对象对其进行初始化,否则它会发出匿名请求。我还没有找到仅使用 IAM 角色初始化 AWSCredentials 的方法,并且由于它是角色而不是用户,因此我无法为其生成访问密钥/秘密密钥。
    • 您可以使用凭据提供程序使用不同的构造函数吗?见docs.aws.amazon.com/AmazonS3/latest/dev/…docs.aws.amazon.com/AWSSdkDocsJava/latest//DeveloperGuide/…
    • 看起来我可以使用DefaultAwsCredentialsProviderChain,因为它似乎使用了来自 EC2 的实例配置文件凭据。使用InstanceProfileCredentialsProvider 也可以。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-26
    • 1970-01-01
    • 2014-07-14
    • 1970-01-01
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多