AWS CLIからDynamoDBを操作してみる。
はじめに
業務でDynamoDBを利用しているのですがAWS CLIからコマンドを打つ機会があったので忘れずに操作内容をメモしておこうと思います。
事前準備
今回はローカル環境からコマンドを打っているため、AWS CLIを利用するにあたってAWS Configureの設定をする必要があります。
C:\WINDOWS\system32>aws configure AWS Access Key ID [None]: IAMユーザのアクセスキー AWS Secret Access Key [None]: IAMユーザのシークレットアクセスキー Default region name [None]: ap-northeast-1 Default output format [None]: json
DynamoDBの作成
今回はこの「test_dynamoDb」というテーブルを利用して色々と操作をしていこうと思います。 パーティションキーは"TestKey"とします。
注意
今回、僕はコマンドプロンプトを利用したのですが、一つのハマりポイントとしてJsonの""は前に\を入れる必要がありました。 もしコマンドプロンプトを利用している方は気をつけてくださいね!
テーブルの一覧を取得
テーブルの一覧を取得するにはlist-tablesコマンドを利用します。
aws dynamodb list-tables
test_dynamoDbが取得できました。
データの挿入
データの挿入にはput-itemコマンドを利用します。
aws dynamodb put-item --table-name test_dynamoDb --item "{\"TestKey\":{\"S\": \"TestKey1\"}, \"item1\": {\"S\": \"テスト1\"}}"
ちゃんと値が入ったことが確認できました!
同じキーを持つ項目がすでにテーブル内にある場合はその値が上書きされます。
aws dynamodb put-item --table-name test_dynamoDb --item "{\"TestKey\":{\"S\": \"TestKey1\"}, \"item1\": {\"S\": \"テスト2\"}}"
先ほど作成した「テスト1」が「テスト2」へ上書きされました。
キーの値を変更すると新しく挿入されます。
aws dynamodb put-item --table-name test_dynamoDb --item "{\"TestKey\":{\"S\": \"TestKey2\"}, \"item1\": {\"S\": \"テスト3\"}}"
単一の項目を取得する
キーを指定してデータを取得する場合はget-itemコマンドを利用します。
aws dynamodb get-item --table-name test_dynamoDb --key "{\"TestKey\": {\"S\": \"TestKey2\"}}"
キーがTestKey2の項目が取得できました。
特定のデータを持つ、特定の項目のみ取得する
特定のデータを持つ、特定の項目を取得する場合はscanコマンドと--filter-expressionオプション、--expression-attribute-valuesオプション、--projection-expressionオプションを利用します。
今回はキー以外のものでフィルターしているためにscanを利用しています。 下記はitem1項目の値が"テスト3"である項目のTestKeyを出力します。
aws dynamodb scan --table-name test_dynamoDb --filter-expression "item1 = :item" --expression-attribute-values "{\":item\": {\"S\": \"テスト3\"}}" --projection-expression "TestKey"
ちゃんと取得できましたね!
おわりに
普段はSQLServerやMySQLを触ることが多いのですがDynamoDBのようなNoSQLはクエリ等が全然違うのでしっかり勉強しなきゃですね...(;´∀`) 今回調査していたら「PartiQL エディタ」というものを見つけました。どうやらそれを利用するとSQLでDynamoDBを操作できるっぽいのでここら辺もまた試してみようと思います。