我正在使用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
。但这只会让我选择了哪些凭据(例如Credentials
与SharedCredentials profile='default'
)并且不会告诉我背后的用户名是谁。
非常感谢!
答案 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_name
,password_last_used
,create_date
,user_id
,path
和arn
...所以我怀疑这就是你要找的东西。
默认为发出请求的用户
答案 1 :(得分:2)
STS(安全令牌服务)为此提供了一个API:
GetCallerIdentity
返回有关其凭据用于调用API的IAM身份的详细信息。
http://docs.aws.amazon.com/STS/latest/APIReference/API_GetCallerIdentity.html