MLopsのデータパイプライン用にAWSCLIでDynamoDBにtableを作る。
その後、テーブル内のデータを、「NoSQL Workbench」のツールでlocal PCからcsvでtableデータをoutputするまで。
「NoSQL Workbench」はアクセスキーでローカルPCからDynamoDBを操作できる便利なツール。
AmazonRDS(データベース)とDBeaver(SQLツール)とのほぼ関係と同じ
目次
1. テーブル名、プライマリキー、ソートキー
2. DynamoDBにAWSCliでテーブルを作り、データを格納する
3. 「NoSQL Workbench」でDynamoDBをlocalPCで操作
1. テーブル名、プライマリキー、ソートキー
テーブル名:wx_data プライマリキー:sample_time (Number) ソートキー:device_id(Number)
2. DynamoDBにAWSCLIでテーブルを作り、データを格納する
$ aws --version # aws-cli/2.11.4 Python/3.11.2 Darwin/22.2.0 exe/x86_64 prompt/off
table作成
TABLE_NAME=wx_data PRIMARY=sample_time SOTEDKEY=device_id $ aws dynamodb create-table \ --table-name $TABLE_NAME \ --attribute-definitions \ AttributeName=$PRIMARY,AttributeType=N \ AttributeName=$SOTEDKEY,AttributeType=N \ --key-schema \ AttributeName=$PRIMARY,KeyType=HASH \ AttributeName=$SOTEDKEY,KeyType=RANGE \ --provisioned-throughput \ ReadCapacityUnits=5,WriteCapacityUnits=5 \ --table-class STANDARD
# output { "TableDescription": { "AttributeDefinitions": [ { "AttributeName": "device_id", "AttributeType": "N" }, { "AttributeName": "sample_time", "AttributeType": "N" } ], "TableName": "wx_data", "KeySchema": [ { "AttributeName": "sample_time", "KeyType": "HASH" }, { "AttributeName": "device_id", "KeyType": "RANGE" } ], "TableStatus": "CREATING", "CreationDateTime": "2023-03-23T22:51:58.012000+09:00", "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 5, "WriteCapacityUnits": 5 }, "TableSizeBytes": 0, "ItemCount": 0, "TableArn": "arn:aws:dynamodb:ap-northeast-1:*******:table/wx_data", "TableId": "ea291b1a-4875-434c-af3f-13f5c43ca5f7", "TableClassSummary": { "TableClass": "STANDARD" }, "DeletionProtectionEnabled": false } }
tableの確認
# tableの確認 $ aws dynamodb describe-table --table-name wx_data | grep TableStatus # "TableStatus": "ACTIVE" # if table is ACTIVE, point-in-time recovery $ aws dynamodb update-continuous-backups --table-name wx_data --point-in-time-recovery-specification PointInTimeRecoveryEnabled=true # { # "ContinuousBackupsDescription": { # "ContinuousBackupsStatus": "ENABLED", # "PointInTimeRecoveryDescription": { # "PointInTimeRecoveryStatus": "ENABLED", # "EarliestRestorableDateTime": "2023-03-23T22:54:04+09:00", # "LatestRestorableDateTime": "2023-03-23T22:54:04+09:00" # } # } #}
***point-in-time リカバリとは、特定の時点までのデータ変更のリカバリのこと。 一般に、この種類のリカバリは、サーバーをバックアップが行われた時点の状態にする完全バックアップのリストア後に実行される
tableにデータを書き込む
$ aws dynamodb put-item \ --table-name wx_data \ --item '{"sample_time": {"N": "128"}, "device_id": {"N": "888"}, "temperature": {"N": "28"}, "humidity": {"N": "80"}}'
データのcheck
$ aws dynamodb get-item --consistent-read \ --table-name wx_data \ --key '{ "sample_time": {"N": "128"}, "device_id": {"N": "888"}}' >>> { "Item": { "device_id": { "N": "888" }, "humidity": { "N": "80" }, "sample_time": { "N": "128" }, "temperature": { "N": "28" } } }
tableの削除
$ aws dynamodb delete-table --table-name wx_data
3.「NoSQL Workbench」でDynamoDBをlocalPCで操作
「NoSQL Workbench」のDownload
「NoSQL Workbench」にawsのアクセスキーとシークレットキーを入力して、login。
Installし終わった。
tableデータをcsvとしてoutput
さっき作ったtable「wx_data」を確認できたので、tableデータをcsvにoutput。
Amazon DynamoDBで「Launch」
「Operation builder」 で Region is が「ap-northeast-1]」。
さっき作ったtable「wx_data」を確認できた。
「Expand to CSV」でtableデータをcsvにoutput。
References
・Getting started with DynamoDB・2022/3 NoSQL Workbenchで始めるDynamoDB設計