AWS CLIで DynamoDBを使ってみます。
使用バージョンはこれ。
ec2-user@xxxxx$ aws --version aws-cli/2.2.23 Python/3.8.8 Linux/4.14.193-113.317.amzn1.x86_64 exe/x86_64.amzn.2018 prompt/off ec2-user@xxxxx$
aws cliの操作は、EC2上でも、ローカルPCでも可能です。
Contents
DynamoDB操作
aws dynamodb create-table テーブルの作成
aws dynamodb create-table helpより
SYNOPSIS create-table --attribute-definitions <value> --table-name <value> --key-schema <value> [--local-secondary-indexes <value>] [--global-secondary-indexes <value>] [--billing-mode <value>] [--provisioned-throughput <value>] [--stream-specification <value>] [--sse-specification <value>] [--tags <value>] [--cli-input-json | --cli-input-yaml] [--generate-cli-skeleton <value>]
必須オプションは、下記3つとなっていますが、
--attribute-definitions <value>
--table-name <value>
--key-schema <value>
--billing-modeはデフォルトが、PROVISIONEDとなるため、
--provisioned-throughput <value>も、指定する必要があります。
create-tableでテーブル作成してみます。
ec2-user@xxxxx$ aws dynamodb create-table --table-name 'sample_user_table' \ --attribute-definitions '[{ "AttributeName": "user_id", "AttributeType": "N"}]' \ --key-schema '[{ "AttributeName": "user_id", "KeyType": "HASH" }]' \ --provisioned-throughput '{"ReadCapacityUnits": 10, "WriteCapacityUnits": 10}' ec2-user@xxxxx$
aws dynamodb list-tables テーブル一覧
aws dynamodb list-tables helpより
SYNOPSIS list-tables [--cli-input-json | --cli-input-yaml] [--starting-token <value>] [--page-size <value>] [--max-items <value>] [--generate-cli-skeleton <value>]
DynamoDBのテーブル一覧を表示してみます。
ec2-user@xxxxx$ aws dynamodb list-tables { "TableNames": [ "sample_user_table" ] } ec2-user@xxxxx$
aws dynamodb delete-table テーブル削除
aws dynamodb delete-table helpより
SYNOPSIS delete-table --table-name <value> [--cli-input-json | --cli-input-yaml] [--generate-cli-skeleton <value>]
delete-tableでDynamoDBのテーブルを削除できます。
ec2-user@xxxxx$ aws dynamodb delete-table --table-name sample_user_table { "TableDescription": { "TableName": "sample_user_table", "TableStatus": "DELETING", "ProvisionedThroughput": { "NumberOfDecreasesToday": 0, "ReadCapacityUnits": 10, "WriteCapacityUnits": 10 }, "TableSizeBytes": 0, "ItemCount": 0, "TableArn": "arn:aws:dynamodb:ap-northeast-1:xxxxxxxxxxxx:table/sample_user_table", "TableId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } } ec2-user@xxxxx$
削除できたか、list-tablesで確認してみましょう。
ec2-user@xxxxx$ aws dynamodb list-tables { "TableNames": [] } ec2-user@xxxxx$
aws dynamodb put-item 項目追加
aws dynamodb put-item helpより
SYNOPSIS put-item --table-name <value> --item <value> [--expected <value>] [--return-values <value>] [--return-consumed-capacity <value>] [--return-item-collection-metrics <value>] [--conditional-operator <value>] [--condition-expression <value>] [--expression-attribute-names <value>] [--expression-attribute-values <value>] [--cli-input-json | --cli-input-yaml] [--generate-cli-skeleton <value>]
put-itemで項目追加できます。
ec2-user@xxxxx$ aws dynamodb put-item --table-name sample_user_table --item '{ "user_id": { "N": "1" }, "user_name": { "S": "takk" }}' ec2-user@xxxxx$
aws dynamodb scan 項目の全表示
aws dynamodb scan helpより
SYNOPSIS scan --table-name <value> [--index-name <value>] [--attributes-to-get <value>] [--select <value>] [--scan-filter <value>] [--conditional-operator <value>] [--return-consumed-capacity <value>] [--total-segments <value>] [--segment <value>] [--projection-expression <value>] [--filter-expression <value>] [--expression-attribute-names <value>] [--expression-attribute-values <value>] [--consistent-read | --no-consistent-read] [--cli-input-json | --cli-input-yaml] [--starting-token <value>] [--page-size <value>] [--max-items <value>] [--generate-cli-skeleton <value>]
scanを使うとテーブルの全項目を表示できます。
ec2-user@xxxxx$ aws dynamodb scan --table-name sample_user_table { "Items": [ { "user_name": { "S": "takk2" }, "user_id": { "N": "2" } }, { "user_name": { "S": "takk" }, "user_id": { "N": "1" } } ], "Count": 2, "ScannedCount": 2, "ConsumedCapacity": null } ec2-user@xxxxx$
aws dynamodb query 項目の抽出
aws dynamodb query helpより
SYNOPSIS query --table-name <value> [--index-name <value>] [--select <value>] [--attributes-to-get <value>] [--consistent-read | --no-consistent-read] [--key-conditions <value>] [--query-filter <value>] [--conditional-operator <value>] [--scan-index-forward | --no-scan-index-forward] [--return-consumed-capacity <value>] [--projection-expression <value>] [--filter-expression <value>] [--key-condition-expression <value>] [--expression-attribute-names <value>] [--expression-attribute-values <value>] [--cli-input-json | --cli-input-yaml] [--starting-token <value>] [--page-size <value>] [--max-items <value>] [--generate-cli-skeleton <value>]
queryコマンドで、条件を指定してクエリーすることができます。
aws dynamodb query \ --table-name sample_user_table \ --key-condition-expression '#pk_name = :pk_value' \ --expression-attribute-names '{ "#pk_name": "user_id" }' \ --expression-attribute-values '{ ":pk_value": { "N": "1"}}'
結果
{ "Items": [ { "user_name": { "S": "takk" }, "user_id": { "N": "1" } } ], "Count": 1, "ScannedCount": 1, "ConsumedCapacity": null } ec2-user@xxxxx$
コメント