我遇到了一个小问题,我真的很难理解它的工作原理。我有一个正在编写的工具,该工具基本上进行描述组织来收集我们AWS组织中的所有账户。根据这里的文档,它说它以帐户的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'
)
Run Code Online (Sandbox Code Playgroud)
但是当我执行代码时,出现以下错误:
“ botocore.errorfactory.InvalidInputException:调用ListAccounts操作时发生错误(InvalidInputException):您为nextToken指定了一个无效值。您必须从响应中获取该值,以响应上一次对API的调用。”
我真的很困惑那是什么意思。我看到了NextToken,并且可以在AWS文档中找到许多对它的引用,但是我不知道如何实际使用它。就像,我需要做什么?
我正在修改我的第一步功能,作为一个新手,我正在努力使这项工作正常进行。AWS 上的文档很有帮助,但缺少我试图理解的示例。我在这里的网站上发现了几个类似的问题,但他们也没有真正回答我的问题。
我有一个非常简单的测试 Step Function。我有一个小的 Lambda 函数,它从 DynamoDB 中的请求中踢出带有“计数”的单行 JSON:
def lambda_handler(event, context):
"""lambda_handler
Keyword arguments:
event -- dict -- A dict of parameters to be validated.
context --
Return:
json object with the hubID from DynamoDB of the new hub.
Exceptions:
None
"""
# Prep the Boto3 resources needed
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('TransitHubs')
# By default we assume there are no new hubs
newhub = { 'Count' : 0 }
# Query the DynamoDB to see if …Run Code Online (Sandbox Code Playgroud)