概要
- Snowflake 管理者「固定 IP しかダメ」
VM 作って Self-hosted IR を立てて接続
- Snowflake が 固定送信元 IP(IP Allowlist)しか許さない場合
- VM に Self-hosted Integration Runtime(IR)を立てて固定 Public IP で接続
- Snowflake が Private Endpoint(PrivateLink)を使えるなら、ADF のマネージド環境(Managed VNet + Private Endpoint)を使ってお気楽接続な筈。
IR install もあって、しかも script からやると escape で躓き易いので手動でやったほうが楽じゃないかと思ってします・・けど、IaC 化したいし・・ね
何が起きたか
- 目的:ADF に Snowflake からパイプラインでデータを流す。
- Snowflake 管理者に「接続方法の許可はい?」と聞いたら答えは「固定 IP のみ」。
- 一応「Private Endpoint(PE)は?」 → 管理者「ダメ」
- 解決策:VM(Windows)を用意して Self-hosted IR をインストール。VM に静的 Public IP を付け、Snowflake 側で Allowlist に登録してもらう
開発時と、本番で、静的IP2つもいるし、面倒・・ ![]()
Self-hosted IR を選んだ理由
- Self-hosted IR は ADF とプライベートネットワーク間のブリッジ役。公式ドキュメント参照のこと。
- 主な理由:
- Snowflake が IP Allowlist で接続元を限定 → 送信元 IP を固定化する必要あり
- VM に Public IP を付ければその IP を Snowflake に登録できる
- Self-hosted IR は Windows ベースの MSI インストーラで配布され、VM 自動インストールが容易
Private Endpoint を使えれば?
- 固定 IP 要らないので、VM も不要(もっと良い方法もあったのかもしれないけど
- セルフホスト IR も不要
代替案
- NAT Gateway / Azure Firewall を使って VNet のアウトバウンド IP を固定化する方法もあったけど、比較検討時は、微妙にこっちのほうが高そうだったので VM 案にした
移行時の落とし穴
- EncodedCommand を UTF-8 で渡して VM 上の PowerShell が文字化け → スクリプト失敗(地味にハマる)
用意して助かったもの
- msiexec の ExitCode やインストーラのログを VM 側に残す仕組み
- IR のオンライン確認を自動化(
az datafactory integration-runtime showで状態確認)
あとがき
IaC をしつつ ADF を試していたんだけど、別件でひと月以上離れてたらだいぶ忘れてまいった・・。
ちゃんと、IaC 仕上げてからであればよかったんだけど・・ ![]()
ADF 上の Pipeline も消えちゃってるようにみえるし・・。さて戻せるかどうか・・ ![]()
公式ドキュメント
- Azure Data Factory: Create and configure a self-hosted integration runtime
- ADF Integration Runtime 概念(IR の種類について)
- Snowflake Docs(Private connectivity / Network Policies を検索)