DynamoDBで全件取得

表題の通り。

■ 環境

  • AWS DynamoDB
  • awscli
  • macOS High Sierra

■ scan

`scan`サブコマンドで全件取得することができる。

$ aws dynamodb scan --table-name example
  :
    ],
    "Count": 1200,
    "ScannedCount": 1200,
    "ConsumedCapacity": null
}
$

件数が多いともちろん全件取得すると出力も大きくなるので必要に絞ると良い。

$ aws dynamodb scan --table-name example --max-items 100
  :
    ],
    "Count": 1200,
    "ScannedCount": 1200,
    "ConsumedCapacity": null,
    "NextToken": "eyJFeGNsdXNpdmVTdGFydEtleSI6IG51bGwsICJib3RvX3RydW5jYXRlX2Ftb3VudCI6IDEwMXXX"
}
$

–max-items“を指定してみたところ、指定した100件が得られ、さらに”NextToken“が表示されていた。これを使えばpaging的に取得できるようだ。下記で試してみた。

$ aws dynamodb scan --table-name example --max-items 100 --starting-token 'eyJFeGNsdXNpdmVTdGFydEtleSI6IG51bGwsICJib3RvX3RydW5jYXRlX2Ftb3VudCI6IDEwMXXX'
  :
    ],
    "Count": 0,
    "ScannedCount": 0,
    "ConsumedCapacity": null,
    "NextToken": "eyJFeGNsdXNpdmVTdGFydEtleSI6IG51bGwsICJib3RvX3RydW5jYXRlX2Ftb3VudCI6IDIwMXXX"
}
$

内容を確認して行くと、ちょうど後続の100件が取得できたようである。”NextToken“の値が非常に似通っているが、よくよく見てみると異なっていることがわかる。

以上。

■ 関連

tableの件数を知りたい@DynamoDB

特定のAttributionのみ取得