dynamodb
create and delete table
$ aws dynamodb list-tables
$ aws dynamodb describe-table --table-name testtable
$ aws dynamodb create-table --table-name testtable \
--attribute-definitions '[{"AttributeName":"Artist","AttributeType":"S"},{"AttributeName":"AlbumTitle","AttributeType":"S"}]' \
--key-schema '[{"AttributeName":"Artist","KeyType":"HASH"},{"AttributeName":"AlbumTitle","KeyType":"RANGE"}]' \
--provisioned-throughput '{"ReadCapacityUnits": 1,"WriteCapacityUnits": 1}' \
--tags '[{"Key": "Name","Value": "test"}]'
$ aws dynamodb delete-table --table-name testtable
put item
$ jq '.' put-item.json
{
"Artist": {
"S": "The Beatles"
},
"AlbumTitle": {
"S": "Please Please Me"
},
"songs": {
"L": [
{
"S": "I Saw Her Standing There"
},
{
"S": "Misery"
}
]
}
}
$ aws dynamodb put-item --table-name testtable --item file://put-item.json
get and delete item
$ aws dynamodb get-item --table-name testtable --key '{ "Artist": { "S": "The Beatles" },"AlbumTitle": { "S": "Please Please Me" } }'
$ aws dynamodb delete-item --table-name testtable --key '{ "Artist": { "S": "The Beatles" },"AlbumTitle": { "S": "Please Please Me" } }'
backup and restore database
create backup
$ aws dynamodb list-backups --table-name testtable
$ aws dynamodb create-backup --table-name testtable --backup-name testtablebackup
describe backup
$ aws dynamodb describe-backup --backup-arn $(aws dynamodb list-backups --table-name "testtable" --query 'max_by(BackupSummaries[?BackupName == `testtablebackup`], &BackupCreationDateTime).BackupArn' | jq -r .)
restore from newest backup
$ aws dynamodb delete-table --table-name testtable
$ aws dynamodb restore-table-from-backup --target-table-name testtable --backup-arn $(aws dynamodb list-backups --table-name "testtable" --query 'max_by(BackupSummaries[?BackupName == `testtablebackup`], &BackupCreationDateTime).BackupArn' | jq -r .)
$ aws dynamodb describe-table --table-name testtable --query 'Table.TableStatus'
remove oldest backup
$ aws dynamodb delete-backup --backup-arn $(aws dynamodb list-backups --table-name "testtable" --query 'max_by(BackupSummaries[?BackupName == `testtablebackup`], &BackupCreationDateTime).BackupArn' | jq -r .)
sample python script
put-item.py
#! /usr/bin/python3
import boto3
import json
tablename = 'testtable'
item = {
"Artist": {
"S": "The Beatles"
},
"AlbumTitle": {
"S": "Please Please Me"
},
"songs": {
"L": [
{
"S": "I Saw Her Standing There"
},
{
"S": "Misery"
}
]
}
}
dynamo = boto3.client('dynamodb')
res = dynamo.put_item(TableName=tablename, Item=item)
print (json.dumps(res))
get-item.py
#! /usr/bin/python3
import boto3
import json
tablename = 'testtable'
key = {
"Artist": { "S": "The Beatles" },
"AlbumTitle": { "S": "Please Please Me" }
}
dynamo = boto3.client('dynamodb')
res = dynamo.get_item(TableName=tablename, Key=key)
print (json.dumps(res))
delete-item.py
#! /usr/bin/python3
import boto3
import json
tablename = 'testtable'
key = {
"Artist": { "S": "The Beatles" },
"AlbumTitle": { "S": "Please Please Me" }
}
dynamo = boto3.client('dynamodb')
res = dynamo.delete_item(TableName=tablename, Key=key)
print (json.dumps(res))
# print (json.dumps(res['ResponseMetadata']['HTTPStatusCode']))
cloudformation template
TestDynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: "TestDynamoDBTable"
Tags:
- Key: "Name"
Value: "test"
AttributeDefinitions:
- AttributeName: "subject"
AttributeType: "S"
- AttributeName: "year"
AttributeType: "N"
KeySchema:
- AttributeName: "subject"
KeyType: "HASH"
- AttributeName: "year"
KeyType: "RANGE"
BillingMode: "PROVISIONED"
ProvisionedThroughput:
ReadCapacityUnits: 1
WriteCapacityUnits: 1