Вот пример Python 2, как вывести список групп IAM, позволить пользователю выбрать одну из них, а затем использовать ARN, соответствующий выбранной группе IAM:
import boto3
iam = boto3.client('iam')
rsp = iam.list_groups()
groups = rsp['Groups']
print(groups)
index = 1
for group in groups:
print("%d: %s" % (index, group["GroupName"]))
index += 1
option = int(input("Please pick a group number: "))
arn = groups[option-1]["Arn"]
print("You selected group %d: %s" % (option, arn))
Или в Python3:
import boto3
iam = boto3.client('iam')
rsp = iam.list_groups()
groups = rsp['Groups']
index = 1
for group in groups:
print(f'{index}: {group["GroupName"]}')
index += 1
option = int(input("Please pick a group number: "))
arn = groups[option-1]["Arn"]
print(f'You selected group {option}: {arn}')
Это приведет к чему-то вроде этого:
1: admins
2: devops
3: programmers
Please pick a group number: 2
You selected option 2: arn:aws:iam::123456781234:group/devops
Примечание: вам нужно будет добавить проверку ввода, например, если пользователь вводит -3 или букву А.
Если, как я подозреваю, вам действительно нужно, чтобы пользователь выбрал политику по имени, чтобы вы могли получить ARN для этой политики (для присоединения к группе IAM), то вы можете сделать это следующим образом:
rsp = iam.list_policies(Scope='Local', OnlyAttached=False)
policies = rsp['Policies']
index = 1
for policy in policies:
print("%d: %s" % (index, policy["PolicyName"]))
index += 1
option = int(input("Please pick a policy number: "))
arn = policies[option-1]["Arn"]
print("You selected policy %d: %s" % (option, arn))