AWS Schema Conversion Tool を使用して ETL プロセスを AWS Glue に変換する
以下のセクションでは、AWS SCT を使用して ETL スクリプトを AWS Glue に変換するプロセスの概要を示しています。この例では、ソースデータベースおよびデータウェアハウスに使用される ETL プロセスとともに、Oracle データベースから Amazon Redshift への変換を行います。
トピック
次のアーキテクチャ図は、ETL スクリプトを AWS Glue に変換するデータベース移行プロジェクトの例を示しています。
前提条件
開始する前に、以下を実行します。
-
AWS に移行する予定のソースデータベースをすべて移行します。
-
ターゲットデータウェアハウスを AWS に移行します。
-
ETL プロセスに関わるすべてのコードのリストを収集します。
-
各データベースに必要なすべての接続情報のリストを収集します。
ユーザーの代わりに AWS Glue は他の AWS リソースにアクセスするためのアクセス許可が必要です。AWS Identity and Access Management (IAM) を使用してアクセス権限を提供できます。必ず、AWS Glue の IAM ポリシーを作成してください。詳細については、『AWS Glue 開発者ガイド』の「AWS Glueservice 用の「IAM ポリシーの作成」を参照してください。
AWS Glue データカタログについて
変換プロセスの一環として、AWS Glue にはソースデータベースとターゲットデータベースに関する情報が読み込まれます。この情報は、ツリーと呼ばれる構造で各種カテゴリに分類されます。この構造には、以下のものが含まれています。
-
接続 - 接続パラメータ
-
クローラー - クローラーのリスト。スキーマごとに 1 つのクローラーが割り当てられます。
-
データベース - テーブルを保持するコンテナ
-
テーブル - テーブル内のデータを表すメタデータ定義
-
ETL ジョブ - ETL 操作を実行するビジネスロジック
-
トリガー - AWS Glue で ETL ジョブを実行するタイミング (オンデマンド、スケジュール、ジョブイベントによるトリガーなど) を制御するロジック
AWS Glue データカタログは、データの場所、スキーマ、およびランタイムメトリクスへのインデックスです。AWS Glue および AWS SCT を使用する場合、 AWS Glue データカタログには AWS Glue の ETL ジョブのソースおよびターゲットとして使用されるデータへのリファレンスが含まれます。データウェアハウスを作成するには、このデータを分類します。
データカタログ内の情報は、ETL ジョブの作成と監視に使用します。一般的には、クローラーを実行してデータストア内のデータのインベントリを行いますが、データカタログにメタデータテーブルを追加する別の方法もあります。
データカタログでテーブルを定義したら、データベースに追加します。データベースは AWS Glue でテーブルを整理するために使用されます。
AWS Glue で AWS SCT を使用した変換の制限
AWS SCT では、AWS Glue を使用して変換する場合に以下の制限が適用されます。
| リソース | デフォルトの制限 |
| アカウントあたりのデータベース数 | 10,000 |
| データベースあたりのテーブル数 | 100,000 |
| テーブルあたりのパーティションの数 | 1,000,000 |
| テーブルあたりのテーブルバージョンの数 | 100,000 |
| アカウントあたりのデータベース数 | 1,000,000 |
| アカウントあたりのパーティションの数 | 10,000,000 |
| アカウントあたりのテーブルバージョンの数 | 1,000,000 |
| アカウントあたりの接続数 | 1,000 |
| アカウントあたりのクローラー数 | 25 |
| アカウントあたりのジョブの数 | 25 |
| アカウントあたりのトリガー数 | 25 |
| アカウントあたりの同時ジョブの実行数 | 30 |
| ジョブあたりの同時ジョブの実行数 | 3 |
| トリガーごとのジョブ数 | 10 |
| アカウントごとの開発エンドポイントの数 | 5 |
| 開発エンドポイントによって一度に使用される最大データ処理単位 (DPU) 数 | 5 |
| 一度にロールによって使用される最大 DPU 数 | 100 |
| データベース名の長さ |
無制限 Apache Hive など、その他のメタデータストアとの互換性を考慮して、名前は小文字に変換されます。 Amazon Athena からデータベースにアクセスする場合は、英数字とアンダースコア文字のみを使用して名前を指定してください。 |
| 接続名の長さ | 無制限 |
| クローラー名の長さ | 無制限 |
ステップ 1: 新しいプロジェクトを作成する
新しいプロジェクトを作成するには、以下の大まかな手順を実行します。
-
AWS SCT で新しいプロジェクトを作成します。詳細については、「AWS SCT でのプロジェクトの開始と管理」を参照してください。
-
ソースデータベースとターゲットデータベースをプロジェクトに追加します。詳細については、「AWS SCT でプロジェクトにサーバーを追加する」を参照してください。
ターゲットデータベースの接続設定で [AWS Glue の使用] を選択していることを確認してください。それには、[AWS Glue] タブを選択します。[AWS プロファイルからコピー] から、使用するプロファイルを選択します。プロファイルの内容が、AWS アクセスキー、シークレットキー、および Amazon S3 バケットフォルダーのフィールドに自動的に表示されます。表示されない場合は、この情報を手動で入力します。[OK] を選択すると、AWS Glue によってオブジェクトの分析が行われ、メタデータは AWS Glue データカタログにロードされます。
セキュリティ設定によっては、サーバー上の一部のスキーマに対する十分な権限がアカウントにないことを示す警告メッセージが表示される場合があります。使用するスキーマへのアクセス権がある場合は、このメッセージを無視しても問題ありません。
-
ETL をインポートする準備を完了するには、ソース データベースとターゲット データベースに接続します。そのためには、ソースまたはターゲットのメタデータツリーでデータベースを選択し、[サーバーに接続] を選択します。
AWS Glue により、ETL 変換用のデータベースがソースデータベースサーバーとターゲットデータベースサーバーに作成されます。ターゲットサーバーのデータベースには AWS Glue データカタログが格納されます。特定のオブジェクトを見つけるには、ソースまたはターゲットパネルの検索を使用します。
特定のオブジェクトの変換方法を確認するには、変換する項目を指定し、コンテキスト (右クリック) メニューから [スキーマの変換] を選択します。AWS SCT によって、スクリプトに変換されます。
変換されたスクリプトは、右側のパネルの [Scripts] (スクリプト) フォルダを選択します。現在、スクリプトは仮想オブジェクトであり、このスクリプトは、AWS SCT プロジェクトの一部としてのみ利用できます。
変換したスクリプトで AWS Glue ジョブを作成するには、スクリプトを Amazon S3 にアップロードします。スクリプトを Amazon S3 にアップロードするには、スクリプトを選択し、コンテキスト (右クリック) メニューから [S3 に保存] を選択します。
ステップ 2: AWS Glue ジョブを作成する
スクリプトを Amazon S3 に保存したら、そのスクリプトを選択して [AWS Glue ジョブの設定] を選択すると、AWS Glue ジョブを設定するためのウィザードが開きます。ウィザードを使用すると、設定を簡単に行うことができます。
-
ウィザードの最初のタブの [設計データフロー] で、実行戦略と、このジョブに含めるスクリプトのリストを選択します。各スクリプトのパラメータも選択できます。また、正しい順序で実行されるようにスクリプトを並べ替えることもできます。
-
2 番目のタブでは、ジョブに名前を付け、AWS Glue の設定を直接設定できます。この画面では、次の設定を指定できます。
-
AWS Identity and Access Management (IAM) ロール
-
スクリプトファイルの名前とファイルパス
-
Amazon S3 が管理するキーによるサーバー側の暗号化 (SSE-S3) を使用したスクリプトの暗号化
-
一時ディレクトリ
-
生成された Python ライブラリパス
-
ユーザーの Python ライブラリパス
-
依存する.jar ファイルのパス
-
参照されるファイルパス
-
実行されるジョブごとの同時 DPU
-
最大同時実行数
-
ジョブのタイムアウト (分)
-
遅延通知のしきい値 (分)
-
再試行回数
-
セキュリティ設定
-
サーバー側の暗号化
-
-
3 番目のステップ (タブ) では、ターゲットエンドポイントへの設定済みの接続を選択します。
設定が完了したジョブは、AWS Glue データカタログ内の ETL ジョブの下に表示されます。ジョブを選択すると設定が表示され、確認または編集を行うことができます。AWS Glue で新しいジョブを作成するには、ジョブのコンテキスト (右クリック) メニューから [AWS Glue ジョブの作成] を選択します。これにより、スキーマ定義が適用されます。表示を更新するには、コンテキスト (右クリック) メニューから [Refresh from database] (データベースから更新) を選択します。
この時点で、AWS Glue コンソールにジョブを表示できます。これを行うには、AWS マネジメントコンソール にサインインし、AWS Glue コンソール (https://console.aws.amazon.com/glue/
新しいジョブをテストして、正常に動作していることを確認します。そのためには、まずソーステーブルのデータを確認し、ターゲットテーブルが空であることを確認します。ジョブを実行してから、もう一度確認します。エラーログは AWS Glue コンソールから表示できます。