我们有两个AWS帐户。一个用于生产,另一个用于测试。我们需要区分我们正在运行的环境。我们可以看到,一个简单的方法是获得帐户名称,一旦我们获得,它将非常直接。但是,我们不知道如何从AWS证书或属性中获取它。有人知道如何使用AWS凭据获取帐户信息吗?我考虑了帐户权限、帐户类型等的可能性,但我认为这不应该阻止我们获得帐户名称?
使用最近的aws java sdk,您可以使用getCallerIdentity:
AWSSecurityTokenServiceClientBuilder.standard().build()
.getCallerIdentity(new GetCallerIdentityRequest()).getAccount()
您可以看到GetUserResult
。这是由getUser()
返回的。CCD_ 3有一种得到CCD_ 4的方法。此User
具有获取所需信息的所有字段。
"Arn": "arn:aws:iam::THISISYOURNUMERICACCOUNTNUMBER:user/lcerezo"
如果您使用安全令牌服务,您将无法获取用户详细信息以获取账号。您可以改为使用该角色。下面是示例代码。
AmazonIdentityManagementClient iamClient = new AmazonIdentityManagementClient();
GetRoleRequest getRoleRequest = new GetRoleRequest();
getRoleRequest.setRoleName("roleName");
String accountNumber = iamClient.getRole(getRoleRequest).getRole().getArn().split(":")[4];
使用AWS v2.0 Java SDK,您可以使用software.aamazon.awssdk.services.st.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)
AmazonIdentityManagementClient iamClient=new AmazonIdedentityManagementClient();
字符串accountNumber=iamClient.getUser().getUser).getArn().split(":")[4]);