LoginSignup
1
1

More than 5 years have passed since last update.

TerraformのBackendで共通のS3とDynamoDBを使う

Posted at

TerraformのBackendにS3やDynamoDBを使用できますが、各Terraformプロジェクトで共通のものを使うことができます。

例えばterraform-state-for-my-companyというS3バケットと、terraform-state-lock-for-my-companyというDynamoDBテーブルを作成します。

terraform-state.tf
resource "aws_dynamodb_table" "terraform_statelock" {
  name           = "terraform-state-lock-for-my-company"
  hash_key       = "LockID"
  read_capacity  = 5
  write_capacity = 5

  attribute {
    name = "LockID"
    type = "S"
  }
}

resource "aws_s3_bucket" "terraform_state" {
  bucket = "terraform-state-for-my-company"
  acl    = "private"

  versioning {
    enabled = true
  }
}

S3とDynamoDBを作成するリージョンはどこでも構いません。Backendを利用するTerraformプロジェクトのAWSプロバイダのリージョンと異なってていも、問題なく使用することができます。節約のために料金が安いリージョンを選択することも可能です。

Backendを使いたいTerraformプロジェクトで以下のようにBackendを設定します。
例)my-project

my-project-terraform/backend.tf
terraform {
  backend "s3" {
    bucket         = "terraform-state-for-my-company"
    dynamodb_table = "terraform-state-lock-for-my-company"
    key            = "my-project"
    region         = "us-west-2" # S3やDynamoDBが作成されているリージョン
  }
}

私の場合は、最初に作成したS3とDynamoDBも1つのTerraformプロジェクトとして管理しています。こちらも自身のS3やDynamoDBを使うことができるので、その場合は一度S3とDynamoDBをapplyし、Backendの設定を追加します。

まとめ

これでプロジェクトごとにS3やDynamoDBを作る必要がなくなりました。会社で複数のTerraformプロジェクトがある場合は便利です。

1
1
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
1
1