はじめに
DynamoDBについて勉強がてらチュートリアルをやろうと思い、ただ実行するだけなのも芸がないのでコマンドのオプションがどういう意味なのか調べながらやりました。
その結果、手順の1つ目(テーブル作成)だけになってしまいましたが……。
(2020/1/29追記:タイトルを修正しました)
1-1.テーブル作成コマンド
コマンドはチュートリアルより。
aws dynamodb create-table \
--table-name BarkTable \
--attribute-definitions AttributeName=Username,AttributeType=S AttributeName=Timestamp,AttributeType=S \
--key-schema AttributeName=Username,KeyType=HASH AttributeName=Timestamp,KeyType=RANGE \
--provisioned-throughput ReadCapacityUnits=5,WriteCapacityUnits=5 \
--stream-specification StreamEnabled=true,StreamViewType=NEW_AND_OLD_IMAGES
各オプションについて
--table-name
- 書式: --table-name (value)
作成するテーブル名を指定。
--attribute-definitions
- 書式 : --attribute-definitions AttributeName=(Value)
キースキーマを記述する属性の配列。
--key-schema
- 書式 : --key-schema AttributeName=,KeyType=HASH|RANGE
主キーを構成する属性。- AttributeName : 属性名
- KeyType : キー属性の役割
- HASH : パーティションキー
- RANGE : ソートキー
- KeyType : キー属性の役割
- AttributeName : 属性名
--provisioned-throughput
- 書式 : --provisioned-throughput ReadCapacityUnits=(value),WriteCapacityUnits=(value)
プロビジョニングされたスループット設定。(詳細は後述) - ReadCapacityUnits : 読み込みキャパシティユニット(RCU)の数
- WriteCapacityUnits : 書き込みキャパシティユニット(WCU)の数
--stream-specification
- 書式 : StreamEnabled=true,StreamViewType=KEYS_ONLY|NEW_IMAGE|OLD_IMAGE|NEW_AND_OLD_IMAGES
テーブルのDynamoDBストリームの設定。
- StreamEnabled : DynamoDB Streamsを有効にするか無効にするか
- StreamViewType : テーブルのアイテム変更時にテーブルのストリームに書き込まれる情報。
- KEYS_ONLY : 変更されたアイテムのキー属性のみ
- NEW_IMAGE : アイテム全体
- OLD_IMAGE : 変更される前に表示されていたアイテム全体
- NEW_AND_OLD_IMAGES : アイテムの新しいアイテム画像と古いアイテム画像の両方
キャパシティユニットについて
キャパシティユニット(以降CU)が何かを説明する前に、DynamoDBの課金要素を知っておく必要があります。
DynamoDBの課金要素は下記の3つになります。
① テーブルに対して読み込み/書き込みを行ったデータ量
② DynamoDBへのデータ保管量
③ DynamoDBまでのデータ転送量(厳密にはDynamoDB自体の課金ではありませんが)
ざっくり言うと、CUとは「読み込み/書き込みの単位(サイズ)」のことで、
DynamoDBでは1秒間にどれだけ読み書きが発生するかを予め見積もり、その分のCU(読み込みと書き込みそれぞれ)を購入して割り当てる必要があります。
(以降、読み込みCUはRCU、書き込みCUはWCUと記載)
RCUは4KB単位、WCUは1KB単位で計算されます。
つまり、1RCUで4KBのレコード読み込み、1WCUで1KBのレコード書き込みが可能です。
(結果整合性読み込みを行わない場合、1RCUで2回の読み込みが可能)
先述のテーブル作成コマンド内の「ReadCapacityUnits」「WriteCapacityUnits」がそれぞれいくつのCUを割り当てるかを決めるオプションになります。
また、CUは1秒間のキャパシティを決めるものです。今回の場合、1秒間に5RCU/5WCUが割り当てられています。
(ちなみに5というのがデフォルトのようです)
このように予めDynamoDBのキャパシティ(厳密にはスループットかも)を見積もる方式を「プロビジョニングモード」と言います。CU単位ではなくリクエスト回数での課金とする「オンデマンドモード」というのもありますが、料金は前者よりお高くなるようです。
参考URL