3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Glue CrawlerからSnowflakeのメタデータを収集してカタログ化

Posted at

データインテグレーションサービスAWS Glueのデータカタログ生成のためのクローラー(Crawler)機能がSnowflakeをサポートしたので試してみた

何ができる?

Snowflakeに登録されたテーブル・スキーマ情報をGlue Crawlerで収集して、AWS Glue データカタログに登録できる(Glue を経由してAWS Lake Formationや Amazon DataZoneに取り込むことも可能)

構成イメージ

image.png

  • Glue CrawlerからSnowflakeのJDBCエンドポイントに接続して収集
  • 接続設定はGlue Connectionsで
  • ここではSnowflakeにはNAT経由でパブリック接続しているが、SnowflakeのBussiness Critical以上のエディションならAWS PrivateLink経由でアクセス可能

設定概要

[1] 事前準備

  • Snowflakeの接続情報(usernameとpassword)を AWS Secrets Managerに登録しておく

[2] Glue Connectionsを作成

image.png
image.png

  • Connection typeはJDBC

image.png

  • JDBC URLのフォーマット

    • jdbc:snowflake://XXXXXX.snowflakecomputing.com/?user=YYY&db=ZZZ&role=AAA
    • XXXXXはSnowflakeのアカウントから確認
      • image.png
  • Credential typeはUsername/password直打ちもできるがSecretsManagerのSecretを指定

  • Networkオプションはプライベートサブネットを指定(ENIが払い出される)

    • NATのセットアップを忘れずに

[3] Glue Crawlerを作成

image.png

  • 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時点で未対応)

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?