問題点
「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 では、外部のライブラリやプラグインを使用する必要があります。