如果可能的话,我希望能够使用我的spark
scala应用程序使用不同的配置文件维护的〜/ .aws / credentials文件.我知道如何在我的应用程序中为s3a设置hadoop配置,但我不想继续使用硬编码的不同密钥,而宁愿使用我的凭证文件,就像我使用不同的程序一样.我还尝试使用
java api,例如val credentials = new DefaultAWSCredentialsProviderChain().getCredentials()然后创建一个s3客户端,但是当从s3读取文件时,我不允许我使用我的密钥.我也知道,当我运行我的应用程序时,密钥可以进入core-site.xml但是我如何管理不同的密钥以及如何使用IntelliJ进行设置以便我可以使用不同的配置文件拉入不同的密钥? 最佳答案 DefaultAWSCredentialsProviderChain默认不包含任何提供程序.你需要添加一些,例如:
val awsCredentials = new AWSCredentialsProviderChain(new
auth.EnvironmentVariableCredentialsProvider(), new
auth.profile.ProfileCredentialsProvider(), new
auth.AWSCredentialsProvider())
您可以将它们与S3客户端一起使用,或者正如您提到的Spark:
hadoopConfig.set("fs.s3a.access.key", awsCredentials.getAWSAccessKeyId)
hadoopConfig.set("fs.s3a.secret.key", awsCredentials.getAWSSecretKey)
要在不同的AWS配置文件之间切换,您可以通过设置AWS_PROFILE环境变量在配置文件之间切换.如果需要,很高兴扩展任何特定点.