LoginSignup
1
0

More than 1 year has passed since last update.

TerraformでDMSレプリケーションインスタンスを自動構築する(ロギング編)

Last updated at Posted at 2021-08-29

はじめに

DMS記事第2弾。

DMSは便利だが、マネージドに色々やってくれる分、中身がブラックボックスで、いざ何かが起きたときにログがないと不安である。
そういったケースに備えて、CloudWatch Logsへのログ出力の設定をしておこう。

DMSのインスタンスやタスクについては、基本編の構成を変更していくので、未読の方はそちらからご覧いただきたい。

IAMロールの作成

いきなりハマりどころである。DMSのサービスロールをテキトーに作ってCloudWatch Logsに出力する権限をつけておけばいいんだろ、と思いたくなるが、ロール名をdms-cloudwatch-logs-role固定で作らないといけない。ユーザーガイドに書かれたロール名は例として書かれているわけではないのである。

ということで、以下のように作成しておこう。

resource "aws_iam_role" "dms_cloudwatch" {
  name               = "dms-cloudwatch-logs-role"
  assume_role_policy = data.aws_iam_policy_document.dms_cloudwatch_assume.json
}

data "aws_iam_policy_document" "dms_cloudwatch_assume" {
  statement {
    effect = "Allow"

    actions = [
      "sts:AssumeRole",
    ]

    principals {
      type = "Service"
      identifiers = [
        "dms.amazonaws.com",
      ]
    }
  }
}

resource "aws_iam_role_policy_attachment" "dms_cloudwatch" {
  role       = aws_iam_role.dms_cloudwatch.name
  policy_arn = "arn:aws:iam::aws:policy/service-role/AmazonDMSCloudWatchLogsRole"
}

CloudWatch Logsのロググループ

DMSが勝手に作ってくれるが、勝手に作られるのが気に入らない場合は、以下の通りロググループ名が決められるので、あらかじめ作っておこう。
なお、ログストリーム名は、dms-task-[レプリケーションタスクID]が設定される。

resource "aws_cloudwatch_log_group" "dms_replication_task" {
  name = "dms-tasks-[レプリケーションインスタンス名]"
}

ロギングの設定

ロギングの設定は、基本編のレプリケーションのタスクを変更する。
具体的には、Loggingのセクションだ。CloudWatchLogGroupCloudWatchLogStreamはDMS側で勝手に設定してくれる(というか、設定するとエラーになる)ので、EnableLoggingだけ変更しよう。LogComponentsはエラーレベルを変更できるので、必要に応じて変更しよう。

なお、この項目はなぜかインスタンス作成時には有効化できない。
一度作成後に、EnableLoggingfalseからtrueに変更して、再度terraform applyしよう。

dms_replication_task_setting.json(抜粋)
(前略)
    "EnableLogging": true,
    "CloudWatchLogGroup": null,
    "CloudWatchLogStream": null,
    "LogComponents": [
      {
        "Id": "SOURCE_UNLOAD",
        "Severity": "LOGGER_SEVERITY_DEFAULT"
      },
      {
        "Id": "SOURCE_CAPTURE",
        "Severity": "LOGGER_SEVERITY_DEFAULT"
      },
      {
        "Id": "TARGET_LOAD",
        "Severity": "LOGGER_SEVERITY_DEFAULT"
      },
      {
        "Id": "TARGET_APPLY",
        "Severity": "LOGGER_SEVERITY_DEFAULT"
      },
      {
        "Id": "TASK_MANAGER",
        "Severity": "LOGGER_SEVERITY_DEFAULT"
      }
    ]
  },
(後略)

これでDMSのログが出力できるようになった!

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