繁体   English   中英

如何从分页的dynamodb表中获取一定数量的记录?

[英]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让它恢复。

您可以通过API 文档了解更多信息,该文档详细说明了它的作用,或者在GitHub上查看更多示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM