2016-04-19 13 views
10

Ich habe eine AWS_ACCESS_KEY_ID und eine AWS_SECRET_KEY. Dies sind aktive Anmeldeinformationen, die zu einem aktiven Benutzer gehören, der zu einem AWS-Konto gehört. Wie finde ich mithilfe von Boto3 die ID dieses AWS-Kontos?AWS-Konto-ID von Boto abrufen

+0

Einige hier genannten Methoden https://gist.github.com/gene1wood/6d4974b7503336d642c9 – Montaro

+0

Mögliches Duplikat [immer die aktuelle Benutzer-Account-ID in boto3] (https://stackoverflow.com/questions/33332050/getting-the-current-user-account-id-in-boto3) –

+0

@MarnixKlooster Diese Frage kommt zuerst bei Google für die Suche nach "Boto Account ID". Vielleicht markieren Sie die andere Frage als Duplikat. – Zags

Antwort

18

Die AccountID kann aus der Funktion get-caller-identity sts abgerufen werden. Dies gibt ein Feld "Account":

client = boto3.client("sts", aws_access_key_id=access_key, aws_secret_access_key=secret_key) 
account_id = client.get_caller_identity()["Account"] 
1

Die folgende Funktion erhalten Sie die Konto-ID für Ihr Schlüsselpaar erhalten:

import boto3 

def get_aws_account_id(access_key, secret_key): 
    sts = boto3.client(
     "sts", aws_access_key_id=access_key, aws_secret_access_key=secret_key, 
    ) 
    user_arn = sts.get_caller_identity()["Arn"] 
    return user_arn.split(":")[4] 

Dies funktioniert, weil ARN Benutzer des Formats "arn: aws: iam :: ACCOUNT_ID: Benutzer/Benutzername" ist. Aufteilen nach Doppelpunkten, Konto-ID ist das 4. Element (0-indiziert).

2

So etwas wie dies funktioniert:

import boto3 

ACCESS_KEY = 'FOO' 
SECRET_KEY = 'BAR' 

iam = boto3.resource('iam', 
    aws_access_key_id=ACCESS_KEY, 
    aws_secret_access_key=SECRET_KEY, 
) 
account_id = iam.CurrentUser().arn.split(':')[4] 

print account_id 

Wenn Sie EC2 IAM Rollen verwenden, können Sie die gesamte Zugriffs/geheimen Schlüssel Sachen weglassen, und der Code wird einfach:

iam = boto3.resource('iam') 
account_id = iam.CurrentUser().arn.split(':')[4] 
Verwandte Themen