はじめに
SnowflakeでAmazon S3上のCSVファイルを読み込もうとすると、
Storage Integration
という設定が登場します。
初めて見ると、
「External Stageと何が違うの?」
「なぜStorage Integrationが必要なの?」
と思う方も多いのではないでしょうか。
本記事では、Storage Integrationの役割やExternal Stageとの違いを図解しながら解説します。
Storage Integrationとは?
Storage Integrationとは、
SnowflakeがAmazon S3などのクラウドストレージへ安全にアクセスするための認証設定
です。
簡単に言うと、
SnowflakeとS3を安全につなぐための橋渡し役
になります。
なぜStorage Integrationが必要なの?
例えば、SnowflakeがS3上にあるCSVファイルを読み込みたいとします。
しかし、
Snowflake
│
▼
Amazon S3
この状態ではアクセスできません。
S3には、
「このアクセスは許可されているのか?」
という認証が必要だからです。
そこでStorage Integrationを利用します。
イメージ
Storage Integrationは、
IAMロールを利用してSnowflakeが安全にS3へアクセスできるようにします。
Storage Integrationには何が設定される?
主に次のような情報が設定されています。
- IAMロール
- 許可するS3バケット
- クラウドプロバイダー(AWSなど)
- 外部ストレージへのアクセス情報
つまり、
「どのS3へアクセスできるのか」
を管理する設定です。
External Stageとの違い
初心者が一番混同しやすいポイントです。
| Storage Integration | External Stage |
|---|---|
| 認証を担当 | S3の場所を指定 |
| IAMロールを利用 | CSVファイルの場所を指定 |
| 一度作れば使い回せる | 用途ごとに複数作成可能 |
イメージすると、
という役割になります。
データパイプラインではどこで使われる?
Storage Integrationは、
Snowflakeのデータパイプラインでは次の位置にあります。
Storage Integrationは、
データを保存するものでも処理するものでもありません。
External StageがS3へアクセスするために利用される認証設定です。
Storage Integrationを使うメリット
セキュリティが高い
アクセスキーをSnowflakeへ保存する必要がありません。
IAMロールによる認証を利用するため、安全に運用できます。
使い回せる
一度作成すれば、
複数のExternal Stageから利用できます。
AWS推奨の構成
現在は、
IAMロールを利用するStorage Integrationが推奨されています。
アクセスキーを直接設定する方法よりも、安全で管理しやすい構成です。
作成イメージ
Storage IntegrationはSQLで作成します。
CREATE STORAGE INTEGRATION my_s3_integration
TYPE = EXTERNAL_STAGE
STORAGE_PROVIDER = S3
ENABLED = TRUE
STORAGE_ALLOWED_LOCATIONS = ('s3://sample-bucket/');
作成後、
IAMロールとの信頼関係を設定します。
External Stageで利用する
Storage Integrationを作成したら、
External Stageから指定します。
CREATE STAGE sample_stage
URL='s3://sample-bucket/'
STORAGE_INTEGRATION=my_s3_integration
FILE_FORMAT=(TYPE=CSV);
これで、
SnowflakeはStorage Integrationを利用してS3へアクセスできるようになります。
よくある質問
Q. Storage IntegrationだけでCSVを読み込めますか?
いいえ。
Storage Integrationは認証設定です。
実際にファイルを読み込むには、
External StageやSnowpipe、COPY INTOなどを利用します。
Q. Storage Integrationは複数作成できますか?
はい。
用途ごとや環境ごと(開発・本番など)に複数作成できます。
Q. Storage Integrationは毎回作る必要がありますか?
いいえ。
一度作成すれば、
複数のExternal Stageで共有できます。
まとめ
Storage Integrationは、
SnowflakeがS3へ安全にアクセスするための認証設定です。
External StageやSnowpipeを利用する際には欠かせない重要な機能です。
ポイントのおさらい
- Storage Integrationは認証を担当する
- IAMロールを利用してS3へアクセスする
- External Stageとは役割が異なる
- 一度作成すれば複数のStageで利用できる
- AWS推奨の認証方法
Storage Integrationの役割を理解すると、Snowflakeのデータパイプライン全体の構成も理解しやすくなります。
参考
- Snowflake公式ドキュメント(Storage Integrations)
https://docs.snowflake.com/en/user-guide/data-load-s3-config-storage-integration


