从 Java 中的 Amazon 访问密钥获取用户名



有没有办法将用户名附加到您用于通过 Java 访问 AWS 的凭证的访问密钥上? 我希望能够获取在 IAM Users 部分中定义的用户名,以便我可以设置特定于用户的存储桶/文件夹,然后根据访问密钥的用户名动态将脚本指向它们(以便我可以在将来更改访问密钥,如有必要,无需更改存储桶/文件夹名称)。

我再次回答我自己的问题...一旦我问别人怎么做,我似乎总是更擅长自己回答......

无论如何,您将找到下面的代码,该代码将允许您提取当前使用的访问凭据的用户名:

import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.PropertiesCredentials;
import com.amazonaws.services.identitymanagement.AmazonIdentityManagementClient;
public class test {
    private static AmazonIdentityManagementClient iamServ;
    private static void init() throws Exception {
        AWSCredentials credentials = new PropertiesCredentials(test.class.getResourceAsStream("AwsCredentials.properties"));        
        iamServ = new AmazonIdentityManagementClient(credentials);
    }
    public static void main(String[] args) throws Exception {
        init();
        String theUser = iamServ.getUser().toString().substring(27); 
        int userNameEnd = theUser.indexOf(",");
        String userName = theUser.substring(0, userNameEnd);
        System.out.println(userName);
    }
}

执行很粗糙,但它有效;或者至少在我尝试过的情况下。 如果您只使用 System.out.println(iamServ.getUser()); ,用户名将显示如下所示:

{User: {Path: /, UserName: UserName, UserId: xxxxxxxxxxxxxxxxxxxxxx, Arn: arn:aws:iam::xxxxxxxxxxx:user/UserName, CreateDate: Day Mon DayNum hr:min:sec Tmz Year, }, }

否则,显示的代码将返回用户名,而不是字符串中所有额外的"垃圾"。 无论如何,我希望这可以帮助其他可能正在寻找获取当前访问ID用户名的解决方案的人。 如果有人知道另一种更好的方法,请在评论中告诉我们。

我现在找到了一种更好的方法,可以从 Java 中的 AWS 访问凭证中获取用户名。 前面提到的答案是一个简单的解决方法,因为当时没有提供其他解决方案。 这种新方法实际上是适用于 Java 的 AWS 开发工具包的一部分(在原始帖子发布时可能还没有)。

无论如何,要获取用户名,只需使用以下行: iamServ.getUser().getUser().getUserName();

这将返回一个可以存储到变量中的字符串。 我不确定他们为什么要设置它,所以你必须.getUser()两次打电话,但他们做到了。第二个.getUser()后可以使用的其他方法包括:.getUserID().getArn().getPath().getCreateDate()

注意:我保留旧答案,因为它仍然有效,但现在这是更好的解决方案。

相关内容

  • 没有找到相关文章