[AWS DA] DynamoDB CLI

Using --project-expression:

aws dynamodb scan --table-name users --projection-expression "user_id,game_id"
{
    "Items": [
        {
            "user_id": {
                "S": "ersaessew"
            },
            "game_id": {
                "N": "123"
            }
        },
        {
            "user_id": {
                "S": "fgxfbgf"
            },
            "game_id": {
                "N": "234"
            }
        }
    ],
    "Count": 2,
    "ScannedCount": 2,
    "ConsumedCapacity": null
}

 

Using --filter-expression:

aws dynamodb scan --table-name users --filter-expression "user_id= :u" --expression-attribute-values '{ ":u": {"S": "ersaessew"}}'

result:

{
    "Items": [
        {
            "user_id": {
                "S": "ersaessew"
            },
            "game_id": {
                "N": "123"
            },
            "game_ts": {
                "S": "2021-05-31T11:34:19.266Z"
            }
        }
    ],
    "Count": 1,
    "ScannedCount": 2,
    "ConsumedCapacity": null
}

 

Using --page-size: 

total we have 2 items, set page size = 1, it performance 2 api calls.

aws dynamodb scan --table-name users --page-size 1

Result:

{
    "Items": [
        {
            "user_id": {
                "S": "ersaessew"
            },
            "game_id": {
                "N": "123"
            },
            "game_ts": {
                "S": "2021-05-31T11:34:19.266Z"
            }
        },
        {
            "user_id": {
                "S": "fgxfbgf"
            },
            "game_id": {
                "N": "234"
            },
            "game_ts": {
                "S": "2021-05-30T11:34:19.266Z"
            }
        }
    ],
    "Count": 2,
    "ScannedCount": 2,
    "ConsumedCapacity": null
}

 

If we want to limit api calls when using page size, we can use: --max-items:

--page-size and --max-items doesn't need to be used at the same time.

--max-items is for limit RCU

--page-size is avoid timeout

aws dynamodb scan --table-name users --page-size 1 --max-items 1
{
    "Items": [
        {
            "user_id": {
                "S": "ersaessew"
            },
            "game_id": {
                "N": "123"
            },
            "game_ts": {
                "S": "2021-05-31T11:34:19.266Z"
            }
        }
    ],
    "Count": 1,
    "ScannedCount": 1,
    "ConsumedCapacity": null,
    "NextToken": "eyJFeGNsdXNpdmVTdGFydEtleSI6IHsidXNlcl9pZCI6IHsiUyI6ICJlcnNhZXNzZXcifSwgImdhbWVfdHMiOiB7IlMiOiAiMjAyMS0wNS0zMVQxMTozNDoxOS4yNjZaIn19fQ=="
}

"NextToekn" is what you should use to get next batch of items.

 

aws dynamodb scan --table-name users --page-size 1 --max-items 1 --starting-token eyJFeGNsdXNpdmVTdGFydEtleSI6IHsidXNlcl9pZCI6IHsiUyI6ICJlcnNhZXNzZXcifSwgImdhbWVfdHMiOiB7IlMiOiAiMjAyMS0wNS0zMVQxMTozNDoxOS4yNjZaIn19fQ==
{
    "Items": [
        {
            "user_id": {
                "S": "fgxfbgf"
            },
            "game_id": {
                "N": "234"
            },
            "game_ts": {
                "S": "2021-05-30T11:34:19.266Z"
            }
        }
    ],
    "Count": 0,
    "ScannedCount": 0,
    "ConsumedCapacity": null,
    "NextToken": "eyJFeGNsdXNpdmVTdGFydEtleSI6IHsidXNlcl9pZCI6IHsiUyI6ICJmZ3hmYmdmIn0sICJnYW1lX3RzIjogeyJTIjogIjIwMjEtMDUtMzBUMTE6MzQ6MTkuMjY2WiJ9fX0="
}

If there is no items anymore:

{
    "Items": [],
    "Count": 0,
    "ScannedCount": 0,
    "ConsumedCapacity": null
}

 

posted @ 2021-05-31 19:50  Zhentiw  阅读(116)  评论(0编辑  收藏  举报