0

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

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

4

1 回答 1

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)

点击这里了解更多信息。

于 2016-04-26T12:39:40.723 回答