【发布时间】:2020-09-16 00:16:58
【问题描述】:
我正在尝试使用 boto3 获取组织下所有组织 ID 的列表。现在的结构是这样的-
Root
|
|
ou1-----OU2-----OU3
| | |
ou4 ou5 ou6
|
ou7
|
ou8
这个结构将来可能会改变,可能会添加更多的 ORG 单元,其中一些可能会被删除,所以我想让函数动态化。我希望我可以提供 Root id,之后它应该能够找出它下面的所有 org id。但这似乎有点复杂,因为 boto3 中没有列出根目录下所有 ORG id 的现有 API。如果有人可以提供指导/建议,我将不胜感激
但不知道如何互连它们以便它可以找到所有 org id,下面是我编写的代码,但这只会获取第二层子级,即直到 org4,5 和 6
org = session.client("organizations")
response = org.list_roots()
for PolicyTypes in response["Roots"]:
parent_id = PolicyTypes["Id"]
OUlist = []
NextToken = False
while NextToken is not None:
if not NextToken:
response_iterator = org.list_organizational_units_for_parent(ParentId=parent_id, MaxResults=20)
else:
response_iterator = org.list_organizational_units_for_parent(ParentId=parent_id, MaxResults=20,
NextToken=NextToken)
OUlist = get_OUlist(OUlist, response_iterator)
try:
NextToken = response_iterator['NextToken']
except KeyError:
break
get_child_ou(org, OUlist)
def get_child_ou(org, OUlist):
for ou in OUlist:
NextToken = False
while NextToken is not None:
if not NextToken:
response_iterator = org.list_children(ParentId=ou, ChildType='ORGANIZATIONAL_UNIT', MaxResults=20)
else:
response_iterator = org.list_children(ParentId=ou, ChildType='ORGANIZATIONAL_UNIT', NextToken=NextToken,
MaxResults=20)
try:
NextToken = response_iterator['NextToken']
except KeyError:
break
for orgid in response_iterator["Children"]:
OUlist.append(orgid["Id"])
return OUlist
【问题讨论】:
-
你有组织主账户的信用吗?
-
@helloV 是的,我有
-
然后使用 list_accounts()。 boto3.amazonaws.com/v1/documentation/api/latest/reference/…
-
list_accounts() 不返回 ORG ID
标签: python amazon-web-services boto3