【Snowflake】Snowflake ~ ストレージ統合 ~

■ はじめに

Snowflakeのストレージ統合(Storage Integration)について
予習をする

目次

【1】ストレージ統合(Storage Integration)
【2】利点
【3】基本操作
 1)ストレージ統合作成
 2)ストレージ統合確認
 3)ストレージ統合の一覧表示
【4】権限付与
【5】その他の操作
 1)変更

【1】ストレージ統合(Storage Integration)

https://docs.snowflake.com/ja/sql-reference/sql/create-storage-integration.html

より抜粋
~~~~~
外部クラウドストレージ用に生成されたIDおよび
アクセス管理(IAM)エンティティを許可またはブロックされたストレージの場所
(Amazon S3、Google Cloud Storage、またはMicrosoft Azure)の
オプションセットとともに格納するSnowflakeオブジェクト
~~~~~
 => 分かりづれ、、、
 => クラウドストレージ(S3/Google Cloud Storage/Microsoft Azure)と
  Snowflakeとを接続するためのオブジェクト
 => クラウドストレージにアクセスする際には、
  この「ストレージ統合」を経由して、接続する

【2】利点

1)ステージの作成時/データのロードまたはアンロード時に
  認証情報の提供を回避できる
 => データのロードまたはアンロードについては、
  以下の関連記事を参照のこと

Snowflake ~ 基本編 / データロード ~
https://dk521123.hatenablog.com/entry/2021/11/15/221245
Snowflake ~ データ アンロード ~
https://dk521123.hatenablog.com/entry/2022/07/04/172738

【3】基本操作

1)ストレージ統合作成

https://docs.snowflake.com/ja/sql-reference/sql/create-storage-integration.html

-- AWS/S3の場合
CREATE STORAGE INTEGRATION 【ストレージ統合名】
    TYPE = EXTERNAL_STAGE
    STORAGE_PROVIDER = S3
    ENABLED = TRUE
    STORAGE_AWS_ROLE_ARN = 'arn:aws:iam::【S3のAWSアカウントID】:role/【ロール名】'
    STORAGE_ALLOWED_LOCATIONS = ('s3://【S3のバケット名】/【パス】/')
;

STORAGE_AWS_ROLE_ARN

* S3バケットに対する権限を付与するIAMロールのARN

STORAGE_ALLOWED_LOCATIONS

* ストレージの場所(S3バケットなど。複数指定可能)

2)ストレージ統合確認

https://docs.snowflake.com/ja/sql-reference/sql/desc-integration.html

DESC INTEGRATION 【ストレージ統合名】;

補足

* アクセス制限がどのようにされているかが確認できる
# PROPERTY Value
1 ENABLED true
2 STORAGE_PROOVIDER s3
3 STORAGE_ALLOWED_LOCATIONS s3://your-bucket
4 STORAGE_VLOCKED_LOCATIONS

3)ストレージ統合の一覧表示

https://docs.snowflake.com/ja/sql-reference/sql/show-integrations.html

SHOW INTEGRATIONS;

SHOW INTEGRATIONS LIKE '【絞り込みたいパターン】' ;
-- SHOW INTEGRATIONS LIKE 'demo%'

【4】権限付与

-- 使用権限付与
GRANT USAGE
  ON INTEGRATION <your_integration_name>
  TO ROLE <your_role>;

-- 所有権付与
GRANT OWNERSHIP
   ON INTEGRATION <your_integration_name>
  TO ROLE <your_owner_role>
  COPY CURRENT GRANTS; 

https://docs.snowflake.com/ja/sql-reference/sql/grant-privilege.html
https://docs.snowflake.com/ja/sql-reference/sql/grant-ownership.html

【5】その他の操作

1)変更

-- alter storage integration <your_integ> set <item> = <value>;
alter storage integration myint set enabled = true;

https://docs.snowflake.com/ja/sql-reference/sql/alter-storage-integration.html

参考文献

https://dev.classmethod.jp/articles/snowflake-s3-integration-by-cfn/
https://blog.serverworks.co.jp/snowflake-import-from-s3
https://dmscube.com/view/post/0/38558

関連記事

Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / データロード ~
https://dk521123.hatenablog.com/entry/2021/11/15/221245
Snowflake ~ データ アンロード ~
https://dk521123.hatenablog.com/entry/2022/07/04/172738
Snowflake ~ テストデータ作成 / generator ~
https://dk521123.hatenablog.com/entry/2022/06/20/095659