Получить идентификатор пользователя для пользователя IAM программно с помощью Boto3

#python #amazon-web-services #boto3 #amazon-iam

#python #amazon-веб-сервисы #бото3 #amazon-iam

Вопрос:

Я пытаюсь получить идентификатор пользователя после создания пользователя, предъявляя иск «account_id = boto3.client(‘sts’).get_caller_identity().get(‘some_other_user’)», но на выходе я не получаю ничего, в чем может быть причина. Я очень новичок в boto и python, так что это может быть что-то очень маленькое.

 import boto3
import sys
import json
iam = boto3.resource('iam') #resource representing IAM
group = iam.Group('group1') # Name of group
created_user = iam.create_user(
    UserName='some_other_user'
)
account_id = boto3.client('sts').get_caller_identity().get('some_other_user')
print(account_id)    
create_group_response = iam.create_group(GroupName = 'group1')
response = group.add_user(
UserName='some_other_user' #name of user
)
group = iam.Group('group1')
response = group.attach_policy(
    PolicyArn='arn:aws:iam::196687784:policy/boto-test'
)
 

Ответ №1:

Функция get_caller_identity() возвращает dict, содержащий:

 {
    'UserId': 'AIDAEXAMPLEHERE',
    'Account': '123456789012',
    'Arn': 'arn:aws:iam::123456789012:user/james'
}
 

Итак, чтобы использовать это:

 import boto3
sts = boto3.client('sts')
response = sts.get_caller_identity()
print('User ID:', response['UserId'])
 

Или вы можете использовать response.get('UserId') для получения идентификатора пользователя. Ключом к идентификатору пользователя в словаре ответов всегда является литерал UserId . Он не меняется ( response.get('james') например, вы не можете позвонить).

Вы не можете получить идентификатор произвольного участника IAM с помощью sts.get_caller_identity() . Он только дает вам идентификатор, связанный с учетными данными, которые вы неявно использовали при выполнении вызова.