2015-12-14 23 views
8

Sto usando il Ruby SDK (V2), ma suppongo che la mia domanda sia più generale dell'implementazione specifica in quanto non sono riuscito a trovare una risposta in nessuno degli SDK.Da AWS SDK, come si ottiene il nome utente attualmente connesso (o l'utente IAM)?

Come si ottiene il nome utente (e/o l'utente IAM) a cui appartiene attualmente la sessione?

Lascio che l'SDK esegua il comportamento predefinito per la scelta delle credenziali (vna ENV, profilo "predefinito" o altro se specificato e quindi ruolo macchina). Quindi inizializzo il mio client ed eseguo i comandi. Mi piacerebbe sapere "chi sta eseguendo i comandi". Mi aspetto di ottenere il nome utente AWS e se le credenziali scelte erano di un utente IAM, quindi anche questo nome utente.

Qualche idea? La cosa migliore che ho ottenuto finora è che dopo aver creato un oggetto Client, posso richiedere il suo effettivo config e ottenere Credentials. Ma questo mi dà solo quali credenziali sono state scelte (ad esempio SharedCredentials profile='default' rispetto a Credentials key=.. secret=..) e non mi dice chi è il nome utente dietro di esso.

Grazie mille!

risposta

2

Fai attenzione alla terminologia: le interazioni con le API di AWS sono su tutto il protocollo HTTP, senza sessione e senza stato, quindi non esiste un concetto dell'utente attualmente "connesso" o di una "sessione".

Tuttavia, per un determinato set di credenziali, è possibile recuperare gli attributi dell'utente "corrente" (l'utente di cui si stanno utilizzando le credenziali) da Aws::IAM::CurrentUser.

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

Ci scusiamo per la mancanza di un esempio - io sono familiarità con Ruby in generale - ma pensa che questa basa su ciò che sapevo potrebbe essere fatto con le API di query dirette e client a riga di comando con aws iam get-user. Gli attributi disponibili sono tutti uguali: user_name, password_last_used, create_date, user_id, path e arn ... quindi sospetto che questo sia quello che stai cercando.

Dalle Query API docs:

il valore predefinito è l'utente che effettua la richiesta

+1

Accetto la terminologia. Anzi, intendevo l'utente di cui sto utilizzando le credenziali. Grazie a questo, mi dà quasi tutto. Devo solo aggiungere che se l'utente non dispone dell'autorizzazione IAM: GetUser, otterremo un'eccezione, ma sorprendentemente, il messaggio di eccezione contiene l'ARN dell'utente richiedente. Brutto, ma funziona. Ecco una discussione che fornisce un esempio di codice per analizzarlo: https://forums.aws.amazon.com/thread.jspa?threadID=108012 –