LoginSignup
0
0

More than 1 year has passed since last update.

Terraform(DynamoDB作成)

Posted at

やってみたコード

resource "aws_dynamodb_table" "sequence-table" {
  name           = "sequence-table"
  billing_mode   = "PROVISIONED"
  read_capacity  = 20
  write_capacity = 20
  hash_key       = "tablename"

  attribute {
    name = "tablename"
    type = "S"
  }
  
  tags = {
    Name    = "${var.project}-${var.environment}-sequence-table"
    Project = var.project
    Env     = var.environment
    }
}

resource "aws_dynamodb_table_item" "sequence-table-item" {
  table_name = aws_dynamodb_table.sequence-table.name
  hash_key   = aws_dynamodb_table.sequence-table.hash_key

  item = <<ITEM
{
  "tablename": {"S": "user"},
  "seq": {"N": "0"}
}
ITEM
}

間違えたところ

DynamoDBをTerraformで作成するときには、「テーブル作成」「テーブル内で定義するアイテム」の2つがいる作りの
テーブルを作成する想定でした。
アイテムを作成する上で、「table_name」「hash_key」にテーブルの名前を入れていた
下記のような感じ(間違った書き方)

resource "aws_dynamodb_table_item" "sequence-table-item" {
  table_name = aws_dynamodb_table.sequence-table.sequence-table
  hash_key   = aws_dynamodb_table.sequence-table.sequence-table.hash_key

  item = <<ITEM
{
  "tablename": {"S": "user"},
  "seq": {"N": "0"}
}
ITEM
}

でも実際は一番上のコードの書き方が正しく、「name」「hash_key」だけでいい
これはTerraform内で判別してくれる。
下記コマンドを打つことで、指定されたアドレスに一致するファイル内のリソース属性を表示できます。
このときに、Terraform内で「table_name」「hash_key」には値が入っているので一番上のようなコードの書き方になります。

terraform state show [options] ADDRESS
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0