TROCCOで簡単データ転送!S3からSnowflakeへの完全ガイド
概要
この記事の対象者:
「とろっこ」って何?という人。TROCCOに興味あり触ってみたい人。
この記事の内容:
TROCCOを使用してAmazon S3からSnowflakeにデータを転送する手順を詳細に解説。
この記事を読むとわかること:
TROCCOのアカウント登録から、S3とSnowflakeの接続設定、データ転送の実行方法までの具体的な手順が理解できる。
序説
みなさん、TROCCOはご存知でしょうか?
TROCCOは、primeNumber社が運営する日本発のデータ基盤構築・運用の支援SaaSです。
TROCCOの主な機能として、データ転送(ETL),データマート生成 (ELT),ワークフロー作成などがGUI上で作成できます。
つまり、マウス操作だけでシステムやサービス間のデータ転送をスムーズに行うことができるのです。
TROCCOを使ったデータ転送の流れとして3つに分けられます。
- 接続情報を作成する(転送元接続情報→転送先接続情報)
- 転送設定を作成する(概要設定→転送元設定→転送先設定)
-
転送を実行する(手動実行 or スケジュール or ワークフロー or API)
この流れで、今回はTROCCOを使ってAmazon S3からSnowflakeにデータを転送する具体的な手順を詳しく解説します。
準備
まずは、TROCCOの準備です。以下の流れで準備します。
- アカウント登録
- メール受信
- TROCCOにログイン
アカウント登録
次のリンクよりアカウントを無料で作成できます。
名前、会社、役職など書いていきます。
メール受信
アカウント登録し営業日1日以内に下記のようなメールが届きます。
(私の場合、3時間後にメールが届きました。)
TROCCOにログイン
先ほどのメールにID、組織IDが記載されているので、こちらを使ってログインします。
ログイン後、以下のようにダッシュボードが表示されます
S3→Snowflakeの手順
以下の流れでS3からSnowflakeの転送をすることができます。
- 接続情報の新規追加
- ファイル・ストレージサービスタブからS3を選択
- TROCCO とS3を接続するために必要な項目を入力
- DWHタブから Snowflakeを選択
- TROCCO とSnowflakeを接続するために必要な項目を入力
- 転送設定を新規作成
- 転送元 S3 → 転送先 Snowflake と設定
- 転送元・転送先の設定
- データプレビュー・詳細設定
- 確認・適応
- 転送を実行
接続情報の新規追加
まず、ダッシュボード(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のウェハウス、データベース、スキーマはあらかじめ作成しておき、そちらを選択します。
ウェハウス、データベース、スキーマの作成については今回省略します。
今回は、事前に作成した、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」になりがち、、、
参考情報
S3の転送可能な最大容量は以下のとおりです。
・デフォルト:200GBまで
・上限緩和:1TBまで緩和可能
Discussion