LoginSignup
3
3

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-02-16

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

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3