Dyna
Dyna is a tool to manage DynamoDB Table.
It defines the state of DynamoDB Table using DSL, and updates DynamoDB Table according to DSL.
Installation
Add this line to your application's Gemfile:
gem 'dyna'
And then execute:
$ bundle
Or install it yourself as:
$ gem install dyna
Usage
export AWS_ACCESS_KEY_ID='...'
export AWS_SECRET_ACCESS_KEY='...'
export AWS_REGION='ap-northeast-1'
dyna -e -o Dynafile # export DynamoDB Table
vi Dynafile
dyna -a --dry-run
dyna -a # apply `Dyanfile` to DynamoDB
Help
Usage: dyna [options]
-p, --profile PROFILE_NAME
--credentials-path PATH
-k, --access-key ACCESS_KEY
-s, --secret-key SECRET_KEY
-r, --region REGION
--endpoint DYNAMO_ENDPOINT
-a, --apply
-f, --file FILE
-n, --table_names TABLE_LIST
-x, --exclude_table_names TABLE_LIST
--dry-run
-e, --export
-o, --output FILE
--split
--no-color
--debug
Dynafile example
require 'other/dynafile'
dynamo_db "ap-northeast-1" do
table "test_table" do
key_schema(
hash: "ForumName",
range: "Subject"
)
attribute_definition(
attribute_name: "ForumName",
attribute_type: "S",
)
attribute_definition(
attribute_name: "Subject",
attribute_type: "S",
)
time_to_live_specification(
enabled: true,
attribute_name: "ttl",
)
provisioned_throughput(
read_capacity_units: 1,
write_capacity_units: 2,
)
local_secondary_index "LocalIndexName" do
key_schema hash: "ForumName", range: "Subject"
projection projection_type: "ALL"
end
global_secondary_index "GlobalIndexName" do
key_schema hash: "ForumName", range: "Subject"
projection projection_type: "ALL"
provisioned_throughput read_capacity_units: 1, write_capacity_units: 2
end
stream_specification(
stream_enabled: true,
stream_view_type: "NEW_AND_OLD_IMAGES",
)
end
Similar tools
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/wata-gh/dyna.
License
The gem is available as open source under the terms of the MIT License.