0
0

AWS GlueでS3からSnowflakeにデータを連携する

Last updated at Posted at 2024-02-28

はじめに

SnowflakeではSnowpipeを使用してS3からテーブルにデータを取り込むような方法がありますが、AWS Glueを使用してS3からSnowflakeにデータを連携する方法を確認するために検証した内容を記します。

前提

検証の前提として以下を実施済みの状態にしています。

  • GlueでS3にアクセスできる
    • GlueへのIAMユーザー・IAMロールの設定
    • Glueへのデフォルトサービス設定(S3へのアクセス権限を付与)
  • GlueからSnowflakeにアクセスできる(参考:Snowflake 接続
    • Snowflake上で以下を実施
      • ロール作成
      • ウェアハウスへのUSAGEアクセス権の付与
      • データベースへのUSAGEアクセス権の付与
      • スキーマへのアクセス権の付与
      • テーブルへの権限の付与
      • ユーザーの作成
      • ユーザーへのロールの付与
    • AWS上で以下を実施
      • Secrets ManagerでSnowflakeの認証情報(ユーザー名、パスワード)を使用してシークレットを作成

やってみた

  • S3にCSVファイルを準備
    image.png
サンプルファイル
ID,COL1,COL2
1,"aaa","aaaaa"
2,"bbb","bbbbb"
3,"ccc","ccccc"
4,"ddd","ddddd"
5,"eee","eeeee"
  • AWS Glue Studioでジョブを作成

    • Visual ETLを選択
      image.png

    • ジョブ名を編集
      (ここではS3toSnowTest)
      image.png

    • SourceノードとしてAmazon S3を選択
      image.png

    • 対象オブジェクトのS3 URLやData Format、引用符の種類、タイトル行有無などを入力
      image.png

    • TransformノードとしてSQL Queryを選択(何も変換なしだとつまらないので)
      image.png

    • SQLを編集
      image.png

    • TransformノードとしてSnowflakeを選択
      image.png

    • 検証前に作成済みのSnowflakeのConnection、Database、Schema、Tableを指定
      image.png

    • 実施するアクションとしては Drop and recreate target tableを選択(Snowflake側には指定したTableがない状態)
      image.png

  • AWS Glue Studioでジョブを実行

    • ジョブを保存(Save)
      image.png
    • ジョブを実行(Run)
      image.png
  • AWS Glue Studioでジョブの実行結果を確認

    • 実行後の状態を確認(→成功を確認)
      image.png
  • Snowflake側へのデータ連携結果をSnowsight(SnowflakeのWebUI)で確認

    • Glueジョブ作成時に指定したテーブルが作成されていることを確認
      image.png

    • Glueジョブ作成時に指定したSQLで抽出されたデータが反映されていることを確認
      image.png

まとめ

S3からSnowflakeへのデータ連携は、SnowSQLやSnowsightでも実施可能ですが、AWS Glue StudioでのGUI操作でも実施できることが確認できました。あくまでGUIでやりたい方、Glueに慣れている方には参考になるかと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0