#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()
. Он только дает вам идентификатор, связанный с учетными данными, которые вы неявно использовали при выполнении вызова.