ETL ジョブでの MongoDB 接続の操作 - AWS Glue

ETL ジョブでの MongoDB 接続の操作

MongoDB の接続を作成し、その接続を AWS Glue ジョブで使用します。詳細については、「AWS Glue プログラミングガイド」の「MongoDB 接続」を参照してください。接続の urlusername、および password は MongoDB 接続に保存されます。ETL ジョブスクリプトで glueContext.getCatalogSource という additionalOptions パラメータを使用して、その他のオプションを指定できます。その他のオプションには次のようなものがあります。

  • database: (必須) 読み込み元の MongoDB データベース。

  • collection: (必須) 読み込み元の MongoDB コレクション。

ETL ジョブスクリプト内に database および collection 情報を書き込むと、複数のジョブに同じ接続を使用できます。

  1. AWS Glue Data Catalog 接続を MongoDB データソース用に作成します。接続パラメータの説明については、「"connectionType": "mongodb"」を参照してください。接続は、コンソール、API、または CLI を使用して作成できます。

  2. AWS Glue Data Catalog でデータベースを作成して MongoDB データのテーブル定義を格納します。詳細については、「データベースの作成」を参照してください。

  3. MongoDB に接続するための接続内の情報を使用して、MongoDB 内のデータをクロールするクローラを作成します。クローラによって、ジョブで使用する MongoDB データベース内のテーブルを記述するテーブルが AWS Glue Data Catalog に作成されます。詳細については、「クローラーを使用したデータカタログへの入力 」を参照してください。

  4. カスタムスクリプトを使用してジョブを作成します。ジョブは、コンソール、API、または CLI を使用して作成できます。詳細については、「AWS Glue でジョブを追加する」を参照してください。

  5. ジョブ用のデータターゲットを選択します。データターゲットを表すテーブルは、Data Catalog で定義することも、ジョブを実行するときに作成することもできます。ジョブを作成するときに、ターゲットの場所を選択します。ターゲットに接続が必要な場合、接続もジョブ内で参照されます。ジョブに複数のデータターゲットが必要な場合、後でスクリプトを編集して追加できます。

  6. ジョブと生成されたスクリプトの引数を指定することで、ジョブ処理環境をカスタマイズします。

    Data Catalog で定義されたテーブル構造に基づいて、MongoDB データベースから DynamicFrame を作成する例を次に示します。このコードは additionalOptions を使用して、追加のデータソースの情報を指定しています。

    Scala
    val resultFrame: DynamicFrame = glueContext.getCatalogSource( database = catalogDB, tableName = catalogTable, additionalOptions = JsonOptions(Map("database" -> DATABASE_NAME, "collection" -> COLLECTION_NAME)) ).getDynamicFrame()
    Python
    glue_context.create_dynamic_frame_from_catalog( database = catalogDB, table_name = catalogTable, additional_options = {"database":"database_name", "collection":"collection_name"})
  7. オンデマンドで、またはトリガーを使用してジョブを実行します。