我正在使用saml2aws
为我的客户生成临时AWS密钥。以前我使用环境变量:
aws_access_key_id=MY KEY
aws_secret_access_key=MY SECRET
在通过saml2aws
进行身份验证之后,我的~/.aws/config
文件看起来像这样(未更改):
[default]
output=json
我的~/.aws/credentials
看起来像这样:
[default]
aws_access_key_id = MY KEY ID
aws_secret_access_key = MY KEY
aws_session_token = MY SESSION TOKEN
aws_security_token = MY TOKEN
x_principal_arn = MY ARN
x_security_token_expires = TIME
当我使用aws s3 ls
从cli尝试此操作时,它可以工作,但是当我尝试从Java SDK访问S3时:
AmazonS3Client(ProfileCredentialsProvider())
.listObjects(ListObjectsRequest()
.withBucketName("some-bucket")
.withPrefix("some-prefix")
.withDelimiter("/")
.withMaxKeys(10000))
我得到:
com.amazonaws.AmazonClientException:无法将凭据加载到配置文件中。缺少个人资料名称或AWS Access Key ID或AWS Secret Access Key。
即使我明确尝试使用default
个人资料:ProfileCredentialsProvider("default")
,或者即使我根本没有设置任何提供程序,它也不起作用!
我在做什么错了?
答案 0 :(得分:0)
AmazonS3Client().listObjects(ListObjectsRequest()
.withBucketName("some-bucket")
.withPrefix("some-prefix")
.withDelimiter("/")
.withMaxKeys(10000))
就足够了,不需要显式给出ProfileCredentialsProvider()
。
有关更多信息,请参见