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
10
A
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]
Einige hier genannten Methoden https://gist.github.com/gene1wood/6d4974b7503336d642c9 – Montaro
Mögliches Duplikat [immer die aktuelle Benutzer-Account-ID in boto3] (https://stackoverflow.com/questions/33332050/getting-the-current-user-account-id-in-boto3) –
@MarnixKlooster Diese Frage kommt zuerst bei Google für die Suche nach "Boto Account ID". Vielleicht markieren Sie die andere Frage als Duplikat. – Zags