Files
opentf/website/source/docs/providers/aws/r/dynamodb_table.html.markdown
Calvin French-Owen cb2d90a7d9 provider/aws: Add arn attribute for DynamoDB tables
This commit exports the `arn` as well as the `id`, since IAM
roles require the full resource name rather than just the table
name. I'd even be in favor or having `arn` as the `id` since the
<region, tablename> pair is the uniqueness constraint, but this
will keep backwards compatibility:

http://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_CreateTable.html
2015-08-03 14:10:18 -07:00

3.8 KiB

layout, page_title, sidebar_current, description
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 = "UserId"
      type = "S"
    }
    attribute {
      name = "GameTitle"
      type = "S"
    }
    attribute {
      name = "TopScore"
      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. These do not need to be defined as attributes on the table.

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.

A note about attributes

Only define attributes on the table object that are going to be used as:

  • Table hash key or range key
  • LSI or GSI hash key or range key

The DynamoDB API expects attribute structure (name and type) to be passed along when creating or updating GSI/LSIs or creating the initial table. In these cases it expects the Hash / Range keys to be provided; because these get re-used in numerous places (i.e the table's range key could be a part of one or more GSIs), they are stored on the table object to prevent duplication and increase consistency. If you add attributes here that are not used in these scenarios it can cause an infinite loop in planning.

Attributes Reference

The following attributes are exported:

  • arn - The arn of the table
  • id - The name of the table