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$


コメント