terraform/website/source/docs/providers/aws/r/dynamodb_table.html.markdown

110 lines
3.3 KiB
Markdown
Raw Normal View History

2015-06-04 02:07:03 +02:00
---
layout: "aws"
page_title: "AWS: dynamodb_table"
sidebar_current: "docs-aws-resource-dynamodb-table"
description: |-
Provides a DynamoDB table resource
---
# aws\_dynamodb\_table
Provides a DynamoDB table resource
## Example Usage
The following dynamodb table description models the table and GSI shown
in the [AWS SDK example documentation](http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/GSI.html)
```
resource "aws_dynamodb_table" "basic-dynamodb-table" {
name = "GameScores"
read_capacity = 20
write_capacity = 20
hash_key = "UserId"
range_key = "GameTitle"
attribute {
name = "Username"
type = "S"
}
attribute {
name = "GameTitle"
type = "S"
}
attribute {
name = "TopScore"
type = "N"
}
attribute {
name = "TopScoreDateTime"
type = "S"
}
attribute {
name = "Wins"
type = "N"
}
attribute {
name = "Losses"
type = "N"
}
global_secondary_index {
name = "GameTitleIndex"
hash_key = "GameTitle"
range_key = "TopScore"
write_capacity = 10
read_capacity = 10
projection_type = "INCLUDE"
non_key_attributes = [ "UserId" ]
}
}
```
## Argument Reference
The following arguments are supported:
* `name` - (Required) The name of the table, this needs to be unique
within a region.
* `read_capacity` - (Required) The number of read units for this table
* `write_capacity` - (Required) The number of write units for this table
* `hash_key` - (Required) The attribute to use as the hash key (the
attribute must also be defined as an attribute record
* `range_key` - (Optional) The attribute to use as the range key (must
also be defined)
* `attribute` - Define an attribute, has two properties:
* `name` - The name of the attribute
* `type` - One of: S, N, or B for (S)tring, (N)umber or (B)inary data
* `local_secondary_index` - (Optional) 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.
* `global_secondary_index` - (Optional) Describe a GSO for the table;
subject to the normal limits on the number of GSIs, projected
attributes, etc.
For both `local_secondary_index` and `global_secondary_index` objects,
the following properties are supported:
* `name` - (Required) The name of the LSI or GSI
* `hash_key` - (Required) The name of the hash key in the index; must be
defined as an attribute in the resource
* `range_key` - (Required) The name of the range key; must be defined
* `projection_type` - (Required) One of "ALL", "INCLUDE" or "KEYS_ONLY"
where *ALL* projects every attribute into the index, *KEYS_ONLY*
projects just the hash and range key into the index, and *INCLUDE*
projects only the keys specified in the _non_key_attributes_
parameter.
* `non_key_attributes` - (Optional) Only required with *INCLUDE* as a
projection type; a list of attributes to project into the index. For
each attribute listed, you need to make sure that it has been defined in
the table object.
For `global_secondary_index` objects only, you need to specify
`write_capacity` and `read_capacity` in the same way you would for the
table as they have separate I/O capacity.
## Attributes Reference
The following attributes are exported:
* `id` - The name of the table