DataplexのアスペクトタイプをTerraformを使って作成してみた

DataplexのアスペクトタイプをTerraformを使って作成してみた

Clock Icon2025.04.09

データ事業本部のsutoです。

Google CloudのDataplex Catalogにおいて、アセットに対してカスタムなメタデータを付与する際にアスペクトタイプを使います。
手動でアスペクトタイプのフィールドをコンソール画面で作成していくのは面倒なので、Terraformを使って自動構築できるかやってみました。
(Terraformを触り始めてまだまだ日が浅いので、勉強のために記事にしました)

Dataplexのアスペクトタイプとは

アスペクトタイプとは、Data Catalogのタグテンプレートと同様に、アセットを使用する必要があるユーザーにわかりやすい付加情報を提供するものです。
アスペクトは、ビジネス メタデータ(データ分類など)と技術メタデータ(スキーマなど)を保存するために使用できます。

※この記事を書いている時点で、旧サービスであるData Catalogは「非推奨サービス」となり、Data Catalogで作成したリソースはDataplexのリソースとして移行する必要がありますのでご注意ください。

スクリーンショット 2025-04-09 170442

実際にやってみた

Terraformの準備

今回は手っ取り早くCloud Shell上でTerraformを実行することにします。カレントディレクトリ配下に以下のようなフォルダ構成を準備しました。

./terraform-google
├── modules
│   └── dataplex
│       └── dataplex_aspect_type
│           └── main.tf
│           └── provider.tf
│           └── variable.tf
└── prd
    └── main.tf
    └── variable.tf

※この段階で terraform init はしていないので .terraform や .terraform.lock.hcl は表示されておりません。

各tfファイルの内容

prd/main.tf

terraformコマンドを実行するprdフォルダのmain.tfではmodule配下に作成したリソースを呼び出すためのコードを記載しているのみです。

main.tf
module "dataplex_aspext_type" {
  source = "../modules/dataplex/dataplex_aspext_type"

  project_id = var.project_id
  region = var.region
  environment = var.environment
}

prd/variable.tf

リソース構築における変数をこのファイルで定義しています。

variable.tf
variable "project_id" {
  default = "自分のプロジェクトID" // your google project
}
variable "region" {
  default = "asia-northeast1"
}
variable "environment" {
  default = "prd"
}

module/dataplex/dataplex_aspect_type/main.tf

今回作成するDataplexアスペクトタイプの内容をこちらのファイルで定義しています。

main.tf
resource "google_dataplex_aspect_type" "test_aspect_type" {
  aspect_type_id = "aspect-type-sample01"
  project = var.project_id
  location = var.region

  labels = { "tag": "test-tf" }
  display_name = "terraform aspect type sample01"
  description = "aspect type created by Terraform"
  metadata_template = <<EOF
{
  "type": "record",
  "name": "Schema",
  "recordFields": [
    {
      "name": "data_accumulation",
      "type": "enum",
      "annotations": {
        "displayName": "Data Accumulation",
        "description": "データ更新方法"
      },
      "index": 1,
      "constraints": {
        "required": true
      },
      "enumValues": [
        {
          "name": "INSERT",
          "index": 1
        },
        {
          "name": "UPSERT",
          "index": 2
        },
        {
          "name": "REFRESH",
          "index": 3
        }
      ]
    },
    {
      "name": "data_update_frequency",
      "type": "string",
      "index": 2,
      "annotations": {
        "displayName": "Data Update Frequency",
        "description": "データ更新頻度"
      },
      "constraints": {
        "required": true
      }
    },
    {
      "name": "data_retention_period",
      "type": "string",
      "index": 3,
      "annotations": {
        "displayName": "Data retention period",
        "description": "データ保持期間"
      }
    },
    {
      "name": "case_sensitive",
      "type": "bool",
      "index": 4,
      "annotations": {
        "displayName": "Case Sensitive",
        "description": "大文字小文字の区別"
      }
    },
    {
      "name": "pii_data",
      "type": "bool",
      "index": 5,
      "annotations": {
        "displayName": "PII Data",
        "description": "個人情報の有無"
      }
    }
  ]
}
EOF
}

module/dataplex/dataplex_aspect_type/provider.tf

provider.tf
terraform {
  required_providers {
    google = {
      source  = "hashicorp/google"
      version = "~> 5.0"
    }
  }
}

provider "google" {
  project = var.project_id
  region  = var.region
}

module/dataplex/dataplex_aspect_type/variable.tf

variable.tf
variable "project_id" {}
variable "region" {}
variable "environment" {}

Terraformの実行

Google CloudのCloud Shellを開いてprdフォルダまで移動し、初期化を実行します。

terraform init

実行後 Terraform has been successfully initialized! と表示されていれば成功です。

初期化が完了したら、以下コマンドでデプロイを行います。

 terraform apply

デプロイが完了すると、以下のようにDataplexアスペクトタイプを作成することができました。

スクリーンショット 2025-04-09 184713

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.