Help us understand the problem. What is going on with this article?

[JAWS-UG CLI] DynamoDB:#1 テーブル作成(ハッシュキーのみ)

More than 1 year has passed since last update.

http://jawsug-cli.doorkeeper.jp/events/18571 でのハンズオン資料です。

AWS CLIを利用して、DynamoDBのテーブル(ハッシュキーのみ)を作成してみます。

  • create-table
  • list-tables
  • describe-table

前提条件

DynamoDBへの権限

  • DynamoDBに対してフル権限があること。

AWS CLIのバージョン

以下のバージョンで動作確認済

  • AWS CLI 1.7.8

テーブルの設計

https://docs.aws.amazon.com/ja_jp/amazondynamodb/latest/developerguide/SampleData.CreateTables.html の「ユースケース 1: 製品カタログ」テーブルを参考にします。

テーブル名: ProductCatalog

プライマリキーのタイプ: ハッシュ

ハッシュ属性の名前と型: 属性名: Id (型: Number)

範囲属性の名前と型: (ハッシュキーモデルなので無し)

プロビジョニングされたスループット:
* 読み込みキャパシティーユニット: 10
* 書き込みキャパシティーユニット: 5

0. 事前作業

変数の確認

変数の確認
cat << ETX

AWS_DEFAULT_REGION: ${AWS_DEFAULT_REGION}

ETX

1. テーブルの作成

1.1. DynamoDBテーブル名の指定

コマンド(例)
      DYNAMO_TABLE_NAME='ProductCatalog'

1.2. ハッシュキーの指定

コマンド(例)
      DYNAMO_HASH_NAME='Id'
      DYNAMO_HASH_TYPE='N'

1.3. プロビジョンドスループットの指定

コマンド(例)
      DYNAMO_READ_UNIT='10'
      DYNAMO_WRITE_UNIT='5'

1.4. テーブルの作成 (create-table)

コマンド
DYNAMO_ATTRIBUTE="AttributeName=${DYNAMO_HASH_NAME},AttributeType=${DYNAMO_HASH_TYPE}"
DYNAMO_KEY_SCHEMA="AttributeName=${DYNAMO_HASH_NAME},KeyType=HASH"
DYNAMO_PROV_THPUT="ReadCapacityUnits=${DYNAMO_READ_UNIT},WriteCapacityUnits=${DYNAMO_WRITE_UNIT}"
変数の確認
cat << ETX

        DYNAMO_TABLE_NAME: ${DYNAMO_TABLE_NAME}
        DYNAMO_ATTRIBUTE:  ${DYNAMO_ATTRIBUTE}
        DYNAMO_KEY_SCHEMA: ${DYNAMO_KEY_SCHEMA}
        DYNAMO_PROV_THPUT: ${DYNAMO_PROV_THPUT}

ETX
コマンド
      aws dynamodb create-table \
        --table-name ${DYNAMO_TABLE_NAME} \
        --attribute-definitions ${DYNAMO_ATTRIBUTE} \
        --key-schema ${DYNAMO_KEY_SCHEMA} \
        --provisioned-throughput ${DYNAMO_PROV_THPUT}
結果
      {
        "TableDescription": {
          "AttributeDefinitions": [
              {
                  "AttributeName": "Id",
                  "AttributeType": "N"
              }
          ],
          "ProvisionedThroughput": {
              "NumberOfDecreasesToday": 0,
              "WriteCapacityUnits": 5,
              "ReadCapacityUnits": 10
          },
          "TableSizeBytes": 0,
          "TableName": "ProductCatalog",
          "TableStatus": "CREATING",
          "KeySchema": [
              {
                  "KeyType": "HASH",
                  "AttributeName": "Id"
              }
          ],
          "ItemCount": 0,
          "CreationDateTime": 1423104342.199
        }
      }

2. 確認 (一覧: list-tables)

コマンド
     aws dynamodb list-tables 
結果
      {
        "TableNames": [
          "ProductCatalog"
        ]
      }

3. 確認(詳細: describe-table)

コマンド
      aws dynamodb describe-table --table-name ${DYNAMO_TABLE_NAME}
結果
      {
        "Table": {
          "AttributeDefinitions": [
              {
                  "AttributeName": "Id",
                  "AttributeType": "N"
              }
          ],
          "ProvisionedThroughput": {
              "NumberOfDecreasesToday": 0,
              "WriteCapacityUnits": 5,
              "ReadCapacityUnits": 10
          },
          "TableSizeBytes": 0,
          "TableName": "ProductCatalog",
          "TableStatus": "ACTIVE",
          "KeySchema": [
              {
                  "KeyType": "HASH",
                  "AttributeName": "Id"
              }
          ],
          "ItemCount": 0,
          "CreationDateTime": 1423104342.199
        }
      }

完了

テーブルを作成したら、アイテムを登録、更新、削除してみましょう。
http://qiita.com/tcsh/items/aab2930fe38b0121852b

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away