在aws organization中,使用分页列出所有账户
in aws orgazination, use paginate to list all accounts
这应该是关于在 boto3 中使用 paginate
的一般性问题。
在这种情况下,当我在AWS Orgazinations下得到很多账户(100+)时,直接使用list_account()
而不用with NextToken
,你无法列出所有账户。
response = client.list_accounts()
我知道正确的方法是添加 NextToken
和 MaxResults
,但这需要更多编码。
response = client.list_accounts(
NextToken='string',
MaxResults=123
)
所以我改用另一种方法,称为 paginate
,参考 class Organizations.Paginator.ListAccounts。它报告的帐户多于 list_accounts()
,但仍无法列出所有帐户。
请求语法与 list_accounts()
中的 MaxItems
和 PageSize
相似
response_iterator = paginator.paginate(
PaginationConfig={
'MaxItems': 123,
'PageSize': 123,
'StartingToken': 'string'
}
)
我有两个问题:
如果paginate
不能列出所有账户,创建它有什么意义。
如何列出所有带有 painate
的帐户,有没有给我的示例代码?
将不胜感激。
所以我错了,也许一开始就错了。
分页器会自动处理循环。我无法 运行 对组织 list_accounts()
进行测试,因为我没有那么多帐户可以 运行 进行测试,但我对 s3 存储桶对象进行了测试。
aws cli 获取 s3 对象
$ aws s3api list-objects --bucket bucket-demo |jq '.Contents|length'
8696
所以我可以确认这个桶中有 8000 多个对象。
通过 python 带有分页器的 sdk 获取 s3 对象
>>> import boto3
>>> client = boto3.client('s3')
>>> paginator = client.get_paginator('list_objects')
>>> response_iterator = paginator.paginate(Bucket="bucket-demo")
>>> for i in response_iterator:
... print(len(i['Contents']))
...
1000
1000
1000
1000
1000
1000
1000
1000
696
证明分页器自动执行循环。
说明我们为什么需要分页器的问题
>>> import boto3
>>> client = boto3.client('s3')
>>> response = client.list_objects(Bucket="bucket-demo")
>>> len(response['Contents'])
1000
所以paginator可以大大简化你的代码,避免用正常的方式开发自己的循环。
这应该是关于在 boto3 中使用 paginate
的一般性问题。
在这种情况下,当我在AWS Orgazinations下得到很多账户(100+)时,直接使用list_account()
而不用with NextToken
,你无法列出所有账户。
response = client.list_accounts()
我知道正确的方法是添加 NextToken
和 MaxResults
,但这需要更多编码。
response = client.list_accounts(
NextToken='string',
MaxResults=123
)
所以我改用另一种方法,称为 paginate
,参考 class Organizations.Paginator.ListAccounts。它报告的帐户多于 list_accounts()
,但仍无法列出所有帐户。
请求语法与 list_accounts()
MaxItems
和 PageSize
相似
response_iterator = paginator.paginate(
PaginationConfig={
'MaxItems': 123,
'PageSize': 123,
'StartingToken': 'string'
}
)
我有两个问题:
如果
paginate
不能列出所有账户,创建它有什么意义。如何列出所有带有
painate
的帐户,有没有给我的示例代码?
将不胜感激。
所以我错了,也许一开始就错了。
分页器会自动处理循环。我无法 运行 对组织 list_accounts()
进行测试,因为我没有那么多帐户可以 运行 进行测试,但我对 s3 存储桶对象进行了测试。
aws cli 获取 s3 对象
$ aws s3api list-objects --bucket bucket-demo |jq '.Contents|length'
8696
所以我可以确认这个桶中有 8000 多个对象。
通过 python 带有分页器的 sdk 获取 s3 对象
>>> import boto3
>>> client = boto3.client('s3')
>>> paginator = client.get_paginator('list_objects')
>>> response_iterator = paginator.paginate(Bucket="bucket-demo")
>>> for i in response_iterator:
... print(len(i['Contents']))
...
1000
1000
1000
1000
1000
1000
1000
1000
696
证明分页器自动执行循环。
说明我们为什么需要分页器的问题
>>> import boto3
>>> client = boto3.client('s3')
>>> response = client.list_objects(Bucket="bucket-demo")
>>> len(response['Contents'])
1000
所以paginator可以大大简化你的代码,避免用正常的方式开发自己的循环。