すでに取得されているスナップショットを元にTerraformから復元(リストア)したことがなかったな、ということで試しました。
今回は、RDSのスナップショットを元に新しいインスタンスを作成します。
1. スナップショットを作成する
必要であれば手動でスナップショットを作成してください。
手順は以下のドキュメントをご参照ください。
DB スナップショットの作成 - Amazon Relational Database Service
2. Terraformで1で取得したスナップショットからRDSインスタンスを作成する
2-1. dataでスナップショットを取り込む
既存リソースであるスナップショットを取り込みます。
data "aws_db_snapshot" "任意のリソース名" {
db_snapshot_identifier = "{スナップショット名}"
}
aws_db_snapshot | Resources | hashicorp/aws | Terraform Registry
クラスターの場合はこちらだと思います。
aws_db_cluster_snapshot | Data Sources | hashicorp/aws | Terraform Registry
2-2. インスタンスの作成
snapshot_identifier
で先程取得したスナップショットのIDを指定します。
resource "aws_db_instance" "任意のリソース名" {
allocated_storage = 10
db_name = "mydb"
engine = "mysql"
engine_version = "5.7"
instance_class = "db.t3.micro"
username = "foo"
password = "foobarbaz"
parameter_group_name = "default.mysql5.7"
skip_final_snapshot = true
snapshot_identifier = "${data.aws_db_snapshot.上記で付けたリソース名.id}"
}
aws_db_instance | Resources | hashicorp/aws | Terraform Registry
2-3. 実行
$ terraform apply
以上です。