如何使用java api获取AWS账户详细信息?不适用于IAM用户

时间:2015-12-16 08:53:53

标签: java amazon-web-services aws-sdk amazon-iam

我们有两个AWS账户。一个用于生产,另一个用于测试。我们需要区分我们正在运行的环境。我们可以看到一个简单的方法是获取帐户名称,一旦我们得到它,它将非常直接。但是,我们不知道如何从AWS凭证或属性中获取它。有没有人知道如何使用AWS凭证获取帐户信息? 我考虑过帐户权限,帐户类型等的可能性,但我认为它不应该阻止我们获取帐户名称?

6 个答案:

答案 0 :(得分:3)

您可以看到GetUserResult。这由getUser()返回。 GetUserResult有一种获取User的方法。这个User包含了获取所需信息的所有字段。

答案 1 :(得分:3)

使用最新的aws java sdk,您可以使用getCallerIdentity

AWSSecurityTokenServiceClientBuilder.standard().build()
    .getCallerIdentity(new GetCallerIdentityRequest()).getAccount()

答案 2 :(得分:2)

查看get_user(iam用户)中返回的帐号 例如,

"Arn": "arn:aws:iam::THISISYOURNUMERICACCOUNTNUMBER:user/lcerezo"

答案 3 :(得分:2)

AmazonIdentityManagementClient iamClient = new AmazonIdentityManagementClient();

String accountNumber = iamClient.getUser()。getUser()。getArn()。split(":")[4]);

答案 4 :(得分:2)

如果您使用的是安全令牌服务,您将无法获取用户详细信息以获取帐号。您可以改为使用该角色。以下是示例代码。

AmazonIdentityManagementClient iamClient = new AmazonIdentityManagementClient();
GetRoleRequest getRoleRequest = new GetRoleRequest();
getRoleRequest.setRoleName("roleName");
String accountNumber = iamClient.getRole(getRoleRequest).getRole().getArn().split(":")[4];

答案 5 :(得分:1)

使用AWS v2.0 Java SDK,您可以使用software.amazon.awssdk.services.sts.StsClient#getCallerIdentity

首先向sts模块添加依赖项,例如在gradle中:

implementation platform("software.amazon.awssdk:bom:2.14.2")
implementation "software.amazon.awssdk:sts"

然后:

log.info("{}", StsClient.create().getCallerIdentity());

将返回:

GetCallerIdentityResponse(UserId=AJAIVBQXMUAJAIVBQXMU, Account=298232720644, Arn=arn:aws:iam::298232720644:user/adrian)