Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java中aws配置文件中定义的角色_Java_Amazon Web Services_Amazon S3_Config - Fatal编程技术网

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

使用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值

我有一个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

我查看了
配置文件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