[アップデート]Amazon Redshiftで様々なデータソースからデータをロード出来るInformatica Data Loaderが統合され使用出来るようになりました#reinvent

[アップデート]Amazon Redshiftで様々なデータソースからデータをロード出来るInformatica Data Loaderが統合され使用出来るようになりました!
2022.11.30

お疲れさまです。とーちです。

AWS re:Invent 2022 が始まり数多くのアップデートが発表されています。 本日はその中の Amazon Redshift(以後 Redshift)のアップデートの一つをお伝えします。

Redshift に Informatica Data Loader for Amazon Redshift が統合されて、Redshift のコンソールから使えるようになったというアップデートになります。

とりあえずまとめ

  • Google Cloud Storage や Salesforce など様々なデータソースから Redshift にデータをインポートできる
  • Informatica Data Loader for Amazon Redshift は無料で使えて、Redshift のコンソール画面から直接アクセスできる
  • ただしデータソースやインポート先の Redshift はインターネット経由でアクセスできる必要あり

Informatica Data Loader とは?

Informatica Data Loader はInformatica社が提供しているデータ移行ツールです。
Salesforce や Google Cloud Platform の Spanner や Google Cloud Storage、PostgreSQL 等の RDBMS といった様々なデータストアからのデータの読み取りをサポートし、対応するデータウェアハウスにデータをロード出来るツールとなっています。
Informatica Data Loader のドキュメントではデータ移行先のデータウェアハウスは Redshift の他、Google BigQuery や Snowflake Data Cloud 等もあるようです。
Informatica Data Loader for Amazon Redshift では、Informatica Data Loader の移行先データウェアハウスを Redshift のみに制限したものになっています。

ツールの動作イメージはAWS Big Data Blogの以下の図がわかりやすいかと思います。

AWS Big Data Blogより引用

実際には、Redshift にデータをロードする前に S3 にデータを一時的に格納し、そこから Redshift にロードするといった処理になっているようです。

Informatica Data Loader から各データソースや移行先データウェアハウスへはインターネット経由でのアクセスとなる点は注意が必要です。例えば Redshift ならパブリックアクセスを可能にするオプションを有効にする必要がありますし、S3 であれば、対象の S3 にアクセス出来るアクセスキーや IAM ロール等を用意するといった形です。

機能としては、単純なデータロードだけでなく、ロードするデータのフィルタリングや条件付きですがデータの差分更新といった機能も含まれており、スケジュールでデータ移行タスクを起動することなんかも出来るので、これが無料で使えるのはなかなかすごいなという印象を受けました。

以降この記事では、「Informatica Data Loader for Amazon Redshift」 のことを「Data Loader」と記載します。

試してみた

それではさっそく Data Loader を試してみようと思います。 今回は RDS for PostgreSQL から Redshift にデータを移行してみたいと思います。 RDS や Redshift の作成手順は割愛しますが、注意点として前述したように両方ともパブリックアクセスオプションをオンにしておく必要があります。
また以下ドキュメントを参考に RDS や Redshift のセキュリティグループに Data Loader のグローバル IP アドレスを許可する設定をするようにしてください。
FAQ: What are the IP addresses I need to whitelist so that Data Loader can access my sources and targets?

Redshift のコンソール画面に以下のようにInformatica Data Loaderという項目が追加されています。これをクリックします。

Informatica のサイトに遷移する旨、また Data Loader のグローバル IP をインバウンドルールで許可する必要がある旨のメッセージが表示されます。

この機能を初めて使う場合、Informatica アカウントを作成する必要があります。作成する際には名前やメールアドレス等を入力します。

AWS Big Data Blogより引用

Informatica アカウント作成後は、ログイン画面が表示されるようになるので、この画面からログインします。

ログインすると以下のようなホーム画面が表示されます。最初から日本語表記になっており親切です。

「参照」で自分が作成したデータ移行タスクを確認・編集することが出来ます。

「マイジョブ」は手動で実行したデータ移行タスクの状況を確認することが出来ます。ちなみにスケジュール実行したタスクは画面上部の「モニタ」メニューから見れるようになっています。

「新規」をクリックするとデータ移行タスクの作成を開始出来ます。 タスクの作成は以下の3ステップで行います。

  1. データソースの設定
  2. ターゲットの設定
  3. スケジュール実行の設定や通知の設定等

