【问题标题】:AWS IAM Python script - Add new User to existing GroupAWS IAM Python 脚本 - 将新用户添加到现有组
【发布时间】:2019-06-20 23:59:49
【问题描述】:

上下文:我有一个 Python 脚本,可以创建用户、决定是否以编程方式访问、列出当前用户组。 我的问题是我希望将新用户添加到现有的显示组之一。

我尝试了下面的代码,但得到以下错误:

python ec2-play.py
Please enter your e-mail address: 1@1.com
Do you require programmatic access?(y/n): n
Console access only
[...list of Groups...]
1: admin-short-term
2: aws-admin
3: aws-admin-mfa
4: aws-training
Please pick a Group number: 4
You selected option 4: arn:aws:iam::xxxxxxxxxxxx:group/aws-training
Traceback (most recent call last):
  File "ec2-play.py", line 41, in <module>
    final = grp.add_user_to_group(GroupName=g, UserName=mail)
  File "/opt/axe/local/python/local/lib/python2.7/site-packages/botocore/client.py", line 314, in _api_call
    return self._make_api_call(operation_name, kwargs)
  File "/opt/axe/local/python/local/lib/python2.7/site-packages/botocore/client.py", line 612, in _make_api_call
    raise error_class(parsed_response, operation_name)
botocore.errorfactory.NoSuchEntityException: An error occurred (NoSuchEntity) when calling the AddUserToGroup operation: The group with name r cannot be found.

这是产生错误输出的代码:

import boto3

iam = boto3.resource('iam')
iam_keys = boto3.resource('iam')
group_list = boto3.client('iam')
attach_group = boto3.client('iam')
grp = boto3.client("iam")

mail = raw_input("Please enter your e-mail address: ")
response = iam.create_user(UserName=mail)

prog = raw_input("Do you require programmatic access?(y/n): ") 
if prog == "y":
        iam_keys.create_access_key(UserName=mail)
        print("Make sure awscli is installed on your machine")
elif prog == "n":
        print("Console access only")

list = group_list.list_groups()
groups = list['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 option %d: %s" % (option, arn))

var = "%s" % (arn)
var.split(":group/")[1]

g = var[1]

final = grp.add_user_to_group(GroupName=g, UserName=mail)

print("User has been added to Group %s you selected" % (g))

预期行为:新用户附加到选定的组。
实际行为:Python 崩溃,提示找不到组 r。

【问题讨论】:

    标签: python-2.7 amazon-web-services aws-sdk boto3


    【解决方案1】:

    您已经计算出选择了哪个组 - 它是 groups 列表中的第 option-1'th 个元素。您可以以正常方式检索其任何属性,例如:

    group = groups[option-1]
    group_name = group["GroupName"]
    group_arn = group["Arn"]
    

    不用计算和使用g,只需使用groups[option-1][“GroupName”] 作为组名(或上面计算的group_name)。

    这里的大局是你需要学习如何调试你的代码。打印出值(例如 var 和 g)并将它们与您期望看到的值进行比较是一种方法。源代码级调试器是另一种方式。

    【讨论】:

      猜你喜欢
      • 2018-09-08
      • 2020-07-21
      • 2019-11-02
      • 1970-01-01
      • 2019-08-22
      • 2021-11-30
      • 2022-12-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多