gpt4 book ai didi

python - 如何在 AWS API 调用中使用 "NextToken"

转载 作者:太空狗 更新时间:2023-10-30 00:49:34 24 4
gpt4 key购买 nike

我遇到了一个小问题,我真的很难理解它是如何工作的。我有一个我正在编写的工具,它基本上执行一个描述组织来收集我们 AWS 组织中的所有帐户。根据 here 文档,它说它以帐户的 json 响应,在我的例子中,这将是成百上千个帐户。所以我写了一些非常简单的代码来将角色切换到我们的主帐户并进行调用:

import boto3
import uuid
import pprint

iam_client = boto3.client('iam')
sts_client = boto3.client('sts')
org_client = boto3.client('organizations')


print("Starting in account: %s" % sts_client.get_caller_identity().get('Account'))

assumedRoleObject = sts_client.assume_role(
RoleArn="arn:aws:iam::123456xxx:role/MsCrossAccountAccessRole",
RoleSessionName="MasterPayer"
)

credentials = assumedRoleObject['Credentials']

org_client = boto3.client(
'organizations',
aws_access_key_id = credentials['AccessKeyId'],
aws_secret_access_key = credentials['SecretAccessKey'],
aws_session_token = credentials['SessionToken'],
)

getListAccounts = org_client.list_accounts(
NextToken='string'
)

但是当我执行代码时,出现以下错误:

“botocore.errorfactory.InvalidInputException:调用 ListAccounts 操作时发生错误 (InvalidInputException):您为 nextToken 指定的值无效。您必须从对先前调用 API 的响应中获取值。”

我真的不知道那是什么意思。我看到了 NextToken,我可以在 AWS 文档中找到很多对它的引用,但我不知道如何实际使用它。比如,我需要用它做什么?

最佳答案

不要从字面上理解 boto3 示例(它们不是实际示例)。这是它的工作原理:

1) 第一次调用 list_accounts 时不需要 NextToken,所以很简单

getListAccounts = org_client.list_accounts()

2) 这将返回一个大致如下所示的 JSON 响应(这是保存在您的 getListAccounts 变量中的内容):

{
"Accounts": [<lots of accounts information>],
"NextToken": <some token>
}

请注意,NextToken 只有在您的帐户多于一个 list_accounts 调用可以返回的情况下才会返回,通常是 100( boto3 文档没有说明默认情况下有多少)。如果一次调用返回所有帐户,则响应中没有 NextToken!

3) 因此,当且仅当不是所有帐户都在第一次调用中返回时,您现在想要返回更多帐户,您将必须使用 NextToken 才能执行此操作:

getListAccountsMore = org_client.list_accounts(NextToken=getListAccounts['NextToken'])

4) 重复直到响应中不再返回NextToken(然后您检索了所有帐户)。

这就是 AWS 开发工具包在许多情况下处理分页的方式。您还将在其他服务客户端中看到 NextToken 的用法。

关于python - 如何在 AWS API 调用中使用 "NextToken",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52068066/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com