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

Zac*_*she 12 amazon-web-services amazon-iam aws-sdk

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

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

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

有任何想法吗?到目前为止我得到的最好的是,在我构建一个Client对象之后,我可以查询它的实际情况config并得到它Credentials.但这只会给我选择的凭据(即SharedCredentials profile='default'vs. Credentials key=.. secret=..),而不会告诉我背后的用户名是谁.

非常感谢!

Mic*_*bot 6

请注意您的术语-与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_idpath,和arn...所以我怀疑这是你在找什么。

查询API文档

它默认为发出请求的用户


Mic*_*ush 5

STS(Security Token Service)为此提供了一个 API:

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

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