사용자 정의 커넥터 생성 - AWS Glue

사용자 정의 커넥터 생성

고유한 커넥터를 구축하고 커넥터 코드를 AWS Glue Studio에 업로드할 수도 있습니다.

사용자 지정 커넥터는 AWS Glue Spark 런타임 API를 통해 AWS Glue Studio에 통합됩니다. AWS Glue Spark 런타임을 사용하면 Spark, Athena 또는 JDBC 인터페이스와 호환되는 모든 커넥터를 연결할 수 있습니다. 사용자 정의 커넥터에서 사용할 수 있는 연결 옵션을 전달할 수 있습니다.

AWS Glue 연결로 모든 연결 속성을 캡슐화하고 ETL 작업에 연결 이름을 제공할 수 있습니다. Data Catalog 연결과의 통합을 통해 단일 Spark 애플리케이션 또는 다른 애플리케이션의 여러 호출에서 동일한 연결 속성을 사용할 수 있습니다.

연결에 대한 추가 옵션을 지정할 수 있습니다. AWS Glue Studio가 생성하는 작업 스크립트에는 연결을 사용하여 지정된 연결 옵션으로 커넥터를 플러그 인하는 Datasource 항목이 포함되어 있습니다. 예:

Datasource = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"dbTable":"Account","connectionName":"my-custom-jdbc- connection"}, transformation_ctx = "DataSource0")
AWS Glue Studio에 사용자 지정 커넥터를 추가하려면
  1. 사용자 정의 커넥터에 대한 코드를 생성합니다. 자세한 내용은 사용자 정의 커넥터 개발 단원을 참조하십시오.

  2. 커넥터에 AWS Glue 기능 지원을 추가합니다. 다음은 이러한 기능의 몇 가지 예와 AWS Glue Studio에서 생성한 작업 스크립트 내에서 기능이 사용되는 방식입니다.

    • 데이터 유형 매핑 - 커넥터가 기본 데이터 스토어에서 열을 읽는 동안 열을 유형 변환할 수 있습니다. 예를 들어, {"INTEGER":"STRING"}dataTypeMapping은 레코드를 구문 분석하고 DynamicFrame을 구성할 때 Integer 유형의 모든 열을 String 유형의 열로 변환합니다. 이는 사용자가 선택한 유형으로 열을 캐스팅하는 데 도움이 됩니다.

      DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"dataTypeMapping":{"INTEGER":"STRING"}", connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
    • 병렬 읽기를 위한 분할 – AWS Glue는 열에서 데이터를 분할하여 데이터 스토어에서 병렬 데이터 읽기를 허용합니다. 파티션 열, 하위 파티션 경계, 상위 파티션 경계 및 파티션 수를 지정해야 합니다. 이 기능을 사용하면 데이터 병렬 처리와 Spark 애플리케이션에 할당된 여러 Spark 실행기를 사용할 수 있습니다.

      DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"upperBound":"200","numPartitions":"4", "partitionColumn":"id","lowerBound":"0","connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
    • 자격 증명 저장에 AWS Secrets Manager 사용 – Data Catalog 연결에는 AWS Secrets Manager에 저장된 보안 암호에 대한 secretId가 포함될 수도 있습니다. AWS 보안 암호는 인증 및 자격 증명 정보를 안전하게 저장하고 런타임 시 AWS Glue에 제공할 수 있습니다. 또는 다음과 같이 Spark 스크립트에서 secretId를 지정할 수 있습니다.

      DataSource = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"connectionName":"test-connection-jdbc", "secretId"-> "my-secret-id"}, transformation_ctx = "DataSource0")
    • 행 조건자 및 열 프로젝션으로 소스 데이터 필터링 – AWS Glue Spark 런타임을 사용하면 SQL 쿼리를 푸시다운하여 행 조건자 및 열 프로젝션으로 소스에서 데이터를 필터링할 수도 있습니다. 이를 통해 ETL 작업은 푸시다운을 지원하는 데이터 스토어에서 필터링된 데이터를 더 빠르게 로드할 수 있습니다. JDBC 데이터 원본으로 푸시다운된 SQL 쿼리의 예는 SELECT id, name, department FROM department WHERE id < 200.입니다.

      DataSource = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"query":"SELECT id, name, department FROM department WHERE id < 200","connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
    • 작업 북마크 – AWS Glue는 JDBC 소스에서 데이터의 증분 로드를 지원합니다. AWS Glue는 데이터 스토어에서 마지막으로 처리된 레코드를 추적하고 후속 ETL 작업 실행에서 새 데이터 레코드를 처리합니다. 작업 북마크는 이 열이 순차적으로 증가하거나 감소하는 경우 기본 키를 북마크 키의 기본 열로 사용합니다. 작업 북마크에 대한 자세한 내용은 AWS Glue Developer GuideJob Bookmarks를 참조하세요.

      DataSource0 = glueContext.create_dynamic_frame.from_options(connection_type = "custom.jdbc", connection_options = {"jobBookmarkKeys":["empno"], "jobBookmarkKeysSortOrder" :"asc", "connectionName":"test-connection-jdbc"}, transformation_ctx = "DataSource0")
  3. 사용자 정의 커넥터를 JAR 파일로 패키징하고 파일을 Amazon S3에 업로드합니다.

  4. 사용자 정의 커넥터를 테스트합니다. 자세한 내용은 Glue Custom Connectors: Local Validation Tests Guide에서 GitHub의 지침을 참조하세요.

  5. AWS Glue Studio 콘솔의 콘솔 탐색 창에서 커넥터(Connectors)를 선택합니다.

  6. [커넥터(Connectors)] 페이지에서 [사용자 정의 커넥터 생성(Create custom connector)]을 선택합니다.

  7. [사용자 정의 커넥터 생성(Create custom connector)] 페이지에서 다음 정보를 입력합니다.

    • Amazon S3에서 사용자 정의 코드 JAR 파일의 위치에 대한 경로입니다.

    • AWS Glue Studio에서 사용할 커넥터의 이름입니다.

    • [JDBC], [Spark] [또는 Athena] 중 하나일 수 있는 커넥터 유형입니다.

    • AWS Glue Studio가 커넥터를 사용하기 위해 호출하는 사용자 지정 코드 내의 진입점 이름입니다.

      • JDBC 커넥터의 경우 이 필드는 JDBC 드라이버의 클래스 이름이어야 합니다.

      • Spark 커넥터의 경우 이 필드는 format 연산자로 Spark 데이터 원본을 로드할 때 사용하는 정규화된 데이터 원본 클래스 이름 또는 해당 별칭이어야 합니다.

    • (JDBC만 해당) 데이터 스토어에 대한 JDBC 연결에서 사용하는 기본 URL입니다.

    • (선택 사항) 사용자 정의 커넥터에 대한 설명입니다.

  8. [커넥터 생성(Create connector)]을 선택합니다.

  9. 커넥터에 대한 연결 생성에 설명된 대로 [커넥터(Connectors)] 페이지에서 이 커넥터를 사용하는 연결을 생성합니다.

