[アップデート] TerraformでDocumentDBのイベントサブスクリプションを生やせるようになりました。

DocumentDBのイベントサブスクリプションについて対応状況をまとめてみました。
2022.06.30

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは!コンサル部のinomaso(@inomasosan)です。

今回はTerraformのAWS Provider Version 4.12で、DocumentDBのイベントサブスクリプションを構築できるようになったので試していきます。

概要

2022/4/29にリリースされたアップデートにより、aws_docdb_event_subscriptionを新たに定義できるようになりました。

DocumentDBのイベントをトリガーに、通知や追加処理を検討していた方には朗報ではないでしょうか。

EventBridgeじゃだめなの?

最初にEventBridgeを検討したのですが、DocumentDBはEventBridgeのイベントには対応しておりません。

やってみた

検証環境

今回実行した環境は以下の通りです。

項目 バージョン
macOS Monterey 12.4
Terraform 1.1.9
AWSプロバイダー 4.20.1

Terraformコード

今回はリソースのコード例を、ほぼそのまま利用します。
aws_availability_zonesのデータソース宣言がないとエラーとなるので、その部分のみ追加で記載しました。

data "aws_availability_zones" "available" {}

resource "aws_docdb_cluster" "example" {
  cluster_identifier  = "example"
  availability_zones  = [data.aws_availability_zones.available.names[0], data.aws_availability_zones.available.names[1], data.aws_availability_zones.available.names[2]]
  master_username     = "foo"
  master_password     = "mustbeeightcharaters"
  skip_final_snapshot = true
}

resource "aws_sns_topic" "example" {
  name = "example-events"
}

resource "aws_docdb_event_subscription" "example" {
  name             = "example"
  enabled          = true
  event_categories = ["creation", "failure"]
  source_type      = "db-cluster"
  source_ids       = [aws_docdb_cluster.example.id]
  sns_topic_arn    = aws_sns_topic.example.arn
}

イベントサブスクリプションを確認

DocumentDBコンソールでイベントサブスクリプションが作成できていることが確認できました。

ちなみにCloudFormationでは対応しているの?

ユーザガイドを確認する限りは対応していなさそうです。
DocumentDBのイベントサブスクリプションは元々APIしか対応していなかったため、CloudFormation側での実装が遅れているのかもしれません。

まとめ

DocumentDBのイベントサブスクリプションについて対応状況等をまとめていきました。

この記事が、どなたかのお役に立てば幸いです。それでは!