1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Google Cloud][Cloud SQL] Cloud SQLを削除すると、同名インスタンス作成時にタイムラグが発生。Terraform での対処方法を紹介

Posted at

問題点

「Cloud SQL インスタンス削除の後に同じ名前のインスタンスを作成する際にタイムラグが発生する」という問題があります。
これは、Cloud SQL インスタンスを削除すると、そのインスタンス名は数日間保持されるためです。
そのため、インスタンスを削除して直ぐに同じ名前でインスタンスを作成することはできません。

対象方法の例

この問題を解決するためには、インスタンス名にタイムスタンプを使用することが有効です。

以下は、タイムスタンプを使用した Google Cloud SQL インスタンスを作成する Terraform のサンプルです。

resource "google_sql_database_instance" "example" {
  name          = "example-${timestamp()}"
  region        = "us-central"
  database_version = "POSTGRES_11"
  settings {
    tier = "db-f1-micro"
  }
}

このように、インスタンス名にタイムスタンプを付けることで、同じ名前のインスタンスを作成しないようにすることができます。

もしくは、以下のようにすることができます。

locals {
    timestamp = timestamp()
}

resource "google_sql_database_instance" "example" {
  name          = "example-${local.timestamp}"
  region        = "us-central"
  database_version = "POSTGRES_11"
  settings {
    tier = "db-f1-micro"
  }
}

作成した日付を付けることもできます。

resource "google_sql_database_instance" "example" {
  name          = "example-${formatdate("yyyy-MM-dd-HH-mm-ss", timestamp())}"
  region        = "us-central"
  database_version = "POSTGRES_11"
  settings {
    tier = "db-f1-micro"
  }
}

上記のコードは、現在の日時をyyyy-MM-dd-HH-mm-ss形式で取得し、インスタンス名に加えて、インスタンスを作成します。
これにより、同じ名前のインスタンスを作成しないようにすることができます。

注意点:上記のコードで使用している formatdate 関数は、Terraform v0.13.0 以降で使用可能な組み込み関数です。そのため、それ以前のバージョンの Terraform では、外部のライブラリやプラグインを使用する必要があります。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?