[Data Engineering] AWS Glue와 AWS RDS 연결 (PostgreSQL)

Nowod_K·2023년 6월 1일
1

AWS Glue란?

  • AWS Glue는 완전관리형 ETL(Extract, Transform, Load) 서비스로, 데이터 웨어하우스 또는 데이터 레이크에서 데이터 추출, 변환 및 로딩 작업을 자동화해주는 도구입니다. Glue는 스키마 추론, 데이터 카탈로그 생성, 스케일링 가능한 작업 실행 등을 통해 데이터 처리를 간편하게 해주며, 다양한 데이터 소스와 호환되는 연결 기능을 제공합니다.

도입이유

내부 데이터 플랫폼 구축사업의 일환으로 데이터 웨어하우스 구축과 데이터 마트 구축을 진행하고 있습니다. 데이터 웨어하우스에 구축된 데이터들을 분석용 데이터로 변환하고 데이터마트로 적재하기 위해서 AWS Glue를 도입하게 되었습니다.

AWS Glue와 AWS RDS 연결하기

AWS Glue와 RDS를 연결하기 위해서는 connection을 추가해주어야 합니다.. Data Catalog 탭에서 Connections 메뉴로 들어가면 connection을 추가해줄 수 있습니다.

(AWS RDS는 생성이 되어있다고 가정합니다.)

  1. Connection 만들기
    1. Connections 탭에서 Create connection을 클릭합니다.

  1. 이름을 설정하고 Connection Type을 설정합니다.
    1. DB정보와 URL을 알고있으면 JDBC로 해도되지만, 저는 AWS RDS를 쓰고 있으므로 Amazon RDS를 선택하겠습니다. (그러면 필요한 정보를 자동으로 맵핑해줍니다.)

  1. 데이터베이스 엔진을 선택합니다.

  1. 현재 만들어져있는 RDS 목록이 DB 인스턴스에 나타나고, 원하는 정보를 선택합니다.

  1. 접속할 DB명, User, Password 정보를 입력합니다.

  1. 생성이 완료되면 커넥션이 생성되고, 관련 정보들을 볼 수 있습니다.
    1. url은 jdbc 기반으로 자동 맵핑되어 생성됩니다.
    2. 또한 Amazon RDS를 선택하였기 때문에 VPC와 Subnet, 보안그룹도 자동으로 설정됩니다.

연결 시 에러 대응 방법

Connection이 생성되면 Test Connection을 통해서 연결테스트를 할 수 있는데, 이때 나올 수 있는 관련 에러들에 대해 공유해보겠습니다.

  1. 권한 관련 에러
    • AWS Glue에서 커넥션 생성 후 테스트를 할 때 Glue 관련 IAM 설정이 필요합니다.
    • RDS에대한 접근권한과 S3에 대한 접근권한이 필요하여 해당 권한을 추가해주었습니다.
  2. S3 Endpoint 관련 에러
    • 이유는 명확하게 알 수 없지만, VPC에 S3 endpoint가 설정이 되어야 테스트가 가능합니다.
    • Gateway 유형의 S3 Endpoint를 생성하여 VPC에 추가해주었습니다.
  1. 가용영역(AZ) 관련 에러

    • Connection 생성 시 Network Option에서 Subnet을 설정할 수 있는데 이 때 가용영역이 아닌 영역을 선택하면 에러가 발생합니다.
    • 저같은 경우는 a,b,c,d 중에 d를 선택했을 때 a,b,c 중에 하나를 선택하라고 해서 변경했습니다.

  1. ** 데이터베이스 엔진관련 에러 **
    • 제일 원인 파악이 어려웠던 에러입니다. (너무너무 화가 나더라구요)
    • 저의 경우 PostgreSQL 14버전을 사용해서 초기 DB세팅을 하였는데, 위의 에러를 모두 해결했음에도 불구하고 계속 연결이 실패되었습니다.
    • DB버전을 15로 올려보았으나 에러가 역시나 발생되었고, 결국엔 13버전으로 다시 세팅하여 연결하였더니 정상적으로 연결이 되었습니다.

CloudWatch 활용방법

DB Connection 테스트 시 관련 로그는 CloudWatch에 모두 저장됩니다.

이런식으로 error, output 로그가 모두 쌓이는데 output로그를 보셔야 명확한 원인 파악이 되니 output 로그를 적극적으로 활용하시기 바랍니다.

감사합니다.

profile
개발을 좋아하는 마음과 다양한 경험을 토대로 좋은 개발자가 되고자 노력합니다.

0개의 댓글