Upgrade to Pro — share decks privately, control downloads, hide ads and more …

External Network Access よもやま話

Gaku TASHIRO
November 12, 2023
490

External Network Access よもやま話

2023年11月9日(金)に沖縄SnowVillageにおいて発表したLTの資料です。

Gaku TASHIRO

November 12, 2023
Tweet

Transcript

  1. ⾃⼰紹介 © 2023 Chura DATA Inc. ちゅらデータ株式会社 シニアデータエンジニア 1974年12⽉12⽇⽣まれ(48歳) 現在、埼⽟県川越市在住(フルリモート勤務)

    • 2022年9⽉ちゅらデータ株式会社にJoin • Snowflakeやdbtが好き • 2023Snowflakeユーザーグループリーダーの⼀員 2
  2. ⾃⼰紹介 © 2023 Chura DATA Inc. ちゅらデータ株式会社 シニアデータエンジニア 1974年12⽉12⽇⽣まれ(48歳) 現在、埼⽟県川越市在住(フルリモート勤務)

    • 2022年9⽉ちゅらデータ株式会社にJoin • Snowflakeやdbtが好き • 2023Snowflakeユーザーグループリーダーの⼀員 • 先⽇のDCWTではサイロマンになりました 3
  3. • External Network Accessとは • 以前の⽅式(External Function) • External Network

    Access vs External Function • External Network Accsss 使⽤シーン Agenda © 2023 Chura DATA Inc.
  4. External Network Access For Snowparkとは ※2023年11⽉現在 © 2023 Chura DATA

    Inc. 6 • Snowfalke Summit 2023@LasVagasにて発表 • UDF/UDTFやストアドプロシージャで使える • 特定の外部ネットワークに対して、セキュアにアクセス • 構築はSnowflake内で完結 • 使⽤例 • 翻訳 • Slack通知 • リバースELT • Stramlit in Snowflakeデータアプリ • データ抽出(もできなくはない)
  5. 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の取得
  6. • 変換系のAPI(翻訳など) • ⽐較的⼩さなマスターデータ系 • 抽出と取り込み(Federated Query) • データソース側がほぼ不変 •

    エラー制御等必要なら、専⾨のETLツールを • リバースETL External Network Accessの使い所 © 2023 Chura DATA Inc. 8
  7. 以前の⽅式(External Function) © 2023 Chura DATA Inc. 11 • Snowflake

    • 外部関数をSQLから • 外部 • プロキシサービスへ • リモートサービスへ転送 • 処理する(外部APIとか) • プロキシサービスへ • Snowflake • 結果を取得して表⽰
  8. 以前の⽅式(External Function)での構築は⼤変・・・・・・ © 2023 Chura DATA Inc. 12 • Snowflake側

    • 外部関数の作成 • API INTEGRATIONの設定 • SECURITY INTEGRATIONの設定 • 外部(中間) • プロキシサービスの構築(API Gateway系のサービス) • リモートサービスの環境構築 • Cloud Functionsとか、EC2の構築とか、いずれか • 適切な権限設計・設定(IAM) • 適切なネットワーク設定(IP制限など) • リモートサービス側の処理の実装 • 外部API • 外部API関連の設定やAPI KEYの取得
  9. 以前の⽅式(External Function)での構築は⼤変・・・・・・ © 2023 Chura DATA Inc. 13 • Snowflake側

    • 外部関数の作成 • API INTEGRATIONの設定 • SECURITY INTEGRATIONの設定 • 外部(中間) • プロキシサービスの構築(API Gateway系のサービス) • リモートサービスの環境構築 • Cloud Functionsとか、EC2の構築とか、いずれか • 適切な権限設計・設定(IAM) • 適切なネットワーク設定(IP制限など) • リモートサービス側の処理の実装 • 外部API • 外部API関連の設定やAPI KEYの取得 ここが⼤変!
  10. 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使⽤料 プロクシサービス使⽤料 リモートサービス使⽤料 その他 データシェア未対応
  11. 使⽤シーン 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的な使い⽅
  12. 使⽤シーン Slack通知 © 2023 Chura DATA Inc. 18 • メールでSlack通知することはできた

    • ⾒にくい︕表⽰が途中で切れる • SlackAPI⽅式だと、アラートの重要度で⾊分けも可能 • Waringなら⻩⾊ • Criticalなら⾚⾊ • 利⽤シーン • ストアドプロシージャ実⾏時に エラーが発⽣したら通知 • ⽇次レポートを通知
  13. 使⽤シーン dbt をキック © 2023 Chura DATA Inc. 19 •

    Snowpipeでデータを取り込んだ後、dbt起動させて、transferさせたくな いですか︖ • 複数のテーブル監視のTaskA, TaskB・・・・・ • ⼦TaskCで dbt APIをキック TaskA TableA取り込み TaskB TableB取り込み TaskC dbt API をKick! TaskRoot
  14. 使⽤シーン Snowflake External Network Access 〜Notion〜(truestar様) © 2023 Chura DATA

    Inc. 20 • SnowflakeUDFからNotionのテーブルに書き込み
  15. 使⽤シーン Federation Query on Bigquery (harryさん) © 2023 Chura DATA

    Inc. 21 • SnowflakeからBigQueryのデータを 取得 • 100万⾏超の2⾏データをBigQuery から取得するのに、Warehouseサイ ズXSで1分程度 • →通信サイズに制限なし︖︖ • ※外部関数はバッチあたりの最⼤応 答サイズが10MB
  16. 使⽤シーン ⾃然⾔語でSQLクエリを⽣成し、データアクセスを効率化 © 2023 Chura DATA Inc. 22 • DCWTにてDATUM

    STUDIOブースでデモ • Streamlit in SnowflakeとOpenAI APIを統合 • ⾃然⾔語でデータへ問い合わせ • 対話形式でデータが得られる