Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
External Network Accessよもやま話
Search
Gaku TASHIRO
November 12, 2023
0
550
External Network Access よもやま話
2023年11月9日(金)に沖縄SnowVillageにおいて発表したLTの資料です。
Gaku TASHIRO
November 12, 2023
Tweet
Share
More Decks by Gaku TASHIRO
See All by Gaku TASHIRO
Snowflake Cortex Searchについて
gak_t12
0
43
今さら聞けないdbtの基本LT
gak_t12
8
8k
データエンジニアとしてちゅらデータで働くことになった
gak_t12
1
2.3k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
328
21k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Practical Orchestrator
shlominoach
186
10k
Mobile First: as difficult as doing things right
swwweet
223
9.5k
YesSQL, Process and Tooling at Scale
rocio
172
14k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
135
33k
Become a Pro
speakerdeck
PRO
27
5.2k
The Power of CSS Pseudo Elements
geoffreycrofte
75
5.7k
Why Our Code Smells
bkeepers
PRO
336
57k
GraphQLとの向き合い方2022年版
quramy
45
14k
Speed Design
sergeychernyshev
28
870
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
7
630
Transcript
External Network Access よもやま話 © 2023 Chura DATA Inc.
⾃⼰紹介 © 2023 Chura DATA Inc. ちゅらデータ株式会社 シニアデータエンジニア 1974年12⽉12⽇⽣まれ(48歳) 現在、埼⽟県川越市在住(フルリモート勤務)
• 2022年9⽉ちゅらデータ株式会社にJoin • Snowflakeやdbtが好き • 2023Snowflakeユーザーグループリーダーの⼀員 2
⾃⼰紹介 © 2023 Chura DATA Inc. ちゅらデータ株式会社 シニアデータエンジニア 1974年12⽉12⽇⽣まれ(48歳) 現在、埼⽟県川越市在住(フルリモート勤務)
• 2022年9⽉ちゅらデータ株式会社にJoin • Snowflakeやdbtが好き • 2023Snowflakeユーザーグループリーダーの⼀員 • 先⽇のDCWTではサイロマンになりました 3
• External Network Accessとは • 以前の⽅式(External Function) • External Network
Access vs External Function • External Network Accsss 使⽤シーン Agenda © 2023 Chura DATA Inc.
External Network Accessとは © 2023 Chura DATA Inc.
External Network Access For Snowparkとは ※2023年11⽉現在 © 2023 Chura DATA
Inc. 6 • Snowfalke Summit 2023@LasVagasにて発表 • UDF/UDTFやストアドプロシージャで使える • 特定の外部ネットワークに対して、セキュアにアクセス • 構築はSnowflake内で完結 • 使⽤例 • 翻訳 • Slack通知 • リバースELT • Stramlit in Snowflakeデータアプリ • データ抽出(もできなくはない)
External Network Access の構築は簡単︕ © 2023 Chura DATA Inc. 7
• Snowflake側 1. Snowflake Secretsの設定 2. ネットワークルールの作成 3. External Access Integrationの作成 4. UDF/UDTF, ストアドプロシージャの処理の実装 5. 呼び出し • 外部API • 外部API関連の設定やAPI KEYの取得
• 変換系のAPI(翻訳など) • ⽐較的⼩さなマスターデータ系 • 抽出と取り込み(Federated Query) • データソース側がほぼ不変 •
エラー制御等必要なら、専⾨のETLツールを • リバースETL External Network Accessの使い所 © 2023 Chura DATA Inc. 8
• ⼤きなデータはあまりおすすめできない • マイクロパーティションによる最適化やキャッシュは期待できない • Snowflake、外部API、通信コストも⾼くなる External Network Accessの制約︖ ©
2023 Chura DATA Inc. 9
以前の⽅式(External Function) © 2023 Chura DATA Inc.
以前の⽅式(External Function) © 2023 Chura DATA Inc. 11 • Snowflake
• 外部関数をSQLから • 外部 • プロキシサービスへ • リモートサービスへ転送 • 処理する(外部APIとか) • プロキシサービスへ • Snowflake • 結果を取得して表⽰
以前の⽅式(External Function)での構築は⼤変・・・・・・ © 2023 Chura DATA Inc. 12 • Snowflake側
• 外部関数の作成 • API INTEGRATIONの設定 • SECURITY INTEGRATIONの設定 • 外部(中間) • プロキシサービスの構築(API Gateway系のサービス) • リモートサービスの環境構築 • Cloud Functionsとか、EC2の構築とか、いずれか • 適切な権限設計・設定(IAM) • 適切なネットワーク設定(IP制限など) • リモートサービス側の処理の実装 • 外部API • 外部API関連の設定やAPI KEYの取得
以前の⽅式(External Function)での構築は⼤変・・・・・・ © 2023 Chura DATA Inc. 13 • Snowflake側
• 外部関数の作成 • API INTEGRATIONの設定 • SECURITY INTEGRATIONの設定 • 外部(中間) • プロキシサービスの構築(API Gateway系のサービス) • リモートサービスの環境構築 • Cloud Functionsとか、EC2の構築とか、いずれか • 適切な権限設計・設定(IAM) • 適切なネットワーク設定(IP制限など) • リモートサービス側の処理の実装 • 外部API • 外部API関連の設定やAPI KEYの取得 ここが⼤変!
External Network Accsss vs External Function © 2023 Chura DATA
Inc.
External Network Access vs External Function⽅式 © 2023 Chura DATA
Inc. 15 External Network Access External Function⽅式 構築 ◯ X Snowflakeでほぼ完結 プロキシサービス、リモートサービスを 外部で⽤意が必要 対応⽅式 ◯ △ UDF,ストアドプロシージャ UDFのみ 対応⾔語 ◯ ◎ Python、Scala、Java なんでもOK、⾃由度⾼し 応答サイズ ? △ (制限は⾒当たらず) バッチ最⼤10MB コスト ◯ △ Snowflake Warehouse データ転送 外部API使⽤料 Snowflake Warehouse データ転送 外部API使⽤料 プロクシサービス使⽤料 リモートサービス使⽤料 その他 データシェア未対応
External Network Accsss 使⽤シーン © 2023 Chura DATA Inc.
使⽤シーン Google Translate API (Snowflake Example) © 2023 Chura DATA
Inc. 17 https://docs.snowflake.com/en/developer-guide/external- network-access/external-network-access-examples 実装するための⼿順あり、まずこれを参考に 本例は、Function的な使い⽅
使⽤シーン Slack通知 © 2023 Chura DATA Inc. 18 • メールでSlack通知することはできた
• ⾒にくい︕表⽰が途中で切れる • SlackAPI⽅式だと、アラートの重要度で⾊分けも可能 • Waringなら⻩⾊ • Criticalなら⾚⾊ • 利⽤シーン • ストアドプロシージャ実⾏時に エラーが発⽣したら通知 • ⽇次レポートを通知
使⽤シーン dbt をキック © 2023 Chura DATA Inc. 19 •
Snowpipeでデータを取り込んだ後、dbt起動させて、transferさせたくな いですか︖ • 複数のテーブル監視のTaskA, TaskB・・・・・ • ⼦TaskCで dbt APIをキック TaskA TableA取り込み TaskB TableB取り込み TaskC dbt API をKick! TaskRoot
使⽤シーン Snowflake External Network Access 〜Notion〜(truestar様) © 2023 Chura DATA
Inc. 20 • SnowflakeUDFからNotionのテーブルに書き込み
使⽤シーン Federation Query on Bigquery (harryさん) © 2023 Chura DATA
Inc. 21 • SnowflakeからBigQueryのデータを 取得 • 100万⾏超の2⾏データをBigQuery から取得するのに、Warehouseサイ ズXSで1分程度 • →通信サイズに制限なし︖︖ • ※外部関数はバッチあたりの最⼤応 答サイズが10MB
使⽤シーン ⾃然⾔語でSQLクエリを⽣成し、データアクセスを効率化 © 2023 Chura DATA Inc. 22 • DCWTにてDATUM
STUDIOブースでデモ • Streamlit in SnowflakeとOpenAI APIを統合 • ⾃然⾔語でデータへ問い合わせ • 対話形式でデータが得られる
EOL © 2023 Chura DATA Inc. 23 ご清聴ありがとう ございました︕︕︕