使用临时凭证访问AWS S3

时间:2016-04-24 13:31:04

标签: java scala amazon-s3 apache-spark aws-sts

您好我有一个用Scala(分布式系统 - Spark)编写的应用程序,我需要对我的S3存储桶具有读取权限。 我可以使用IAM用户通过AWS控制台访问此存储桶,我希望使用IAM用户获取该存储桶的临时凭据。任何人都可以解释如何或是否可能..?

我已经看过这个教程:http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/prog-services-sts.html 但是使用临时凭证的重点是我不想将AWS凭证添加到我的代码中,看起来AWSSecurityTokenServiceClient需要它。

1 个答案:

答案 0 :(得分:0)

如果您不想在代码中使用AWS凭据,则可以使用InstanceProfileCredentialsProvider。如果从ec2实例内部运行代码,则可以获得与与EC2实例关联的IAM角色相关的临时凭证。

val instanceProfileCredentialsProvider = new com.amazonaws.auth.InstanceProfileCredentialsProvider()
val credentials: AWSCredentials = instanceProfileCredentialsProvider.getCredentials

hadoopConf.set("fs.s3a.awsAccessKeyId", credentials.getAWSAccessKeyId)
hadoopConf.set("fs.s3a.awsSecretAccessKey", credentials.getAWSSecretKey)

def s3 = new AmazonS3Client(instanceProfileCredentialsProvider)

点击here了解详情。