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

From AWS SDK, how to I get the current logged in username (or IAM user)?

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

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

我让 SDK 运行 选择凭据的默认行为(ENV 变量,然后是 'default' 配置文件或其他(如果已指定),然后是机器角色)。然后我初始化我的客户端和 运行 命令。我想知道 'who is running the commands'。我希望获得 AWS 用户名,如果选择的凭证是其中的 IAM 用户,那么这个用户名也是如此。

有什么想法吗? 到目前为止我得到的最好的结果是在我构建了一个 Client 对象之后,我可以查询它的实际 config 并得到 Credentials。但这只告诉我选择了哪些凭据(即 SharedCredentials profile='default'Credentials key=.. secret=..),并没有告诉我它背后的用户名是谁。

非常感谢!

注意您的术语——与 AWS API 的交互全部通过 HTTP,并且是无会话和无状态的,因此实际上没有当前 "logged in" 用户或 "session."

但是,对于一组给定的凭据,您可以从 Aws::IAM::CurrentUser.

获取 "current" 用户(您正在使用其凭据的用户)的属性

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

it defaults to the user making the request

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

GetCallerIdentity Returns 有关其凭据用于调用 API.

的 IAM 身份的详细信息

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