Scan命令会扫描全表并最大返回1MB,scan操作不适合用于大表。我们的数据量很小,先查看ProductCatalog表:
aws dynamodb scan --table-name ProductCatalog
返回数据如下:
{
    "Items": [
        {
            "Title": {
                "S": "18-Bike-204"
            },
            "Price": {
                "N": "500"
            },
            "Brand": {
                "S": "Brand-Company C"
            },
            "Description": {
                "S": "205 Description"
            },
            "Color": {
                "L": [
                    {
                        "S": "Red"
                    },
                    {
                        "S": "Black"
                    }
                ]
            },
            "ProductCategory": {
                "S": "Bicycle"
            },
            "Id": {
                "N": "205"
            },
            "BicycleType": {
                "S": "Hybrid"
            }
        },
        {
            "Title": {
                "S": "19-Bike-203"
            },
            "Price": {
                "N": "300"
            },
            "Brand": {
                "S":
              ....
如果我们只想读取一条记录,可以使用GetItem API ,执行的时候需要指定Primary Key:
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"101"}}'
–key:主键值,采用JSON格式
Id:主键名称
N:表示数字类型(Number)
“101”:具体的值

默认情况下从DynamoDB中读数据使用最终一致性因为可以相比强一致性省一半的价格
get-item的参数如下:
--consistent-read : 使用强一致性读--projection-expression : 只返回特定列--return-consume-capacity : 返回结果里告诉这次读消耗了多少RCU现在使用这三个参数重新请求
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"101"}}' \
    --consistent-read \
    --projection-expression "ProductCategory, Price, Title" \
    --return-consumed-capacity TOTAL
返回结果:

这个请求消耗了1个RCU,因为条目小于4K,如果把 --consistent-read参数去掉,我们看到最终一致性 读会消耗一半的capacity:
aws dynamodb get-item \
    --table-name ProductCatalog \
    --key '{"Id":{"N":"101"}}' \
    --projection-expression "ProductCategory, Price, Title" \
    --return-consumed-capacity TOTAL
输出如下:
