{DynamoDB}DynamoDB の使用開始

-- ステップ 1: テーブルを作成する


aws dynamodb create-table \
--table-name tab1 \
--attribute-definitions \
AttributeName=col1,AttributeType=S \
AttributeName=col2,AttributeType=S \
--key-schema \
AttributeName=col1,KeyType=HASH \
AttributeName=col2,KeyType=RANGE \
--billing-mode=PAY_PER_REQUEST


aws dynamodb describe-table --table-name tab1
aws dynamodb list-tables


-- ステップ 2: テーブルにデータを書き込む

aws dynamodb put-item \
--table-name tab1 \
--item \
'{"col1": {"S": "val11"}, "col2": {"S": "val12"}, "col3": {"S": "val13"}, "col4": {"N": "1"}}'

aws dynamodb put-item \
--table-name tab1 \
--item \
'{"col1": {"S": "val21"}, "col2": {"S": "val22"}, "col3": {"S": "val23"}, "col4": {"N": "2"} }'


-- ステップ 3: テーブルからデータを読み込む

aws dynamodb get-item \
--consistent-read \
--table-name tab1 \
--key '{ "col1": {"S": "val21"}, "col2": {"S": "val22"}}'


-- ステップ 4: テーブルのデータを更新する

aws dynamodb update-item \
--table-name tab1 \
--key '{ "col1": {"S": "val21"}, "col2": {"S": "val22"}}' \
--update-expression "SET col3 = :newval" \
--expression-attribute-values '{":newval":{"S":"newval23"}}' \
--return-values ALL_NEW


-- ステップ 5: テーブルのデータをクエリする


aws dynamodb query \
--table-name tab1 \
--key-condition-expression "col1 = :name" \
--expression-attribute-values '{":name":{"S":"val21"}}'

-- ステップ 6: グローバルセカンダリインデックスを作成する

aws dynamodb update-table \
--table-name tab1 \
--attribute-definitions AttributeName=col3,AttributeType=S \
--global-secondary-index-updates \
"[{\"Create\":{\"IndexName\": \"ind11\",\"KeySchema\":[{\"AttributeName\":\"col3\",\"KeyType\":\"HASH\"}], \
\"Projection\":{\"ProjectionType\":\"ALL\"}}}]"

aws dynamodb describe-table --table-name tab1
aws dynamodb describe-table --table-name tab1 | grep IndexStatus


-- ステップ 7: グローバルセカンダリインデックスをクエリする

aws dynamodb query \
--table-name tab1 \
--index-name ind11 \
--key-condition-expression "col3 = :name" \
--expression-attribute-values '{":name":{"S":"val13"}}'

-- ステップ 8: テーブルのデータを削除する
aws dynamodb delete-item \
--table-name tab1 \
--key '{ "col1": {"S": "val21"}, "col2": {"S": "val22"}}'


-- ステップ 9: テーブルのデータをスキャンする

aws dynamodb scan --table-name tab1

-- ステップ 10: (オプション) リソースをクリーンアップする

aws dynamodb delete-table --table-name tab1

aws dynamodb list-tables