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

3.3 KiB

layout page_title sidebar_current description
aws AWS: dynamodb_table docs-aws-resource-dynamodb-table 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

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