如何只读取我在credentials
目录下的.aws
文件中找到的不同aws配置文件?只是想让我的应用程序读取访问密钥和秘密,如下面但不知道如何指向凭证文件。
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峰会自动设置来自AWS env vars的凭据;请注意,他们可以标记你在spark-defaults / core-site中设置的任何内容。
如果您使用S3A,我认为它可能会使用这些凭据(它需要一个auth机制列表;我将看一下它是否会执行此操作)。
您可以在Hadoop / YARN中设置core-site.xml以从另一个目录中获取机密。我在测试中执行此操作via XInclude。
Hadoop 2.8+中的S3A还将处理EC2虚拟机中的IAM身份验证,并在加密的JCEKS文件中编码机密(可以在群集中共享,因此秘密永远不会在作业提交中以明文形式发送)。它还支持会话密钥,因此您可以在短时间内发布一些凭据。