まずはデータソースの接続設定をします。上記の図の「新しい接続」を選ぶと以下のようにソースとして選択できる様々なデータストアが表示されます。今回はデータソースとして RDS for PostgreSQL を使うので、「PostgreSQL」を選択します。

RDS for PostgreSQL に接続するための設定をしていきます。画面の右上には設定すべき値の確認方法が分かる動画が設置されておりとても親切です。 今回は以下のような設定にしました。画面右下の「テスト」ボタンを押すことで接続テストが出来るので設定を入れたら確認してみましょう。

  • 接続名:任意の名前
  • Host Name:RDS コンソール画面で確認できるエンドポイント
  • Port:5432
  • Database:接続先データベース名
  • User Name:DB 接続するためのユーザー名
  • パスワード:DB 接続するためのパスワード

データソースからどのようにデータを読み取るかを設定していきます。
ソースパスというのが少しわかりにくいのですが、スキーマ名/オブジェクト型というフォーマットとなっており、例えば public スキーマの全てのテーブルを読み取りたい場合は、public/TABLE といった書き方になります。
また、ソースオブジェクトで「一部を含める」を選択することで特定のテーブルのみを対象とするといったことも出来ます。
画面下部の「ソースデータを微調整しますか」という設定項目では、以下の設定を行う事ができます。

  • テーブルの特定の列の除外
  • フィルタ条件の指定による行ベースのフィルタリング
  • 主キーの設定:主キーが設定されていれば、データ移行タスクの再実行時に行を一意に識別できるため行の更新をすることが出来るようになります。デフォルトでは主キーを自動で識別します。
  • ウォーターマークフィールドの設定:時刻データの列を持つようなテーブルの場合、この列をウォーターマークフィールドとして設定すれば、次回のデータ移行タスク実行時に差分のみ更新することが出来るようになります。

続いてターゲットとなる Redshift の接続設定を行っていきます。 今回は以下のような設定にしました。こちらも接続テストが出来るので確認するようにしましょう。

  • 接続名:任意の名前
  • ユーザー名:Redshift に接続するためのユーザー名
  • パスワード:Redshift に接続するためのパスワード
  • Access Key ID:データ一時保管用 S3 にアクセス出来る権限を持ったアクセスキー
  • Secret Access Key:データ一時保管用 S3 にアクセス出来る権限を持ったシークレットキー
  • JDBC URL:Redshift コンソールで確認できる JDBC URL を入力

Redshift のデータ格納先スキーマ等の設定をしていきます。path の箇所に Redshift のスキーマ名を入力します。
また詳細オプションをクリックして、データ一時保管用 S3 のバケット名を入力する必要があります。

最後にタスク名の入力やスケジュール実行したい場合はそのスケジュール情報を入力したりします。スケジュールは分単位で繰り返し実行出来たりとかなり柔軟に設定出来ます。 画面右上の「保存」ボタンを押して「実行」ボタンを押すと手動実行を開始出来ます。

こちらが実際にジョブが動いている様子になります。

ジョブが完了した後、Redshift を見てみるとデータが入っていることが確認できました。

検証している際に遭遇したエラー

最初にタスクを実行した時、タスクがエラーとなってしまいました。コンソールでエラーメッセージが確認出来たので見てみると、データソースの PostgreSQL に入っているデータに UUID というデータ型を持つ列が存在することが原因だと分かりました。
Data Loader のオンライン・ヘルプを見た限りではどの型はサポートしている、していない等の記載は見つけられなかったのですが、データ型によっては Redshift にロード出来ないものもあるようなのでご注意ください。

まとめ

Redshift の「Informatica Data Loader for Amazon Redshift」のアップデートの紹介でした。 スケジュール実行等かなり色々なことが出来るツールが無料で使えるということで、良いアップデートじゃないかと思います。 気になった方はぜひ一度使ってみて頂ければと思います。

以上、とーちでした。

参考

Simplify data loading on the Amazon Redshift console with Informatica Data Loader | AWS Big Data Blog
Amazon Redshift announces integration with Informatica Data Loader tool to accelerate data uploads at no cost
FAQ: What are the IP addresses I need to whitelist so that Data Loader can access my sources and targets?