如何使用javaapi获取AWS帐户详细信息?不适用于IAM用户



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

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

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

您可以看到GetUserResult。这是由getUser()返回的。CCD_ 3有一种得到CCD_ 4的方法。此User具有获取所需信息的所有字段。

查看get_user(iam-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]);

相关内容

  • 没有找到相关文章

最新更新