如何使用本地计算机上的IAM角色访问S3

时间:2019-03-30 08:09:00

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

我有一个AWS账户(id:111111),并且创建了ARN角色(aws id:arn:aws:iam::222222:role/developenv)。

在AWS CLI中,我可以使用222222访问在id --profile中创建的资源。但是我不确定如何在Java中实现访问S3的功能。

我知道一种方法是使用临时凭证:

 AssumeRoleRequest roleRequest = new AssumeRoleRequest()
                                                    .withRoleArn(roleARN)
                                                    .withRoleSessionName(roleSessionName);
            stsClient.assumeRole(roleRequest);
            GetSessionTokenRequest getSessionTokenRequest = new GetSessionTokenRequest();
            getSessionTokenRequest.setDurationSeconds(7200);

我的问题是:是否有一种方法可以在不要求临时凭证的情况下访问帐户222222中创建的存储桶?

2 个答案:

答案 0 :(得分:1)

您使用的是正确的方法。

IAM角色本身没有凭据。相反,IAM用户可以假定 IAM角色,该角色将提供具有与该角色关联的权限的临时凭据。

在AWS CLI配置文件中指定角色时,CLI实际上代表您调用AssumeRole。这些凭据最多可以保持 12小时的有效期。

答案 1 :(得分:0)

特定于S3,可以绕过临时凭据机制,并永久允许另一个帐户中的另一个角色访问存储桶。请按照https://aws.amazon.com/premiumsupport/knowledge-center/cross-account-access-s3/启用此功能。