2016-11-10 32 views
1

我如何才能读取我在我的credentials文件.aws目录中找到我不同的aws配置文件?只是想让我的应用程序读取访问密钥和秘密,如下所示,但不知道如何将这一点指向凭证文件。从AWS ENV瓦尔阅读.aws /凭证文件与斯卡拉hadoop conf设置火花

object S3KeyStore extends Serializable { 
    private val keyMap = Map(String, S3Key) 

    def load(key: String)(implicit sc: SparkContext) = keyMap.get(key) match { 
    case Some(k) => 
     val hc = sc.hadoopConfiguration 
     hc.set("fs.s3a.awsAccessKeyId", k.access) 
     hc.set("fs.s3a.awsSecretAccessKey", k.secret) 
     true 
    case _ => false 
    } 
} 

回答

0
  1. 火花峰会将自动设置凭证;请注意,它们可以标记您在spark-defaults/core-site中设置的任何内容。

  2. 如果你使用S3A,我认为它可能会使用这些凭据(它需要一个auth机制列表;我会看看它是否做到这一点)。

  3. 您可以在Hadoop/YARN中设置core-site.xml以从其他目录获取秘密。我在测试中这样做,via XInclude

  4. Hadoop 2.8+中的S3A也将处理EC2 VM中的IAM身份验证,并在加密的JCEKS文件中编码秘密(可在群集中共享,因此秘密在作业提交中绝不会以明文形式发送)。它还支持会话密钥,因此您可以在短时间内发出一些凭证。