ローカル or AWS上のどちらでも動かせるように作成してあります。
config.yamlとsecrets.tomlを作成して、以下のようなディレクトリ構成にします。
sample-data-catalog/
├ .streamlit/config.toml streamlitの背景の色などを設定
├ data-catalog.py データカタログのコード
├ requirements.txt 必要なライブラリをインストールするのに使うrequirement.txt
├ secrets.toml snowflakeの接続情報を記載する。
└ config.yaml ログイン機能用の設定を記載する。
credentials:
usernames:
[ユーザー名]:
name: [ログイン時に使うuser名を指定]
password: [パスワードをハッシュ化した文字列]
cookie:
expiry_days: 1
key: some_signature_key
name: some_cookie_nameSnowflakeの接続情報を記載します。 以下のようなファイルを作成して、user~roleまで全て記載しておきます。
[snowflake]
user =
account =
password =
warehouse =
role =AWS Secrets Managerにて、シークレットを登録しておく必要があります。
data_catalog_loginというシークレット名でシークレットを作成し、
CREDENTIALというシークレット値のシークレットを作成して、以下を登録しておきます。
"credentials":
"usernames":
"[ユーザー名]":
"name": "[ログイン時に使うuser名を指定]"
"password": "[パスワードをハッシュ化した文字列]"
"cookie":
"expiry_days": 1
"key": "some_signature_key"
"name": "some_cookie_name"snowflake_data_catalogというシークレット名でシークレットを作成し、
secrets.tomlで入力した内容と同じく、Snowflakeの接続情報を以下のシークレットキーで登録しておきます。
- USER
- ACCOUNT
- PASSWORD
- WAREHOUSE
- ROLE
tfstateを配置するためのバケットが必要です。
本サンプルコードはAmazon S3にtfstateを配置することを想定しています。
なお、terraform/tfroot/backend.tfにて、tfstateの配置場所を指定します。
以下の項目をGitHubのSecretsに設定してください。 GitHub Actionsが使用するAWSやSnowflakeの認証情報を設定します。
- AWS_REGION
- AWS_IAM_ROLE_ARN
- SNOWFLAKE_ACCOUNT
- SNOWFLAKE_REGION
- SNOWFLAKE_USER
- SNOWFLAKE_PASSWORD
以下を入力してログインします。
config.yamlやdata_catalog_loginシークレットに登録したものです。
サイドバーの以下の機能を使ってデータを検索します。
データカタログに表示するメタデータの管理を自動化する機能です。 メタデータを管理している該当のyamlを編集します。そして、GitHubのmainブランチへのマージをトリガーとしてGitHub Actionsが実行され、自動的にメタデータが更新されます。
メタデータは以下のようなフォーマットで作成してください。
name: "EMPLOYEES"
comment: "従業員マスター"
change_tracking: false
columns:
- name: "EMPLOYEE_ID"
type: "NUMBER(38,0)"
comment: "従業員のID。このテーブルの主キー。"
nullable: false
- name: "FIRST_NAME"
type: "VARCHAR(50)"
comment: "名前。"
nullable: true
- name: "LAST_NAME"
type: "VARCHAR(50)"
comment: "苗字。"
nullable: true
- name: "SALARY"
type: "NUMBER(10,2)"
comment: "給与。ドル単位で格納。"
nullable: true
- name: "HIRE_DATE"
type: "DATE"
comment: "雇用した日。日本時間にて格納。"
nullable: true- Snowflake Authenticatorについて: https://github.com/mkhorasani/Streamlit-Authenticator/blob/main/README.md

