DynamoDB Dynomite Migrations Low-Level Client
Important: These docs are for the outdated Jets 5 versions and below. For the latest Jets docs: docs.rubyonjets.com
If the create_table, update_table, and delete_table Dynomite Migration DSL methods are insufficient for some reason. You can drop down to the low-level client and call the Ruby dynamodb client methods like create_table directly.
class CreateUsers < Dynomite::Migration
def up
client.create_table(
billing_mode: "PAY_PER_REQUEST",
table_name: "demo-dev_users",
key_schema: [{attribute_name: "id", key_type: "HASH"}],
global_secondary_indexes: [{
key_schema: [{attribute_name: "updated_at", key_type: "HASH"}],
index_name: "updated_at-index",
projection: {projection_type: "ALL"},
}],
attribute_definitions: [
{attribute_name: "id", attribute_type: "S"},
{attribute_name: "updated_at", attribute_type: "S"},
]
)
waiter.wait("demo-dev_user")
# Same as above but using the DSL:
# create_table :users do |t|
# t.partition_key :id
# t.add_gsi :updated_at
# end
end
end
When using the dynamodb client directly, you must fully qualify the table name with the namespace: demo-dev_users
. You also should call the waiter.wait
. The next migration, if it’s dependent, may not work since the create_table
method is async.