[英]How do I create an IAM Principal for an account using AWS CDK for Java?
[英]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.