Terraformを使用して、CloudWatch Logsのロググループの保管期間(ログのリテンション期間)を設定するには、aws_cloudwatch_log_group リソースを利用します。既存のRDSインスタンスのロググループに対し、リテンション期間(保管期間)を設定するための方法を検討します。
以下の手順を参考にしてください。まず、RDSインスタンスのログがエクスポートされる先のCloudWatchロググループの名前を特定し、それに対してリテンション期間を設定します。
Terraformコードサンプル
以下は、前述のRDSインスタンスを作成したあとに、そのロググループのリテンション期間を設定するためのコード例です。
- ロググループの設定:
- RDSインスタンスのロググループの名前が
/aws/rds/instance/db-instance-identifier/auditであると仮定します。 - このロググループに対してリテンション期間を設定します。
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
}
説明
- provider “aws”:
AWSプロバイダーを指定し、リージョンを設定します。 - resource “aws_db_instance” “oracle_rds”:
RDSインスタンスの定義は前述のままです。 - resource “aws_cloudwatch_log_group” “rds_audit_log”:
name:RDSインスタンスに対応するCloudWatch Logsのロググループの名前を指定します。aws_db_instanceリソースのidを使用して動的にロググループ名を設定しています。retention_in_days:ログのリテンション期間を日数で指定します。ここでは、1か月(30日)を設定しています。
適用手順
- 上記のTerraform設定ファイル(例:
main.tf)を保存します。 - 初期化して必要なプラグインをダウンロードします。
terraform init - プランを作成して設定が正しいか確認します。
terraform plan - 変更を適用してRDSインスタンスを作成し、ロググループのリテンション期間を設定します。
terraform apply
注意事項
- RDSインスタンスとCloudWatch Logsの設定が正しいことを確認してください。
aws_cloudwatch_log_groupリソースのname属性は、RDSインスタンスの識別子と一致するように動的部分(${aws_db_instance.oracle_rds.id})を正確に設定する必要があります。- もし既に存在するロググループに対してリテンション期間を設定したい場合は、そのロググループの名前を正確に指定してください。
これにより、RDS for OracleのログをCloudWatch Logsに出力し、それらのログの保管期間を1か月に設定することができます。

コメント