You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在AWS CLI中使用LastEvaluatedKey作为ExclusiveStartKey实现分页

解决DynamoDB Scan分页获取全量数据的正确操作

核心问题分析

你遇到的报错主要源于两个错误:

  1. 参数名误用:你使用了--ExclusiveStartKey(大写开头)或--starting-token,但DynamoDB Scan命令的正确分页参数是**--exclusive-start-key**(全小写+连字符分隔)。
  2. 格式不符合要求:--exclusive-start-key必须传入与返回的LastEvaluatedKey完全一致的JSON结构,不能直接粘贴原始字符串。

手动分页步骤

  1. 首次执行Scan:

    aws dynamodb scan --table-name core_samples
    

    若结果中存在LastEvaluatedKey字段,说明还有未返回的数据,需要继续分页查询。

  2. 后续分页查询:
    将上一次返回的LastEvaluatedKey完整JSON作为--exclusive-start-key的值传入。例如,假设LastEvaluatedKey是:

    {"sample_id": {"S": "sample_001"}}
    

    则执行命令:

    # Bash环境用单引号包裹JSON
    aws dynamodb scan --table-name core_samples --exclusive-start-key '{"sample_id": {"S": "sample_001"}}'
    

    如果是Windows命令提示符,需要转义双引号:

    aws dynamodb scan --table-name core_samples --exclusive-start-key "{\"sample_id\": {\"S\": \"sample_001\"}}"
    
  3. 终止条件:
    当返回结果中不再出现LastEvaluatedKey时,说明已获取全量数据。

自动分页脚本(Bash)

如果数据量较大,手动分页效率低,可以用脚本自动循环处理(需提前安装jq工具解析JSON):

#!/bin/bash
TABLE_NAME="core_samples"
LAST_KEY=""

while true; do
    # 构造扫描命令
    if [ -z "$LAST_KEY" ]; then
        RESPONSE=$(aws dynamodb scan --table-name "$TABLE_NAME" --output json)
    else
        RESPONSE=$(aws dynamodb scan --table-name "$TABLE_NAME" --exclusive-start-key "$LAST_KEY" --output json)
    fi

    # 输出当前页的Items(可根据需求修改输出格式)
    echo "$RESPONSE" | jq '.Items'

    # 获取下一页的起始键
    LAST_KEY=$(echo "$RESPONSE" | jq -r '.LastEvaluatedKey | tostring')
    # 没有LastEvaluatedKey则退出循环
    if [ "$LAST_KEY" == "null" ]; then
        break
    fi
done

更简便的内置分页方式

AWS CLI支持内置分页器,无需手动处理LastEvaluatedKey,直接指定--max-items(总获取条数)和--page-size(每次请求条数)即可:

# 获取全量数据(若总条数超过10000,可调整--max-items的值)
aws dynamodb scan --table-name core_samples --max-items 10000 --page-size 1000

为什么--starting-token不可用

--starting-token是AWS CLI的全局分页参数,但仅适用于采用"通用token分页"的服务接口,DynamoDB Scan使用的是专属的ExclusiveStartKey机制,因此该参数不适用,会触发报错。

内容的提问来源于stack exchange,提问作者Manatsa Mbanje

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 20:40:29