概要

Amazon S3はAWS提供のストレージサービスで、堅牢なセキュリティ、99.999999999%(イレブンナイン)を誇る高い耐久性などが特徴です。データの保管といえばDWH(データウェアハウス)が浮かびますが、それとは別にとりあえずデータを保管しておく先としてAmazon S3をデータベースとしている企業もあるかと思います。このようなストレージサービスはデータの保管は得意ですが、そのデータを分析して活用するのは得意ではありません。このようなデータをDWHへとETLするケースがあるかと思いますが、このETLの作業を助けるのがETLツールと呼ばれるツールです。

なお、ETLツールという名称は
E:Extract(抽出)
T:Transform(変換)
L:Load(格納))

の頭文字に由来しています。

ETLについて詳しく知りたい方はこちらをご覧ください。
今回はtrocco®(トロッコ)というデータ分析基盤構築サービスを使い、Amazon S3のデータをSnowflakeというDWHへ統合します。もちろん、S3をデータベースとしてデータ分析基盤を構築するということであればSnowflakeと連携したBIツールでデータの可視化へ繋げることが可能です。
なお今回データの転送手段として使用するtrocco®は、Amazon S3の他にも、様々な広告・CRM・DBなどのデータソースに対応しています。

Amazon S3のデータをSnowflakeへ転送

1. trocco®でAmazon S3 → Snowflakeの転送設定

1-0. 事前準備

今回の転送にはtrocco®のアカウント、Amazon S3とGoogle BigQueryの環境が必要になります。

trocco®は無料のトライアルも実施しているので、事前に申し込みをしておきましょう。

https://trocco.io/lp/index.html

(トライアル申し込みの際にこちらの記事を見たという旨を記載していただければ、その後のご案内がスムーズに行なえます。)

1-1. 転送設定の作成

はじめにtrocco®のトップ画面から「転送設定の新規作成」ボタンを押します。

転送元サービス、転送先サービスを選択する画面になります。

trocco®は多くのサービスをサポートしていますが、今回は転送元に「Amazon S3」、転送先に「Google BigQuery」を選択します。

「この内容で作成」ボタンを押し、設定に進みます。

1-2. 接続設定

trocco®には社内のユーザー間でチームを作成し、チームで転送設定を共有するチーム機能があります。チームの他メンバーにも転送設定の内容がわかるよう名前やメモを入力します。

1-3. Amazon S3との接続設定

はじめにAmazon S3との接続設定を行います。

「接続情報を追加」を押すと別のタブでAmazon S3との接続設定画面が開きます。

Amazon S3との接続にはAWSアクセスキーID、AWSシークレットアクセスキーが必要です。

入力したら設定を保存します。

設定を行い元の画面に戻ると画面右の▽から作成した接続情報を呼び出すことが出来るようにになります。

※トップページの「接続情報」から事前に接続設定を作成しておくことで今後は▽からすぐに呼び出すことが可能です。

1-4. Amazon S3の転送設定

まずはリージョン、バケットを選択します。

「バケット一覧を読み込む」を押すと先ほど作成した接続設定にしたがってバケットが読み込まれ、データを転送したいバケットをプルダウンから選択出来ます。

その他必要な設定を行っていきます。

1-5. Snowflakeとの接続設定

転送元のAmazon S3と同様に接続設定を行っていきます。

「接続情報を追加」ボタンを押すと別のタブで接続設定画面が開きます。

Snowflakeとの接続にはホスト名、ユーザー名とパスワードが必要です。

これらを入力して接続設定を保存します。

1-6. Snowflakeの転送設定

接続設定を呼び出し、ウェアハウス、データベース、スキーマ、テーブルをそれぞれ指定します。

少し待つと、設定に基づいてAmazon S3からデータが取得され、プレビューが作成されます。問題なければ「確認画面へ」を押して設定を保存しますが、もし取得したいデータがプレビューに表示されていなければ再度転送設定画面に戻り、設定をやり直します。

 今回は新規の設定作成なので特に確認する点はありませんが、既存の設定を編集した際にはこの画面で変更点がハイライト表示されます。trocco®には過去の設定を保存し、万が一変更によってエラーが発生してしまった際にも元の設定に復帰できるロールバック機能がありますが、確認して問題なければ「保存して適用」を押します。

1-7. スケジュール・通知設定

設定を保存すると転送設定の詳細確認画面になります。必須の設定ではありませんが、画面右上のタブから転送を自動で行う「スケジュール設定」、転送のエラーなどの際にそれを通知する「通知設定」が可能です。

「スケジュール設定」では下記のようなモーダルから転送設定のスケジューリングが可能です。

データが更新される時間帯が決まっていればそれに合わせて転送を行うことが可能です。

「通知設定」では下記のようなモーダルから転送と連動した設定が可能です。

現在はE-mail通知とSlack通知に対応しており、通知の条件もエラー時のみだけでなく転送時間が不自然に長い、転送は成功したがデータの件数が不自然などを条件にして通知することが出来ます。

1-8. 転送の実行

必要に応じてこれらの設定を行ったら転送を実行してみましょう。

2. Snowflakeでの設定

Snowflake側での操作は特に必要ありません。念のため、Snowflakeのコンソール画面からプレビューを取得してみるとたしかにデータが転送されていることが確認できます。

まとめ

いかがでしたでしょうか。trocco®を利用することでAmazon S3、Snowflakeのコンソール画面を触ることなくデータのETLが出来ました。今回はサンプルとしてごく僅かなデータを転送しましたが、数件程度の転送からテラバイト級の転送まで全く同様に転送が可能です。

またAmazon S3のデータを元にBIツールを用いたデータの可視化、分析を行いたければ同様の転送を行い、BiツールをSnowflakeと連携させることで簡単にデータ分析基盤の構築が可能です。

このような活用もぜひご検討ください。

実際にtrocco®を用いたETLを体験してみたい方は、クレジットカード不要のフリープランや無料の資料請求を実施しているので、ぜひお試しください。

hirokazu.kobayashi

慶應義塾大学卒業後、2014年より株式会社リブセンスへ入社。データエンジニアとして同社分析基盤立ち上げをリードする。2017年より現職primeNumberに入社。自社プロダクト「systemN」におけるSpark/Redshift活用等のデータエンジニアリング業務を行うかたわら、データ統合業務における工数削減が課題だと感じ、データ統合を自動化するサービス「trocco®」を立ち上げる。