2015-12-14 143 views
8

我正在使用Ruby SDK(V2),但我想我的問題比具體實現更一般,因爲我無法在任何SDK中找到答案。從AWS SDK中,如何獲取當前登錄的用戶名(或IAM用戶)?

如何獲取我的會話當前所屬的用戶名(和/或IAM用戶)?

我讓SDK運行其默認行爲來選擇憑據(ENV變量,然後'默認'配置文件或其他如果指定,然後機器角色)。然後我初始化我的客戶端並運行命令。我想知道'誰在運行命令'。我期望獲得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

道歉缺乏一個例子 - 我不熟悉的紅寶石一般 - 但發現這個依據是什麼,我知道可以與直接查詢API和命令行客戶端aws iam get-user來完成。可用的屬性都是相同的:user_name,password_last_used,create_date,user_id, patharn ...所以我懷疑這是你在找什麼。

Query API docs

則默認爲用戶發出請求

+1

同意術語。的確,我的意思是我使用的憑證的用戶。謝謝你,這讓我幾乎一切。我只是補充說,如果用戶沒有IAM:GetUser權限,我們會得到一個異常,但令人驚訝的是,異常消息包含請求用戶的ARN。醜陋,但工作。下面是一個提供代碼示例來解析它的線程:https://forums.aws.amazon.com/thread.jspa?threadID=108012 –

相關問題