繁体   English   中英

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

[英]How to get AWS account details using java api? Not for IAM user

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

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

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

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

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

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

如果您使用的是 Secured Token Service,您将无法获取用户详细信息以获取帐号。 您可以改为使用该角色。 下面是示例代码。

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

AmazonIdentityManagementClient iamClient = new AmazonIdentityManagementClient();

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

使用 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM