

# ETL 작업의 MondoDB 연결 작업
<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 연결에 저장됩니다. 다른 옵션은 `glueContext.getCatalogSource`의 `additionalOptions` 파라미터를 사용하여 ETL 작업 스크립트에서 지정하면 됩니다. 이외 옵션으로 다음과 같은 항목이 포함됩니다.
+ `database`: (필수 사항) 읽을 MongoDB 데이터베이스입니다.
+ `collection`: (필수 사항) 읽을 MongoDB 컬렉션입니다.

ETL 작업 스크립트 내에 `database` 및 `collection` 정보를 배치하면 여러 작업에 같은 조건을 사용할 수 있습니다.

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 데이터베이스 내 테이블을 설명합니다. 자세한 정보는 [크롤러를 사용하여 데이터 카탈로그 채우기](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. 작업을 실행합니다. 온디맨드여도 되고, 트리거를 통해도 됩니다.