2016-04-24 173 views
0

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

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

回答

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获取更多信息。

相关问题