

# ETL ジョブでの MongoDB 接続の操作
<a name="integrate-with-mongo-db"></a>

MongoDB の接続を作成し、その接続を AWS Glue ジョブで使用します。詳細については、「AWS Glue プログラミングガイド」の「[MongoDB 接続](aws-glue-programming-etl-connect-mongodb-home.md)」を参照してください。接続の `url`、`username`、および `password` は MongoDB 接続に保存されます。ETL ジョブスクリプトで `glueContext.getCatalogSource` という `additionalOptions` パラメータを使用して、その他のオプションを指定できます。その他のオプションには次のようなものがあります。
+ `database`: (必須) 読み込み元の MongoDB データベース。
+ `collection`: (必須) 読み込み元の MongoDB コレクション。

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

1. AWS Glue Data Catalog 接続を MongoDB データソース用に作成します。接続パラメータの説明については、「["connectionType": "mongodb"](https://docs.aws.amazon.com/glue/latest/dg/aws-glue-programming-etl-connect.html#aws-glue-programming-etl-connect-mongodb)」を参照してください。接続は、コンソール、API、または CLI を使用して作成できます。

1. AWS Glue Data Catalog でデータベースを作成して MongoDB データのテーブル定義を格納します。詳細については「[データベースの作成](define-database.md)」を参照してください。

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

1. カスタムスクリプトを使用してジョブを作成します。ジョブは、コンソール、API、または CLI を使用して作成できます。詳細については、「[AWS Glue でジョブを追加する](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)」を参照してください。

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

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

   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}}"})
   ```

------

1. オンデマンドで、またはトリガーを使用してジョブを実行します。