---
title: 【Snowflake×Notion】外部アクセス統合でSnowflakeからNotionAPIを実行しデータベース情報を取得する
description: Snowflakeの外部アクセス統合(External Access Integration)を作成することで、様々な外部APIを実行することができます。本記事ではSnowflakeからNotionAPIを実行しデータベース情報を取得する方法を紹介します。
image: https://knowledge.insight-lab.co.jp/hubfs/integration_snowflake_notion.png
---

![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png)

![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png?width=400&height=110&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF.png)

[![お問い合わせ](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/c64a7bb0-e32a-499b-851b-b4e7a66da275.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/c64a7bb0-e32a-499b-851b-b4e7a66da275)

<https://knowledge.insight-lab.co.jp/snowflake/-external_access_integration_notion_api#tmpmodule_159357067471898>

- [Snowflakeとは](https://service.insight-lab.co.jp/snowflake)
- [SNOWFLAKEナレッジ](https://knowledge.insight-lab.co.jp/snowflake)
- [お役立ち資料](https://download.insight-lab.co.jp/snowflake/download)

###### 5 分で読むことができます

# [【Snowflake×Notion】外部アクセス統合でSnowflakeからNotionAPIを実行しデータベース情報を取得する](https://knowledge.insight-lab.co.jp/snowflake/-external_access_integration_notion_api)

 執筆者 [uta](https://knowledge.insight-lab.co.jp/snowflake/author/uta) 更新日時 2023年10月11日

###### Topics: [snowflake](https://knowledge.insight-lab.co.jp/snowflake/tag/snowflake) [Notion](https://knowledge.insight-lab.co.jp/snowflake/tag/notion) [api](https://knowledge.insight-lab.co.jp/snowflake/tag/api)

![](https://knowledge.insight-lab.co.jp/hubfs/integration_snowflake_notion.png)

 目次

こんにちは、utaです。  
先月公開されたミステリー映画を観てからというもの、ドラマ鑑賞にすっかりハマってしまいました...。ドラマを観つつ、先月パブリックプレビューとなったSnowflakeの外部アクセス統合(External Access Integration)を試してみたので紹介したいと思います。

## はじめに

---

Snowflakeの「外部アクセス統合」という機能をご存知でしょうか？

外部アクセス統合とは、Snowflakeの**UDFやプロシージャから外部APIの実行を可能にする**ためのオブジェクトです。接続方法や認証情報といった制限管理も簡単かつ柔軟に行うことができ、データ取得やデータ配信をSnowflake上で完結できます。

本記事では、NotionAPIを例にNotionデータベースのデータをjson形式で取得しますが、他のAPIも実行することも可能です。各オブジェクトの簡単な説明も含めているので、皆さんのよく使うAPIで試してみてください。

 

## 環境

---

- snowsight（Snowflake UI）

 

## 事前準備

---

- Notion Integration設定
- Notion Database IDの取得

![notion_database](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/notion_database.png?width=1089&height=328&name=notion_database.png)  
↑取得するNotionデータベース（サンプル）

 

## 用語

---

本ナレッジで出てくる用語のざっくりとした説明を載せておきます。

### Secret

外部API認証で使用する認証情報を保存するSnowflakeオブジェクト。  
（スキーマレベルオブジェクト）  
[https://docs.snowflake.com/ja/user-guide/api-authentication](https://docs.snowflake.com/ja/user-guide/api-authentication)

### Network Rule

外部ネットワークへのアクセス方法や接続先を、許可またはブロックするルールを定義したSnowflakeオブジェクト。  
（スキーマレベルオブジェクト）  
[https://docs.snowflake.com/en/sql-reference/sql/create-network-rule](https://docs.snowflake.com/en/sql-reference/sql/create-network-rule)

### External Access Integration

外部アクセス統合にSecretの認証情報とNetwork Ruleのアクセス方法に従い、ユーザー定義関数 (UDF) およびストアド プロシージャから外部ネットワークにアクセスを有効にすることができます。  
（アカウントオブジェクト）  
[https://docs.snowflake.com/en/sql-reference/sql/create-external-access-integration](https://docs.snowflake.com/en/sql-reference/sql/create-external-access-integration)

 

## 使用例

---

 

### Secretの作成

NotionAPIは、Notionで生成したシークレットトークンとデータベースIDでアクセスするので、typeはgeneric\_stringでsecret\_stringにNotionのインテグレーション作成で生成されたトークンを設定します。

| **設定項目** | **設定内容** |
| --- | --- |
| type | 認証情報のタイプ |
| secret\_string | シークレットキーの文字列 |

[https://docs.snowflake.com/ja/sql-reference/sql/create-secret](https://docs.snowflake.com/ja/sql-reference/sql/create-secret)

 

### Network Ruleの作成

NotionAPIは、Snowflake側からNotionのドメインに向けてリクエストを送信してデータベース情報を取得します。typeはhost\_post、value\_listはドメイン、modeはegressを設定します。

` `

| **設定項目** | **設定内容** |
| --- | --- |
| type | 認証方式 |
| value\_list | 外部APIドメイン |
| mode | アクセス方法 |

[https://docs.snowflake.com/en/sql-reference/sql/create-network-rule](https://docs.snowflake.com/en/sql-reference/sql/create-network-rule)

 

### External Access Integrationの作成

UDFからNotionAPIを呼び出すため、外部アクセス統合を作成します。さきほど作成したシークレットとネットワークルールをそれぞれ、**allowed\_network\_rules** と**allowed\_authentication\_secrets** に設定します。また、この統合を有効な状態にするためenabledは**true**に設定しています。

` `

※アカウントオブジェクトのためaccountadminを使用しています

| **設定項目** | **設定内容** |
| --- | --- |
| allowed\_network\_rules | 外部アクセス統合に適用するネットワークルール |
| allowed\_authentication\_secrets | 外部アクセス統合での接続に使用するシークレット |
| enabled | 外部アクセス統合の有効化 |

[https://docs.snowflake.com/en/sql-reference/sql/create-external-access-integration](https://docs.snowflake.com/en/sql-reference/sql/create-external-access-integration)

 

### UDFの作成

Python UDFを定義し、引数にデータベースIDを設定して、外部アクセス統合を経由してNotionへリクエストを送信し返ってきたjson形式のデータベース情報を返します。

| **設定項目** | **設定内容** |
| --- | --- |
| handler | UDFが呼び出されたときに実行される関数 |
| external\_access\_integrations | UDFから外部ネットワークにアクセスするために使用する外部アクセス統合 |
| packages | UDFで使用するパッケージを設定（一部） |
| secrets | このUDFから外部ネットワークへのアクセスで使用するシークレット |

 

### APIの実行

引数に取得したいデータベースのデータベースIDを指定して関数を実行すると、json形式でデータベース情報が返ってきます。（NotionAPIから返ってくる半構造化データはかなり複雑なので展開するのは結構大変です）

![function_notion_database](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/function_notion_database.png?width=1920&height=487&name=function_notion_database.png)  
↑関数の実行結果

 

## おわりに

---

外部アクセス統合を使用することで、これまで外部環境で実行していた外部APIをSnowflakeから実行できました。APIの実行には、ロールで管理できるスキーマレベルオブジェクトのシークレットとネットワークルールを使用しているため、安全かつ管理しやすいものとなっています。

シークレットにはトークン以外でもユーザ名+パスワードでの設定も可能です。ネットワークルールでは「外から内」だけでなく「内から外」といったアクセス設定も可能なので、利用できるAPIサービスはかなり多いと思います。

データ分析基盤を運用するうえで、APIは少なからず関わってくる要素の一つだと思うので、Snowflakeから簡単に利用できる外部アクセス統合をぜひ使ってみてください！！

Snowflakeを体験してみませんか？

INSIGHT LABではSnowflake紹介セミナーを定期開催しています。Snowflakeの製品紹介だけでなく、デモンストレーションを通してSnowflakeのシンプルなUI操作や処理パフォーマンスの高さを体感いただけます。

[![詳細はこちら](https://hubspot-no-cache-na2-prod.s3.amazonaws.com/cta/default/5935783/0d0b0d86-fdb7-4351-ab14-d482c854defc.png)](https://hubspot-cta-redirect-na2-prod.s3.amazonaws.com/cta/redirect/5935783/0d0b0d86-fdb7-4351-ab14-d482c854defc)

- [Tweet](https://twitter.com/share)

![uta](https://knowledge.insight-lab.co.jp/hubfs/IMG_4095.jpg)

#### 執筆者 [uta](https://knowledge.insight-lab.co.jp/snowflake/author/uta)

野良猫を見かけると追わずにはいられません。

###### [前の投稿](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce)

[![【Snowflake】新機能「Streamlit in Snowflake」とは何者か！？](https://knowledge.insight-lab.co.jp/hubfs/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%BC%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%83%E3%83%88%202023-09-20%20110420.png)](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce)

###### [【Snowflake】新機能「Streamlit in Snowflake」とは何者か！？](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce)

###### [次の投稿](https://knowledge.insight-lab.co.jp/snowflake/-apache-kafkasnowflake-ストリーミング処理について)

[![](https://knowledge.insight-lab.co.jp/hubfs/Kafka_Vendor_Product_Logo.svg)](https://knowledge.insight-lab.co.jp/snowflake/-apache-kafkasnowflake-ストリーミング処理について)

###### [【Apache Kafka×Snowflake】ストリーミング処理をサクッと試してみた](https://knowledge.insight-lab.co.jp/snowflake/-apache-kafkasnowflake-ストリーミング処理について)

RECOMMEND こちらの記事も人気です。

<https://knowledge.insight-lab.co.jp/snowflake/pricing>

###### 4 分で読むことができます。

##### [Snowflakeの料金体系｜クレジットと費用最適化のポイントをご紹介](https://knowledge.insight-lab.co.jp/snowflake/pricing)

###### 2021年 6月 28日

<https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline>

###### 12 分で読むことができます。

##### [【Snowflake×dbt】データパイプライン構築](https://knowledge.insight-lab.co.jp/snowflake/dbt-data-pipeline)

###### 2022年 6月 17日

<https://knowledge.insight-lab.co.jp/snowflake/snowsight-executive-dashboard>

###### 1 分で読むことができます。

##### [Snowsightでどこまでできるか！？限界に挑戦！](https://knowledge.insight-lab.co.jp/snowflake/snowsight-executive-dashboard)

###### 2023年 12月 14日

<https://knowledge.insight-lab.co.jp/snowflake/snowflake-vs-treasuredata>

###### 5 分で読むことができます。

##### [【禁断の比較？】SnowflakeとTreasure Dataを比べてみました](https://knowledge.insight-lab.co.jp/snowflake/snowflake-vs-treasuredata)

###### 2021年 5月 24日

<https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce>

###### 5 分で読むことができます。

##### [【Snowflake】新機能「Streamlit in Snowflake」とは何者か！？](https://knowledge.insight-lab.co.jp/snowflake/-snowflake-streamlit-in-snowflake-introduce)

###### 2023年 9月 21日

<https://knowledge.insight-lab.co.jp/snowflake/function-get-ddl>

###### 2 分で読むことができます。

##### [【Snowflake】get\_ddl関数でオブジェクトの定義を取得して再利用する](https://knowledge.insight-lab.co.jp/snowflake/function-get-ddl)

###### 2020年 7月 28日

##### 運営会社

運営会社

- [会社概要](https://insight-lab.co.jp/about/)
- [お問い合わせ](https://contact.insight-lab.co.jp/main)

##### メニュー

メニュー

- [Snowflakeとは](https://service.insight-lab.co.jp/snowflake)
- [Snowflakeナレッジ](https://knowledge.insight-lab.co.jp/snowflake)
- [お役立ち資料](https://download.insight-lab.co.jp/snowflake/download)

[![INSIGHT LAB](https://knowledge.insight-lab.co.jp/hs-fs/hubfs/INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png?width=200&height=55&name=INSIGHT%20LAB_%E6%96%87%E5%AD%97%E3%81%AE%E3%81%BF_WHT-1.png "INSIGHT LAB")](https://www.insight-lab.co.jp/)

- [プライバシーポリシー](https://www.insight-lab.co.jp/privacy.html)

Copyright © 2020 INSIGHT LAB, Inc.

<https://twitter.com/INSIGHTLAB_INC><https://www.youtube.com/channel/UCOKNKiO4uuza4NioSZpBMhg>