😊

TROCCOで簡単データ転送!S3からSnowflakeへの完全ガイド

2024/12/01に公開

概要

この記事の対象者:
「とろっこ」って何?という人。TROCCOに興味あり触ってみたい人。

この記事の内容:
TROCCOを使用してAmazon S3からSnowflakeにデータを転送する手順を詳細に解説。

この記事を読むとわかること:
TROCCOのアカウント登録から、S3とSnowflakeの接続設定、データ転送の実行方法までの具体的な手順が理解できる

序説

みなさん、TROCCOはご存知でしょうか?
TROCCOは、primeNumber社が運営する日本発のデータ基盤構築・運用の支援SaaSです。
https://primenumber.com/trocco
TROCCOの主な機能として、データ転送(ETL),データマート生成 (ELT),ワークフロー作成などがGUI上で作成できます。
つまり、マウス操作だけでシステムやサービス間のデータ転送をスムーズに行うことができるのです。
TROCCOを使ったデータ転送の流れとして3つに分けられます。

  1. 接続情報を作成する(転送元接続情報→転送先接続情報)
  2. 転送設定を作成する(概要設定→転送元設定→転送先設定)
  3. 転送を実行する(手動実行 or スケジュール or ワークフロー or API)
    この流れで、今回はTROCCOを使ってAmazon S3からSnowflakeにデータを転送する具体的な手順を詳しく解説します。

準備

まずは、TROCCOの準備です。以下の流れで準備します。

  1. アカウント登録
  2. メール受信
  3. TROCCOにログイン

アカウント登録

次のリンクよりアカウントを無料で作成できます。
https://trocco.io/lp/inquiry_free.html

名前、会社、役職など書いていきます。

メール受信

アカウント登録し営業日1日以内に下記のようなメールが届きます。
(私の場合、3時間後にメールが届きました。)

TROCCOにログイン

先ほどのメールにID、組織IDが記載されているので、こちらを使ってログインします。
https://trocco.io/

ログイン後、以下のようにダッシュボードが表示されます

S3→Snowflakeの手順

以下の流れでS3からSnowflakeの転送をすることができます。

  1. 接続情報の新規追加
  2. ファイル・ストレージサービスタブからS3を選択
  3. TROCCO とS3を接続するために必要な項目を入力
  4. DWHタブから Snowflakeを選択
  5. TROCCO とSnowflakeを接続するために必要な項目を入力
  6. 転送設定を新規作成
  7. 転送元 S3 → 転送先 Snowflake と設定
  8. 転送元・転送先の設定
  9. データプレビュー・詳細設定
  10. 確認・適応
  11. 転送を実行

接続情報の新規追加

