まくろぐ

DynamoDB をコマンドライン (CLI) で操作する

更新:
作成:

テーブルを作成する (dynamodb create-table)

aws dynamodb create-table

次の例では、DynamoDB に MusicCollection というテーブルを作成します。 Artist というハッシュキー (KeyType=HASH) と、Artist というソートキー (KeyType=RANGE) を定義しています。

テーブル生成(ハッシュキー + ソートキー)
$ aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S AttributeName=SongTitle,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH AttributeName=SongTitle,KeyType=RANGE \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

ハッシュキーのみで良い場合(ソートキーなし)は、次のような感じになります。

テーブル生成(ハッシュキーのみ)
$ aws dynamodb create-table \
    --table-name MusicCollection \
    --attribute-definitions AttributeName=Artist,AttributeType=S \
    --key-schema AttributeName=Artist,KeyType=HASH \
    --provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1

テーブル定義を YAML ファイルや JSON ファイルに記述しておいて、それを読み込むこともできます。

テーブル定義をJSONファイルで指定する
$ aws dynamodb create-table --cli-input-json file://{JSONファイルの相対パス}

テーブルの詳細情報を取得する (dynamodb describe-table)

aws dynamodb describe-table

次の例では、Games テーブルの情報表示しています。 DynamoDB は基本的にスキーマレスなので、主にプライマリキー(Partition キー (HASH) と Sort キー (RANGE))の情報だけ表示されます。

実行例(YAML形式)
$ aws dynamodb describe-table --table-name Games --output yaml

Table:
  AttributeDefinitions:
  - AttributeName: Hardware
    AttributeType: S
  - AttributeName: GameId
    AttributeType: S
  CreationDateTime: '2021-07-21T16:54:17.255000+09:00'
  ItemCount: 2
  KeySchema:
  - AttributeName: Hardware
    KeyType: HASH
  - AttributeName: GameId
    KeyType: RANGE
  ProvisionedThroughput:
    LastDecreaseDateTime: '1970-01-01T09:00:00+09:00'
    LastIncreaseDateTime: '1970-01-01T09:00:00+09:00'
    NumberOfDecreasesToday: 0
    ReadCapacityUnits: 1
    WriteCapacityUnits: 1
  TableArn: arn:aws:dynamodb:ddblocal:000000000000:table/Games
  TableName: Games
  TableSizeBytes: 134
  TableStatus: ACTIVE

テーブルにアイテムを追加する (dynamodb put-item)

aws dynamodb put-item

次の例では、MusicCollection テーブルにアイテム(項目)を 1 つ追加します。

実行例
$ aws dynamodb put-item \
    --table-name MusicCollection \
    --item '{
        "Artist": {"S": "No One You Know"},
        "SongTitle": {"S": "Call Me Today"} ,
        "AlbumTitle": {"S": "Somewhat Famous"}
      }' \
    --return-consumed-capacity TOTAL

{
    "ConsumedCapacity": {
        "CapacityUnits": 1.0,
        "TableName": "MusicCollection"
    }
}

テーブルから全てのアイテムを読み取る (dyanmodb scan)

aws dynamodb scan

次の例では、Games テーブル内のすべてアイテムを取得しています。

実行例(YAML形式)
$ aws dynamodb scan --table-name Games --output yaml

ConsumedCapacity: null
Count: 2
Items:
- GameId:
    S: 1990-SuperMarioWorld
  Hardware:
    S: SNES
  Maker:
    S: Nintendo
  Title:
    S: Super Mario World
- GameId:
    S: 1983-DonkeyKong
  Genre:
    S: ACT
  Hardware:
    S: NES
  Players:
    N: '2'
  Title:
    S: Donkey Kong
ScannedCount: 2

テーブルから 1 つのアイテムを読み取る (dynamodb get-item)

aws dynamodb get-item

次の例では、my-table という名前の DynamoDB テーブルからアイテムを取得します。

実行例
$ aws dynamodb get-item --table-name my-table --key '{"id": {"N":"1"}}'

{
    "Item": {
        "name": {
            "S": "John"
        },
        "id": {
            "N": "1"
        }
    }
}

関連記事

まくろぐ
サイトマップまくへのメッセージ