使用Java中aws配置文件中定义的role_arn

时间:2017-05-10 09:57:21

标签: java amazon-web-services amazon-s3 config

我有一个Java代码,它创建一个s3Client对象来执行存储区操作。我有一个 credentials 文件,其中/root/.aws/文件夹下有以下数据,

[default]
aws_access_key_id = <the key>
aws_secret_access_key = <the key>

最近,存储桶策略已更新,并在同一目录下的 config 文件中添加了以下详细信息,

[default]
role_arn = arn:aws:iam::<id>:role/<role_name>
source_profile = default
output = text
region = region-name

我的应用程序无法使用配置文件中的role_arn,也无法执行任何存储分区操作。

AWS是否提供了直接读取配置文件的任何类,我不想对代码中的role_arnregion值进行硬编码。

我看到 ProfilesConfigFile 用于阅读凭据文件中的内容,但 config 文件的内容没有任何内容。

1 个答案:

答案 0 :(得分:1)

AWS CLI使用配置文件(〜/ .aws / config)使用role_arn / region委派配置文件。因此,使用--profile default的cli操作可以正常工作。根据配置文件中指定的feature request角色假设与AWS SDK不兼容。

当您初始化s3Client时,它使用S3CredentialProviderChain,它只是扩展DefaultAWSCredentialsProviderChain以从〜/ .aws / credentials中检索凭据。

使应用程序的变通方法是在应用程序中加载config(〜/ .aws / config)文件,并使用指定的role_arn发出假设请求。 example