まず、ダッシュボード(https://trocco.io/) にある「接続情報」をクリックします。
接続情報を新規追加します。

ファイル・ストレージサービスタブからS3を選択

次に、上部タブの「ファイル・ストレージサービス」を選択し、
Amazon S3をクリックします。

TROCCO とS3を接続するために必要な項目を入力(その1)

まず、任意の名前を入力します。
次にAWS認証方式を「IAMロール」にします。
AWSアクセスキーIDとAWSシークレットアクセスキーはAWS上で作成する必要があります。

また「TRROCOのAWSアカウントID」と「コピーした外部ID」をコピーしてください。
次のロール作成時に使用します。

AWSアクセスキーとシークレットアクセスキー

まず、AWS(https://aws.amazon.com/jp/) にアクセスし、コンソールにサインインします。
アクセスキーとシークレットキー作成には、
ポリシーを作成し、ロールを作成することで取得ができます。

ポリシー作成

まず画面上の検索欄に[IAM]と入力し、
IAMを選択します。

次に、左端に「Access management」グループに「Policies」があるので選択します。

そして、画面上部の「ポリシーの作成」を選択します。

jsonは以下の内容を入力し、「次へ」をクリックします。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "s3:ListAllMyBuckets",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Effect": "Allow",
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::my-bucket"
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:AbortMultipartUpload",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

任意のポリシー名と説明を記入しポリシーの作成をクリックします。
今回は「trocco-policy」とします。

ロールの作成

そして、IAM/ロール/ロールを作成より、作成していきます。
選択は以下の通りにします。
信頼されたエンティティタイプ: AWSアカウント
AWSアカウント: 別のAWSアカウント
アカウントID: コピーしたTRROCOのAWSアカウントID
オプション: 外部 ID を要求する
外部ID: コピーした外部ID
「次に」をクリックします。

先ほど作成したポリシーを探し、紐づけます。

最後に任意の名前と説明を記入します。
今回は「roll-trocco」とします。

TROCCO とS3を接続するために必要な項目を入力(その2)

再び、troccoに戻ります。
先ほどの接続画面に戻り、AWSアカウントIDとIAMロール名を入力します。
AWSアカウント名は、自分のアカウント名です。
AWSの左上のアカウント名をクリックすると確認することができます。
また、先ほど作成したIAMロール名を入力します。

入力できたら、「接続を確認」をクリックします。
成功時「認証の確認」と表示されます。保存をクリックします。
もしエラーが表示された場合、どこか設定の間違いがないか再度確認の必要があります。

DWHタブから Snowflakeを選択

次に、左タブより「接続情報」を選択します。
画面上部の「DWH」を選択し、「snowflake」を選択します。

TROCCO とSnowflakeを接続するために必要な項目を入力

名前:任意の名前(今回は「テストSnowflake」とします)
ホスト:<LOCATOR>.<REGION>.<CLOUD>.snowflakecomputing.com
snowflakeのコンソール画面左下よりコピーし、前半の「https://」を削除したものです。
ユーザ名: snowflakeログイン時のユーザ名
snowflakeのコンソール画面左下より確認できます。

認証鍵生成

ターミナルを開き、以下のコマンドを実行します。
秘密鍵生成

openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt

公開鍵生成

openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub

改行と不要な箇所の除去し、公開鍵の確認

cat rsa_key.pub | \
tr -d "\n" | \
sed "s/-----BEGIN PUBLIC KEY-----//g" | \
sed "s/-----END PUBLIC KEY-----//g"

そして、snowflakeを開き、次のクエリーを実行します。
USERNAMEは、先ほど入力したユーザ名、PUBLIC_KEYは確認した公開鍵で置き換えてください

ALTER USER {USERNAME} SET RSA_PUBLIC_KEY='{PUBLIC_KEY}'

成功すると
「Statement executed successfully.」と表示されます

次に、TROCCOに戻ります。
認証方式を「キーペア認証」に設定します。
そして、秘密鍵を入力します。
秘密鍵は以下のコマンドより確認できます。

cat rsa_key.p8

転送設定を新規作成

TROCCOのホームに戻り、転送設定の新規追加をクリックします。

そして、転送元と転送先をそれぞれ「S3」と「Snowfake」に設定し、
「この内容で作成」を押して次の画面へ進みます。

転送元 S3 → 転送先 Snowflakeと設定

概要設定

転送設定の新規作成の画面が次に表示されます。
名前にテストs3_Snowflakeを入力します。
メモは任意で入力します。(s3からSnowflakeへの転送)

転送元 AmazonS3 設定

Amazon S3接続情報は、先ほど作成したS3接続情報を選択します。
新たに作成したい場合は、接続情報を追加より追加できます。
リージョンはプルダウンより選択できます。今回はTOKYOリージョンを選択します。


次に、連携するオブジェクトを指定します。
S3のバケット、パスプレフィックス、パスの正規表現を指定します。
パスプレフィックスに直接ファイル名を指定することも可能です。
今回は、
以下のcsvファイルを作成し、s3バケットに保存しました。

id,トロッコ名,乗車数,運賃,天気,場所
1,山岳トロッコ,25,500,晴れ,山岳地帯
2,海岸トロッコ,30,600,曇り,海岸線
3,森林トロッコ,20,450,雨,森林
4,都市トロッコ,40,700,晴れ,都市部
5,砂漠トロッコ,15,550,晴れ,砂漠
6,湖畔トロッコ,22,480,曇り,湖畔
7,田園トロッコ,18,400,晴れ,田園地帯
8,峡谷トロッコ,28,520,曇り,峡谷
9,湿地トロッコ,12,430,雨,湿地
10,高原トロッコ,35,650,晴れ,高原


続いて、転送元AmazonS3の設定をしていきます。
自動データ設定・カラム定義􏰀再読み込み・ スキーマ変更検知で使用するファイルは、転送元􏰀設定に基づいて 自動抽出です。
解凍形式は、非圧縮ファイルまたbzip2/gzipです。
入力ファイル形式は、CSV/TSV ヘッダー列を含むCSV/TSVファイルです。
転送方法は、全件転送です。
最後に接続を確認をクリックし、接続ができたか確認をします。

転送先 Snowflake 設定

転送先 Snowflakeの設定をしてきます。
Snowflake接続情報には、先ほど作成した Snowflake接続情報を選択します。
Snowflakeのウェハウス、データベース、スキーマはあらかじめ作成しておき、そちらを選択します。
ウェハウス、データベース、スキーマの作成については今回省略します。
https://docs.snowflake.com/ja/sql-reference/sql/create-warehouse
https://docs.snowflake.com/ja/sql-reference/sql/create-database
https://docs.snowflake.com/ja/sql-reference/sql/create-schema

今回は、事前に作成した、TROCCO_S3をスキーマとし、テーブルはtrocco_dummyとしました。
最後に接続を確認をクリックし、接続ができたか確認をします。
成功が確認できたら、最下段にある次のSTEPへをクリックします。

データプレビュー・詳細設定

次の画面に遷移すると、実行の準備が自動で開始されます。
しばらく待つと、S3にあるcsvファイルのプレビューが表示されます。
確認ができましたら、確認画面へをクリックします。

確認・適応

内容の確認画面では、今まで設定内容が yaml形式で表示されます。
確認できましたら、保存して適用をクリックします。


変更内容のメッセージを追加するポップアップが表示されます。
メッセージを追加し、保存して適用をクリックします。

転送を実行

設定が保存されると、転送設定概要画面に遷移します スクロールして中身を確認します。
転送実行方法は、下記の4つあります。

  • 手動実行
  • スケジュール
  • ワークフロー
  • API
    今回は手動実行とするため、実行をクリックします。

実行メモを追加するポップアップが表示されます。
メモを追加し、実行をクリックします。

その後、自動でジョブ実行画面に切り替わります。
しばらくすると、ステータスが変更します。
ステータスが成功になれば転送完了です。

Snowflakeで確認

最後にデータが投入されているかSnowflake上から確認します。

SELECT * FROM TROCCO_S3."trocco_dummy";

上記のクエリを実行してみると、確かに結果が帰り、転送が成功したことがわかります。

結言

この記事では、TROCCOを使用してAmazon S3からSnowflakeにデータを転送する手順を詳しく解説しました。TROCCOの直感的なインターフェースと豊富な機能を活用することで、複雑なデータ転送作業も簡単に行うことができます。これにより、データエンジニアやアナリストは、より効率的にデータの統合・分析を行うことができるでしょう。TROCCOを活用して、データ基盤の構築と運用をさらにスムーズに進めてみてください。

脱線

TROCCOは、troccoではなくて、全部大文字です。
数年前までは小文字だったみたいです、、、
あとTROCCOのスペルが「TOROCCO」になりがち、、、

参考情報

https://documents.trocco.io/docs/connection-configuration-s3

https://documents.trocco.io/docs/data-source-s3

https://us-east-1.console.aws.amazon.com/iam/home?region=ap-northeast-1#/roles/create

S3の転送可能な最大容量は以下のとおりです。
・デフォルト:200GBまで
・上限緩和:1TBまで緩和可能

ちゅらデータ株式会社

Discussion