はじめに
SnowflakeではSnowpipeを使用してS3からテーブルにデータを取り込むような方法がありますが、AWS Glueを使用してS3からSnowflakeにデータを連携する方法を確認するために検証した内容を記します。
前提
検証の前提として以下を実施済みの状態にしています。
- GlueでS3にアクセスできる
- GlueへのIAMユーザー・IAMロールの設定
- Glueへのデフォルトサービス設定(S3へのアクセス権限を付与)
- GlueからSnowflakeにアクセスできる(参考:Snowflake 接続)
- Snowflake上で以下を実施
- ロール作成
- ウェアハウスへのUSAGEアクセス権の付与
- データベースへのUSAGEアクセス権の付与
- スキーマへのアクセス権の付与
- テーブルへの権限の付与
- ユーザーの作成
- ユーザーへのロールの付与
- AWS上で以下を実施
- Secrets ManagerでSnowflakeの認証情報(ユーザー名、パスワード)を使用してシークレットを作成
- Snowflake上で以下を実施
やってみた
サンプルファイル
ID,COL1,COL2
1,"aaa","aaaaa"
2,"bbb","bbbbb"
3,"ccc","ccccc"
4,"ddd","ddddd"
5,"eee","eeeee"
-
AWS Glue Studioでジョブを作成
-
AWS Glue Studioでジョブを実行
-
AWS Glue Studioでジョブの実行結果を確認
-
Snowflake側へのデータ連携結果をSnowsight(SnowflakeのWebUI)で確認
まとめ
S3からSnowflakeへのデータ連携は、SnowSQLやSnowsightでも実施可能ですが、AWS Glue StudioでのGUI操作でも実施できることが確認できました。あくまでGUIでやりたい方、Glueに慣れている方には参考になるかと思います。