Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the UserID for an IAM user programatically using Boto3

I am trying to get the UserId after the creation of user, suing "account_id = boto3.client('sts').get_caller_identity().get('some_other_user')", but for output I get none, what could be the reason. I am very new to boto and python so it might be something very small.

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 Answers

The get_caller_identity() function returns a dict containing:

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

So, to use this:

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

Or you can use response.get('UserId') to get the user ID. The key to the user ID in the response dictionary is always the literal UserId. It doesn't vary (you cannot call response.get('james'), for example).

You cannot retrieve the identity of an arbitrary IAM principal using sts.get_caller_identity(). It only gives you the identity associated with the credentials that you implicitly used when making the call.

like image 87
jarmod Avatar answered Dec 06 '25 06:12

jarmod