

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 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 集合。

藉由將 `database` 和 `collection` 資訊放在 ETL 任務指令碼中，您可以在多個任務中使用相同的連線。

1. 建立 MongoDB 資料來源的 AWS Glue Data Catalog 連線。請參閱 ["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 中的資料。爬蟲程式會在 中建立資料表 AWS Glue Data Catalog ，描述您在任務中使用的 MongoDB 資料庫中的資料表。如需詳細資訊，請參閱[使用編目程式填入 Data Catalog](add-crawler.md)。

1. 使用自訂指令碼來建立任務。您可以使用主控台、API 或 CLI 來建立它們。如需詳細資訊，請參閱[在 AWS Glue 新增任務](https://docs.aws.amazon.com/glue/latest/dg/add-job.html)。

1. 選擇任務的資料目標。代表資料目標的資料表可在您的資料目錄中定義，或者您的任務可在執行時建立目標資料表。選擇編寫任務時的目標位置。如果目標需要連線，您的任務也會參照此連線。如果您的任務需要多個資料目標，可在之後編輯指令碼以新增來源。

1. 為任務及產生的指令碼提供引數，以自訂任務處理環境。

   這裡提供了從基於資料目錄中定義之資料表結構的 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. 隨需或透過觸發執行任務。