使用Java中aws配置文件中定义的角色
我有一个Java代码,它创建了一个s3Client对象来执行bucket操作。我在使用Java中aws配置文件中定义的角色,java,amazon-web-services,amazon-s3,config,Java,Amazon Web Services,Amazon S3,Config,我有一个Java代码,它创建了一个s3Client对象来执行bucket操作。我在/root/.aws/文件夹下有一个凭证文件,其中包含以下数据 [default] aws_access_key_id = <the key> aws_secret_access_key = <the key> 我的应用程序无法使用配置文件中的角色\u arn,也无法执行任何bucket操作 AWS是否提供任何类来直接读取配置文件,我不想硬编码代码中的role\u arn和region值
/root/.aws/
文件夹下有一个凭证
文件,其中包含以下数据
[default]
aws_access_key_id = <the key>
aws_secret_access_key = <the key>
我的应用程序无法使用配置文件中的角色\u arn
,也无法执行任何bucket操作
AWS是否提供任何类来直接读取配置文件,我不想硬编码代码中的role\u arn
和region
值
我查看了配置文件ConfigFile
以读取凭据文件中的内容,但没有查看配置文件的内容。AWS CLI使用配置文件(~/.AWS/config)来使用角色/region委派配置文件。因此,您使用--profile default
执行cli操作会很好。根据配置文件中指定的此角色假设,它与AWS SDK不兼容
当您按如下方式初始化s3Client时,它使用S3CredentialProviderChain
,它只是扩展了从~/.aws/credentials检索凭据的功能
创建应用程序的解决方法是在应用程序中加载config(~/.aws/config)文件,并使用指定的角色发出一个假定请求 你能粘贴你在应用程序中初始化s3Client的方式吗?如果您将InstanceProfileCredentialsProvider
实例传递给s3Client构造函数,它将使用IAM角色访问s3存储桶,前提是该角色对s3I具有所需的权限,我尝试使用s3Client=AmazonS3ClientBuilder.defaultClient()
但是它只读取凭证文件而不是配置文件,并且无法从配置文件中选择角色\u arn
。
[default]
role_arn = arn:aws:iam::<id>:role/<role_name>
source_profile = default
output = text
region = region-name