我有一个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_arn
和region
值进行硬编码。
我看到 ProfilesConfigFile
用于阅读凭据文件中的内容,但 config
文件的内容没有任何内容。
答案 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