您好我有一个用Scala(分布式系统 - Spark)编写的应用程序,我需要对我的S3存储桶具有读取权限。 我可以使用IAM用户通过AWS控制台访问此存储桶,我希望使用IAM用户获取该存储桶的临时凭据。任何人都可以解释如何或是否可能..?
我已经看过这个教程:http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/prog-services-sts.html
但是使用临时凭证的重点是我不想将AWS凭证添加到我的代码中,看起来AWSSecurityTokenServiceClient
需要它。
答案 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了解详情。