2016-04-19 3 views
10

У меня есть AWS_ACCESS_KEY_ID и AWS_SECRET_KEY. Это активные учетные данные, поэтому они принадлежат активному пользователю, который принадлежит учетной записи AWS. Как, используя Boto3, я могу найти идентификатор этой учетной записи AWS?Получить идентификатор учетной записи AWS от Boto

+0

Некоторые методы, упомянутые здесь https://gist.github.com/gene1wood/6d4974b7503336d642c9 – Montaro

+0

Возможная Дубликат [получение текущей учетной записи пользователя идентификатор в boto3] (HTTPS://stackoverflow.com/questions/33332050/getting-the-current-user-account-id-in-boto3) –

+0

@MarnixKlooster Этот вопрос сначала появляется в Google для поиска «Идентификатор учетной записи Boto». Возможно, отметьте другой вопрос как дубликат. – Zags

ответ

18

AccountID могут быть схвачены из функции get-caller-identity sts. Это возвращает поле «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

Следующая функция поможет вам идентификатор аккаунта для пары ключей:

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] 

Это работает, потому что пользователь ARN имеет формат «Арн: AWS: РМКО :: ACCOUNT_ID: пользователь/USERNAME». Разделение по двоеточиям, идентификатор учетной записи - это 4-й элемент (0-индексный).

2

Что-то, как это будет работать:

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 

Если вы используете EC2 IAM ролей, вы можете опустить все/секретного ключа вещи доступа и код становится просто:

iam = boto3.resource('iam') 
account_id = iam.CurrentUser().arn.split(':')[4] 
Смежные вопросы