java - 从 Java 中的 Amazon Access Key 获取用户名

标签 java amazon-iam access-keys

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

最佳答案

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

无论如何,您会发现下面的代码允许您提取当前使用的访问凭据的用户名:

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, }, }

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

关于java - 从 Java 中的 Amazon Access Key 获取用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13595541/

相关文章:

java - 如何使 ImageView 缩放以为其下方的控件留出空间?

java - Eclipse 未检测到 servlet 库

java - DynamoDB 用户管理的用户组

amazon-web-services - 我们如何使用 aws cli 命令使用新的 json 文件更新已经存在的 iam 策略

java - ArrayList返回类型方法返回ArrayList变量的内存地址还是它的副本?

java - 我的程序不检查 else-if 语句

amazon-web-services - Cloudformation 无法为 IAM 角色设置资源

javascript - 突出显示快捷键上的文本输入

javascript - 当元素隐藏时如何禁用 `accesskey`?

amazon-web-services - 为什么 AccessKeyId 包含在 s3 预签名 URL 中?