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