Terraformで一部のリソース(この場合、既に手動で設定されたCloudWatchロググループのリテンション期間)を管理する際には、Terraformの状態(State)と実際のインフラストラクチャとの同期が重要です。既存リソースをTerraformの管理下に置く方法として、「Terraform Import」を利用します。
terraform importコマンドを使うことで、既存のリソースをTerraformの状態にインポートし、その後Terraform設定ファイルに基づいてリソースを管理することができます。
状態の確認とインポート手順
- 既存リソースの状態:
- まず、Oracle RDSインスタンスのCloudWatchロググループがTerraformとは別に手動で作成・設定された状態を確認します。
- CLIでロググループの確認:
- AWS CLIを使ってCloudWatch Logsのロググループを確認できます。
aws logs describe-log-groups --log-group-name-prefix "/aws/rds/instance/"
- Terraform設定ファイルの準備:
既存のロググループの管理をTerraformに移行するために、まずTerraform設定ファイルを作成します。
provider "aws" {
region = "us-west-2"
}
resource "aws_db_instance" "oracle_rds" {
allocated_storage = 20
storage_type = "gp2"
engine = "oracle-se2"
engine_version = "19.0.0.0.ru-2021-04.rur-2021-04.r1"
instance_class = "db.t3.medium"
name = "myoracledb"
username = "admin"
password = "mypassword"
parameter_group_name = "default.oracle-se2-19"
skip_final_snapshot = true
publicly_accessible = false
multi_az = true
backup_retention_period = 7
enabled_cloudwatch_logs_exports = ["audit"]
vpc_security_group_ids = ["sg-xxxxxxxxx"]
tags = {
Name = "my-oracle-rds"
}
}
resource "aws_cloudwatch_log_group" "rds_audit_log" {
name = "/aws/rds/instance/${aws_db_instance.oracle_rds.id}/audit"
retention_in_days = 30
}
- インポートコマンドの実行:
aws_cloudwatch_log_group.rds_audit_logリソースをTerraformの管理下に置くために、インポートコマンドを実行します。
terraform import aws_cloudwatch_log_group.rds_audit_log /aws/rds/instance/your-oracle-rds-id/audit
ここで、your-oracle-rds-id は実際のRDSインスタンスIDに置き換えてください。
- 状態の確認:
- インポート後、Terraformの状態ファイルに情報が追加されているか確認します。
terraform show
- Terraformの修正:
- インポート後、設定ファイルを見直し、必要な変更が正しく反映されていることを確認します。
- 適用:
- Terraform設定を再度適用して、インポートされたリソースが適切に管理されていることを確認します。
terraform apply
注意点
- リソースのデリケート: インポートしたリソースに対して設定を変更する前に、適用する設定が正しいことを確認してください。誤った設定を適用するとリソースに対して意図しない変更が行われる可能性があります。
- バックアップ: インポート手順を実行する前に、現在のTerraformの状態ファイルや設定ファイルのバックアップを取ることをお勧めします。
- 検証:
terraform planを実行して、計画された変更を事前に確認し、意図しない変更が含まれていないことを確認します。
以上の手順を実行することで、手動で設定されたCloudWatchロググループのリテンション期間をTerraformの管理下に置き、以降はTerraformを使ってリソースの管理・変更を行うことができます。

コメント