Amazon DataZoneでデータソースにRedshiftServerlessを追加してアセットを作成する

2023.11.20

はじめに

データアナリティクス事業本部のkobayashiです。

Amazon DataZoneがGAされRedshift Serverlessへのデータアセット連携設定がDatazoneコンソール画面上で作成することができるようになっていたので、Redshift Serverlessのテーブルデータからアセットを作成し自動収集されたテクニカルメタデータを確認してみます。

Amazon DataZoneでRedshift Serverlessからアセットを作成する

それではAmazon DataZoneでRedshift Serverlessをデータセットとしてアセットを登録してみたいと思います。手順は公式ドキュメントに記載されているので基本的にはこの手順に則って設定をいけば特に問題もなく設定できます。

Amazon DataZone quickstart with Amazon Redshift data - Amazon DataZone

Redshift Serverlessのデータですが、架空の販売データであるRedshiftのサンプルデータベースのデータ「サンプルデータベース - Amazon Redshift 」を対象にします。従ってを予めRedshift Serverlessのdevデータベースのpublicスキーマにロードしておきます。

設定手順としては以下の流れで行っていきます。

  1. Amazon DataZoneのプロジェクトに環境とプロファイルを設定する。
  2. データソースとしてRedshift Serverlessを設定してメタデータをインポートする。

それでは手順1から設定を行っていきます。

Amazon DataZoneのプロジェクトに環境とプロファイルを設定する

今回Amazon DataZoneのプロジェクトはすでに作成されている以下の状態から始めます。

データのタブに移動すると設定すべきステップが順に記載されているのでこの画面を中心に設定を行います。

はじめに環境設定が必要ですが環境設定には環境プロファイルを指定する必要があるのでプロファイルを作成を選択します。

Create an environment profile - Amazon DataZone

「環境プロファイルを作成」の画面が開くので以下を入力して「環境プロファイルの作成」ボタンを押下して作成します。

  • 名前:適切な名前を入力
  • プロジェクト:環境プロファイルを作成するプロジェクトを選択
  • ブループリント:DefaultDataWarehouseを選択
  • AWSアカウントパラメータ
    • AWSアカウント:AWSアカウントを選択
    • リージョン:AWSリージョンを選択

環境プロファイルが作成できたので次に環境を作成しますが、環境の作成の途中でSecretManagerにRedshift Serverlessの接続情報を登録しておく必要があるので先に作成しておきます。

Create a new environment - Amazon DataZone

シークレットを作成する際にAmazon DataZoneのドメインIDとプロジェクトIDが必要なのでAmazon DataZoneのコンソールの右上をクリックし、ドメインIDとプロジェクトIDをメモしておきます。

シークレットのリソースを作成します。シークレットの値はRedshift Serverlessへの接続情報を入力します。またタグは公式ドキュメントの「Create a new environment - Amazon DataZone 」を参考に以下を設定します。

  • datazone.rs.workgroup: {Redshift Serverlessのワークグループ名}:{データベース名}
  • AmazonDataZoneProject: {Amazon DataZoneのプロジェクトID}
  • AmazonDataZoneDomain: {Amazon DataZoneのプロジェクトID}

シークレットが作成できたらarnの値をメモしておきます。

それでは環境の作成に戻ります。

「環境を作成」の画面が開くので以下を入力して「環境プロファイルの作成」ボタンを押下して作成します。

  • 名前:適切な名前を入力
  • 環境プロファイル: 先に作成した環境プロファイルを選択

環境プロファイルを選択するとパラメータとしてAmazon Redshift クラスターAmazon Redshift Serverlessを選択できるようになるので以下を入力して「環境の作成」ボタンを押下して作成します。

  • AWS シークレット ARN: 先に作成したシークレットのarnを入力
  • Redshift Serverless ワークグループ名: Redshift Serverlessのワークグループ名を選択
  • データベース名: Redshift Serverlessのデータベース名を選択

ワークグループ名とデータベース名ですが、シークレット作成時にタグを適切に入力しておけば改めて入力する必要ななくシークレットのarnを入力により自動で選択されます。

環境の作成には少し時間がかかるので完了するのを待ちます。

データソースの設定とメタデータのインポート

次にデータソースとしてRedshift Serverlessを設定しテーブル情報をインポートします。

Create and run an Amazon DataZone data source for Amazon Redshift - Amazon DataZone

「新しいデータソースを作成」の画面が開くので以下を入力して「次へ」ボタンを押下して作成します。

  • 名前:適切な名前を入力
  • データソースタイプ;Amazon Redshiftを選択
  • 環境を選択: Redshift サーバーレスを選択
  • Redshiftワークグループ:Redshift Serverlessのワークグループを選択
  • シークレット:シークレットを選択
  • データベース名:データベース名を入力
  • スキーマ:スキーマ名を入力

初回作成時にはシークレットは何も登録がないため選択ができないので「シークレットを作成」を押下してRedshift Serverlessのシークレット名、ユーザー名、パスワードを入力します。

「詳細を追加」の画面に進むので今回は「次へ」ボタンを押下して進みます。検出されたテーブルをそのままカタログに公開する場合やビジネス名を自動的に作成しない場合などは設定を変更しておきます。

「スケジュールをセットアップ」の画面に進むので今回は「オンデマンドで実行」を選択して一回限りのインポートを行います。 定期的にインポートする場合はスケジュールを設定して定期的にメタデータを更新することができます。

ここまででデータソースが作成できたのでインポートを早速行ってみます。

メタデータのインポート

作成したデータソースを選択して右上の「実行」ボタンを押下します。

接続情報に問題がなければしばらくするとスキーマ配下のテーブルがインポートされます。

インポートされたアセットのうちSALESのアセット(SALES テーブル - Amazon Redshift )中身を確認してみます。

ビジネスデータのタブにはテーブル情報が表示されます。メタデータフォームにはテーブルの情報が表示されていますが、「README」「用語集の用語」「メダデータフォーム」については手動で追加・編集を行ってビジネスメタデータを管理します。

スキーマタブにはテーブル定義の情報が表示されています。「新しいデータソースを作成」の設定中の「詳細を追加」で「自動的なビジネス名の生成」を選択したため名前が自動的に生成されてそれっぽい名前になっています。意図とそぐわない名前の場合は右の編集ボタンから変更することができますし、同時に説明や用語集の用語を追加することもできます。

まとめ

Amazon DataZoneでRedshift Serverlessのテーブルデータからアセットを作成してみました。テクニカルメタデータとしてはテーブル定義の情報を自動的にインポートすることができました。ビジネスメタデータも管理画面で用語集やREADMEなど非常に管理しやすいフォームとなっていて使い勝手も良いかと思います。

最後まで読んで頂いてありがとうございました。