3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

RDS がつくったロググループを Terraform に取り込むまで

3
Posted at

はじめに

RDS (PostgreSQL) のログを CloudWatch に出力したら、Terraform で保持期間を設定しようとして「The specified log group already exists」と怒られたときのおはなしです。

わかったこと

  • Terraform 管理下にないリソースをコードにかくと、有無を言わさず新規作成になってしまう
  • terraform import を使えば、既存リソースを Terraform の管理下に置くことができる

やりたかったこと

  • RDS for PostgreSQL のログを CloudWatch Logs に出力したい
  • CloudWatch Logs の保持期間は 1か月(30日)にしたい
  • 上記の設定は Terraform でコード化したい

何をして何が起きたか?

PostgreSQL のログを CloudWatch Logs に出力する

RDSを定義しているリソースで enabled_cloudwatch_logs_exports を追加し、CloudWatch Logs に PostgreSQL のログを出力できるようにしました。

resource "aws_db_instance" "my_postgres" {
  // Engine options
  engine         = "postgres"
  engine_version = "14.18"

  // Settings
  identifier = "my-postgres"

 
  // (中略)

  // Log
  enabled_cloudwatch_logs_exports = [
    "postgresql"
  ]
}

apply すると、CloudWatch Logs に /aws/rds/instance/my-postgres/postgresql というロググループが自動で作成され、PostgreSQL のログが出力されていました。

ただし、保持期間が「失効しない」となっていたので、これを「1か月」に変更しようとしました。

CloudWatch Logs の保持期間を変更する

自動で作成されたロググループに対して retention_in_days を指定したリソース定義を追加しました。

resource "aws_cloudwatch_log_group" "postgresql" {
  name = "/aws/rds/instance/${aws_db_instance.my_postgres.identifier}/postgresql"

  retention_in_days = 30
}

apply すると、ここで「The specified log group already exists」エラーが発生したのです。
いや、知ってるけども。

Terraform で保持期間を変更したいんじゃ!

ちゃっぴーさん :robot: に聞いてみました。

image.png

なるほどね…

既存のロググループを Terraform 管理下におく

:robot: にいわれたとおり import して Terraform の state に取り込んでみました。

terraform import aws_cloudwatch_log_group.postgresql "/aws/rds/instance/my-postgres/postgresql"

再挑戦! CloudWatch Logs の保持期間を変更する

import のあとで apply したところ、無事に保持期間が変更できました :v:

さいごに

ログのエクスポート設定を入れる前に、保持期間を指定したロググループを作成しておけば、つつがなく apply できていたのかもしれません(知らんけど)。

とはいえ、terraform import のことを知るきっかけになったので結果オーライです。
既存リソースを後づけで Terraform 管理にできるのは便利だな、と感じました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?