
DataplexのアスペクトタイプをTerraformを使って作成してみた
データ事業本部のsutoです。
Google CloudのDataplex Catalogにおいて、アセットに対してカスタムなメタデータを付与する際にアスペクトタイプを使います。
手動でアスペクトタイプのフィールドをコンソール画面で作成していくのは面倒なので、Terraformを使って自動構築できるかやってみました。
(Terraformを触り始めてまだまだ日が浅いので、勉強のために記事にしました)
Dataplexのアスペクトタイプとは
アスペクトタイプとは、Data Catalogのタグテンプレートと同様に、アセットを使用する必要があるユーザーにわかりやすい付加情報を提供するものです。
アスペクトは、ビジネス メタデータ(データ分類など)と技術メタデータ(スキーマなど)を保存するために使用できます。
※この記事を書いている時点で、旧サービスであるData Catalogは「非推奨サービス」となり、Data Catalogで作成したリソースはDataplexのリソースとして移行する必要がありますのでご注意ください。
実際にやってみた
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配下に作成したリソースを呼び出すためのコードを記載しているのみです。
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 "project_id" {
default = "自分のプロジェクトID" // your google project
}
variable "region" {
default = "asia-northeast1"
}
variable "environment" {
default = "prd"
}
module/dataplex/dataplex_aspect_type/main.tf
今回作成するDataplexアスペクトタイプの内容をこちらのファイルで定義しています。
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
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 "project_id" {}
variable "region" {}
variable "environment" {}
Terraformの実行
Google CloudのCloud Shellを開いてprdフォルダまで移動し、初期化を実行します。
terraform init
実行後 Terraform has been successfully initialized!
と表示されていれば成功です。
初期化が完了したら、以下コマンドでデプロイを行います。
terraform apply
デプロイが完了すると、以下のようにDataplexアスペクトタイプを作成することができました。