[英]Query DynamoDB table to fetch top 100 records order by created date
[英]How to fetch a certain number of records from paginated dynamodb table?
我正在尝试处理从get_paginator方法返回的前 50 条记录或第一个扫描页面。
这就是我扫描表格并获得分页结果的方式,我在这些结果上循环并进行一些后期处理。
dynamo_client = boto3.client('dynamodb')
paginator = dynamo_client.get_paginator("scan")
for page in paginator.paginate(TableName=table_name):
yield from page["Items"]
是否可以只处理第一个扫描页并明确提及第二页? 总结一下,我正在尝试查询第一页结果 lambda function 和第二页专门使用另一个 lambda function。我怎样才能实现这一目标?
您需要以某种方式将NextToken
传递给您的其他 Lambda。
在paginator
响应中,有一个NextToken
属性。 然后,您可以在paginator.paginate()
调用的配置中传递它。
有点做作的例子:
dynamo_client = boto3.client('dynamodb')
paginator = dynamo_client.get_paginator("scan")
token = ""
# Grab the first page
for page in paginator.paginate(TableName=table_name):
# do some work
dowork(page["Items"])
# grab the token
token = page["NextToken"]
# stop iterating after the first page for some reason
break
# This will continue to iterator where the last iterator left off
for page in paginator.paginate(TableName=table_name, PaginationConfig= 'StartingToken': token }):
# do some work
dowork(page["Items"])
假设您尝试使用 Lambda 迭代表中的所有 DynamoDB 项目。 你可以让迭代器运行到一个时间限制,中断,然后排队下一个 Lambda function,传递NextToken
让它恢复。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.