AWS Glue Studio에 커넥터 추가

커넥터는 데이터 스토어와 AWS Glue 간의 통신을 용이하게 하는 코드입니다. AWS Marketplace에서 제공되는 커넥터를 구독하거나 사용자 정의 커넥터를 생성할 수 있습니다.

AWS Marketplace 커넥터 구독

AWS Glue Studio를 사용하면 AWS Marketplace에서 커넥터를 쉽게 추가할 수 있습니다.

AWS Marketplace에서 AWS Glue Studio로 커넥터를 추가하려면
  1. AWS Glue Studio 콘솔의 콘솔 탐색 창에서 커넥터(Connectors)를 선택합니다.

  2. Connectors(커넥터) 페이지에서 Go to AWS Marketplace(이동)을 선택합니다.

  3. AWS Marketplace의 [추천 제품(Featured products)]에서 사용하려는 커넥터를 선택합니다. 추천 커넥터 중 하나를 선택하거나 검색을 사용할 수 있습니다. 커넥터의 이름이나 유형을 검색하고 옵션을 사용하여 검색 결과를 구체화할 수 있습니다.

    주요 커넥터 중 하나를 사용하려면 [제품 보기(View product)]를 선택합니다. 검색을 사용하여 커넥터를 찾은 경우 커넥터 이름을 선택합니다.

  4. 커넥터의 제품 페이지에서 탭을 사용하여 커넥터에 대한 정보를 봅니다. 이 커넥터를 구매하기로 결정했다면 [계속 구독(Continue to Subscribe)]을 선택합니다.

  5. 결제 정보를 제공한 다음 [계속 구성(Continue to Configure)]을 선택합니다.

  6. [이 소프트웨어 구성(Configure this software)] 페이지에서 배포 방법과 사용할 커넥터 버전을 선택합니다. 그런 뒤 [계속 시작(Continue to Launch)]을 선택합니다.

  7. [이 소프트웨어 시작(Launch this software)] 페이지에서 커넥터 공급자가 제공한 [사용 지침(Usage Instructions)]을 검토할 수 있습니다. 계속할 준비가 되면 Activate connection in AWS Glue Studio(연결 활성화)를 선택합니다.

    잠시 후 콘솔에 AWS Glue Studio의 마켓플레이스 연결 생성(Create marketplace connection) 페이지가 표시됩니다.

  8. 커넥터에 대한 연결 생성에 설명된 대로 이 커넥터를 사용하는 연결을 생성합니다.

    또는 [커넥터만 활성화(Activate connector only)]를 선택하여 지금 연결 생성을 건너뛸 수 있습니다. 커넥터를 사용하려면 나중에 연결을 생성해야 합니다.