Terraform module to create a DynamoDB table.
This type of resources supported:
Terraform 0.12 or newer is supported.
module "dynamodb_table" {
source = "terraform-aws-modules/dynamodb-table/aws"
name = "my-table"
hash_key = "id"
attributes = [
{
name = "id"
type = "N"
}
]
tags = {
Terraform = "true"
Environment = "staging"
}
}
The change log captures all important release notes.
Name | Version |
---|---|
terraform | >= 0.12.6, < 0.14 |
aws | >= 2.52, < 4.0 |
Name | Version |
---|---|
aws | >= 2.52, < 4.0 |
Name | Description | Type | Default | Required |
---|---|---|---|---|
attributes | List of nested attribute definitions. Only required for hash_key and range_key attributes. Each attribute has two properties: name - (Required) The name of the attribute, type - (Required) Attribute type, which must be a scalar type: S, N, or B for (S)tring, (N)umber or (B)inary data | list(map(string)) |
[] |
no |
autoscaling_defaults | A map of default autoscaling settings | map(string) |
{ |
no |
autoscaling_indexes | A map of index autoscaling configurations. See example in examples/autoscaling | map(map(string)) |
{} |
no |
autoscaling_read | A map of read autoscaling settings. max_capacity is the only required key. See example in examples/autoscaling |
map(string) |
{} |
no |
autoscaling_write | A map of write autoscaling settings. max_capacity is the only required key. See example in examples/autoscaling |
map(string) |
{} |
no |
billing_mode | Controls how you are billed for read/write throughput and how you manage capacity. The valid values are PROVISIONED or PAY_PER_REQUEST | string |
"PAY_PER_REQUEST" |
no |
create_table | Controls if DynamoDB table and associated resources are created | bool |
true |
no |
global_secondary_indexes | Describe a GSI for the table; subject to the normal limits on the number of GSIs, projected attributes, etc. | any |
[] |
no |
hash_key | The attribute to use as the hash (partition) key. Must also be defined as an attribute | string |
null |
no |
local_secondary_indexes | Describe an LSI on the table; these can only be allocated at creation so you cannot change this definition after you have created the resource. | any |
[] |
no |
name | Name of the DynamoDB table | string |
null |
no |
point_in_time_recovery_enabled | Whether to enable point-in-time recovery | bool |
false |
no |
range_key | The attribute to use as the range (sort) key. Must also be defined as an attribute | string |
null |
no |
read_capacity | The number of read units for this table. If the billing_mode is PROVISIONED, this field should be greater than 0 | number |
null |
no |
replica_regions | Region names for creating replicas for a global DynamoDB table. | list(string) |
[] |
no |
server_side_encryption_enabled | Whether or not to enable encryption at rest using an AWS managed KMS customer master key (CMK) | bool |
false |
no |
server_side_encryption_kms_key_arn | The ARN of the CMK that should be used for the AWS KMS encryption. This attribute should only be specified if the key is different from the default DynamoDB CMK, alias/aws/dynamodb. | string |
null |
no |
stream_enabled | Indicates whether Streams are to be enabled (true) or disabled (false). | bool |
false |
no |
stream_view_type | When an item in the table is modified, StreamViewType determines what information is written to the table's stream. Valid values are KEYS_ONLY, NEW_IMAGE, OLD_IMAGE, NEW_AND_OLD_IMAGES. | string |
null |
no |
tags | A map of tags to add to all resources | map(string) |
{} |
no |
timeouts | Updated Terraform resource management timeouts | map(string) |
{ |
no |
ttl_attribute_name | The name of the table attribute to store the TTL timestamp in | string |
"" |
no |
ttl_enabled | Indicates whether ttl is enabled | bool |
false |
no |
write_capacity | The number of write units for this table. If the billing_mode is PROVISIONED, this field should be greater than 0 | number |
null |
no |
Name | Description |
---|---|
this_dynamodb_table_arn | ARN of the DynamoDB table |
this_dynamodb_table_id | ID of the DynamoDB table |
this_dynamodb_table_stream_arn | The ARN of the Table Stream. Only available when var.stream_enabled is true |
this_dynamodb_table_stream_label | A timestamp, in ISO 8601 format of the Table Stream. Only available when var.stream_enabled is true |
Module written by Max Williams and managed by Anton Babenko.
Apache 2 Licensed. See LICENSE for full details.