2015-12-14 20 views
8

私はRuby SDK(V2)を使用していますが、どのSDKでも答えが見つからないため、私の質問は具体的な実装よりも一般的です。AWS SDKから、現在ログインしているユーザー名(またはIAMユーザー)を取得する方法は?

セッションが現在所属しているユーザー名(および/またはIAMユーザー)を取得するにはどうすればよいですか?

私はSDKに資格情報(ENV vars、次に 'default'プロファイル、または指定されている場合はその他のもの、次にマシンロール)を選択するためのデフォルト動作を実行させます。それから、クライアントを初期化してコマンドを実行します。私は誰がコマンドを実行しているのか知りたいです。私はAWSユーザー名を取得し、選択した資格情報がIAMユーザーのものであれば、このユーザー名も取得する予定です。

アイデア? 私が今までに得た最高のものは、Clientオブジェクトを作成した後、実際にconfigというクエリを実行し、Credentialsを取得することでした。しかし、それは私の資格情報(すなわち、SharedCredentials profile='default'Credentials key=.. secret=..)が選ばれただけであり、その背後にあるユーザー名は誰に教えてくれません。

多くの感謝!

答えて

2

用語に注意してください - AWS APIとのやりとりはすべてHTTP上で行われ、セッションレスでステートレスなので、実際には現在ログインしているユーザーやセッションという概念はありません。

ただし、特定の資格情報セットでは、「現在の」ユーザー(資格情報を使用しているユーザー)の属性をAws::IAM::CurrentUserから取得できます。例の不足のため

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

謝罪 - 私は一般的にはルビーに不慣れだ - しかし、私はaws iam get-userと直接クエリAPIやコマンドラインクライアントで行うことができる知っていたものに基づいてこれを見つけました。使用可能な属性はすべて同じです:user_name,password_last_usedcreate_dateuser_idpatharn ...これはあなたが探しているものと思われます。 Query API docsから

:要求を行ったユーザーに

それはデフォルト

+1

用語についての同意。確かに私は自分の資格情報を使っているユーザーを意味していました。ありがとう、それは私にほとんどすべてを与える。ユーザーにIAM:GetUser権限がない場合は例外が発生しますが、驚くべきことに、例外メッセージには要求元ユーザーのARNが含まれています。醜い、しかし働く。ここに、それを解析するコード例を示すスレッドがあります:https://forums.aws.amazon.com/thread.jspa?threadID=108012 –