データインテグレーションサービスAWS Glueのデータカタログ生成のためのクローラー(Crawler)機能がSnowflakeをサポートしたので試してみた
何ができる?
Snowflakeに登録されたテーブル・スキーマ情報をGlue Crawlerで収集して、AWS Glue データカタログに登録できる(Glue を経由してAWS Lake Formationや Amazon DataZoneに取り込むことも可能)
構成イメージ
- Glue CrawlerからSnowflakeのJDBCエンドポイントに接続して収集
- 接続設定はGlue Connectionsで
- ここではSnowflakeにはNAT経由でパブリック接続しているが、SnowflakeのBussiness Critical以上のエディションならAWS PrivateLink経由でアクセス可能
設定概要
[1] 事前準備
- Snowflakeの接続情報(usernameとpassword)を AWS Secrets Managerに登録しておく
[2] Glue Connectionsを作成
- Connection typeはJDBC
-
JDBC URLのフォーマット
-
Credential typeはUsername/password直打ちもできるがSecretsManagerのSecretを指定
-
Networkオプションはプライベートサブネットを指定(ENIが払い出される)
- NATのセットアップを忘れずに
[3] Glue Crawlerを作成
-
Add data source
で-
Data source
はJDBC -
Connection
は事前設定した接続設定 -
Include path
はデータベース/スキーマ/%
のフォーマットでSnowflake側の設定に応じて
-
その他
- IAM roleにはSecretsManagerへのRead権限を付与しておく
あとはCrawlerを実行するだけ
トラブルシュート
Crawlerを実行したら
Crawler cannot be started. Verify the permissions in the policies attached to the IAM role defined in the crawler
エラーが発生。
原因はGlueのConnectionsの指定したサブネットがパブリックサブネットだった(プライベートサブネット&NAT経由接続になっていなかった)ため。
エラー理由のアラートとは異なるが、構成を冒頭の形にしたことで解消。
参考)
まとめ
Glue CrawlerからSnowflakeのメタデータを収集してカタログ化できた。
たとえば、Amazon DataZoneもGlueデータカタログのメタデータを取り込めるので、DataZoneでSnowflakeのメタ情報を連携することもできる(ただし、DataZoneのSubscribe連携までは2023/6時点で未対応)