从AWS SDK,如何获取当前登录的用户名(或IAM用户)?

时间:2015-12-14 10:34:12

标签: amazon-web-services aws-sdk amazon-iam

我正在使用Ruby SDK(V2),但我想我的问题比具体实现更通用,因为我在任何SDK中找不到答案。

如何获取我的会话当前所属的用户名(和/或IAM用户)?

我让SDK运行其默认行为来选择凭据(ENV vars,然后是'default'配置文件或其他如果指定,然后选择机器角色)。然后我初始化我的客户端并运行命令。我想知道'谁在运行命令'。我希望获得AWS用户名,如果所选凭据属于其中的IAM用户,那么此用户名也是如此。

有什么想法吗? 到目前为止我得到的最好的是,在我构建了一个public async Task RunAsync() { var hotel = new Hotel(); await Task.WhenAll(SetRooms(hotel), SetStars(hotel)); Debug.Assert(hotel.NumberOfRooms.Equals(200)); Debug.Assert(hotel.StarRating.Equals(5)); } 对象之后,我可以查询它的实际Client并得到config。但这只会让我选择了哪些凭据(例如CredentialsSharedCredentials profile='default')并且不会告诉我背后的用户名是谁。

非常感谢!

2 个答案:

答案 0 :(得分:5)

小心你的术语 - 与AWS API的交互遍及HTTP,并且是无会话和无状态的,因此实际上没有当前“登录”用户或“会话”的概念。

但是,对于一组给定的凭据,您可以从Aws::IAM::CurrentUser获取“当前”用户(您正在使用其凭据的用户)的属性。

http://docs.aws.amazon.com/sdkforruby/api/Aws/IAM/CurrentUser.html

缺乏示例的道歉 - 我一般不熟悉Ruby - 但是基于我所知道的直接查询API和aws iam get-user命令行客户端可以做到这一点。可用属性完全相同:user_namepassword_last_usedcreate_dateuser_idpatharn ...所以我怀疑这就是你要找的东西。

来自Query API docs

  

默认为发出请求的用户

答案 1 :(得分:2)

STS(安全令牌服务)为此提供了一个API:

GetCallerIdentity返回有关其凭据用于调用API的IAM身份的详细信息。

http://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html