수직 연결 - AWS Glue

수직 연결

AWS Glue for Spark를 사용하여 AWS Glue 4.0 이상 버전에서 Vertica의 테이블에서 읽고 쓸 수 있습니다. SQL 쿼리를 사용하여 Vertica에서 읽을 내용을 정의할 수 있습니다. AWS Glue 연결을 통해 AWS Secrets Manager에 저장된 사용자 이름 및 암호 보안 인증 정보를 사용하여 Vertica에 연결할 수 있습니다.

Vertica에 대한 자세한 내용은 Vertica 설명서를 참조하십시오.

Vertica 연결 구성

AWS Glue에서 Vertica에 연결하려면 AWS Secrets Manager 보안 암호에서 Vertica 보안 인증 정보를 생성하고 저장한 다음 해당 보안 암호를 Vertica AWS Glue 연결에 연결해야 합니다. Vertica 인스턴스가 Amazon VPC에 있는 경우 AWS Glue Vertica 연결에 네트워킹 옵션도 제공해야 합니다. 데이터베이스에서 읽고 쓸 때 임시 스토리지로 이용할 Amazon S3 버킷이나 폴더가 필요합니다.

AWS Glue에서 Vertica에 연결하려면 몇 가지 필수 조건이 필요합니다.

  • tempS3Path에서 참조하여 데이터베이스에서 읽고 쓸 때 임시 스토리지로 사용하는 Amazon S3 버킷 또는 폴더.

    참고

    AWS Glue 작업 데이터 미리 보기의 Vertica를 사용하는 경우 임시 파일은 tempS3Path에서 자동으로 제거되지 않을 수 있습니다. 임시 파일을 제거하려면 데이터 미리 보기 창에서 세션 종료를 선택하여 데이터 미리 보기 세션을 바로 종료합니다.

    데이터 미리 보기 세션이 바로 종료되도록 보장할 수 없는 경우 이전 데이터를 제거하도록 Amazon S3 수명 주기 구성을 설정하는 것이 좋습니다. 최대 작업 런타임에 여백을 더한 기준으로 49시간이 지난 데이터는 제거하는 것이 좋습니다. Amazon S3 수명 주기 구성에 대한 자세한 내용은 Amazon S3 설명서에서 스토리지 수명 주기 관리를 참조하십시오.

  • Amazon S3 경로에 대한 적절한 권한이 있는 IAM 정책을 AWS Glue 작업 역할과 연결할 수 있습니다.

  • Vertica 인스턴스가 Amazon VPC에 있는 경우, 퍼블릭 인터넷을 통과하는 트래픽 없이 AWS Glue 작업이 Vertica 인스턴스와 통신할 수 있도록 Amazon VPC를 구성하십시오.

    Amazon VPC에서 AWS Glue가 작업을 실행하는 동안 사용할 VPC, 서브넷보안 그룹을 식별하거나 생성합니다. 또한 Vertica 인스턴스와 이 위치 간의 네트워크 트래픽을 허용하도록 Amazon VPC를 구성해야 합니다. 작업을 수행하려면 Vertica 클라이언트 포트(기본값 5433)와의 TCP 연결을 설정해야 합니다. 네트워크 레이아웃에 따라 보안 그룹 규칙, 네트워크 ACL, NAT 게이트웨이 및 피어링 연결을 변경해야 할 수도 있습니다.

그런 다음 Vertica와 함께 사용할 AWS Glue를 구성할 수 있습니다.

Vertica에 대한 연결 구성하는 방법:
  1. AWS Secrets Manager에서 Vertica 보안 인증 정보, verticaUsername, verticaPassword을 사용하여 암호를 생성합니다. Secrets Manager에서 보안 암호를 생성하려면 AWS Secrets Manager 설명서의 Create an AWS Secrets Manager secret에서 제공하는 자습서를 따릅니다. 보안 암호를 생성한 후에는 다음 단계를 위해 보안 암호 이름, secretName을 유지합니다.

    • 키/값 페어를 선택하면 값 verticaUsername이 포함된 키 user에 대한 페어를 생성합니다.

    • 키/값 페어를 선택하면 값 verticaPassword이 포함된 키 password에 대한 페어를 생성합니다.

  2. AWS Glue 콘솔에서 AWS Glue 연결 추가의 단계에 따라 연결을 생성합니다. 연결을 생성한 후에는 다음 단계를 위해 연결 이름, connectionName을 유지합니다.

    • 연결 유형을 선택할 때 Vertica를 선택합니다.

    • Vertica 호스트를 선택할 때 Vertica 설치의 호스트 이름을 제공합니다.

    • Vertica 포트를 선택하면 해당 포트를 통해 Vertica 설치를 사용할 수 있습니다.

    • AWS 보안 암호를 선택할 때 secretName을 입력합니다.

  3. 다음과 같은 상황에서는 추가 구성이 필요할 수도 있습니다.

    • Amazon VPC에서 AWS에 호스팅된 Vertica 인스턴스의 경우

      • Vertica 보안 보안 인증 정보를 정의하는 Amazon VPC 연결 정보를 AWS Glue 연결에 제공하십시오. 연결을 만들거나 업데이트할 때 네트워크 옵션에서 VPC, 서브넷보안 그룹을 설정합니다.

AWS Glue Vertica 연결을 생성한 후에는 연결 방법을 호출하기 전에 다음 단계를 수행해야 합니다.

  • AWS Glue 작업과 권한과 연결된 IAM 역할을 tempS3Path에 부여합니다.

  • AWS Glue 작업과 연결된 IAM 역할에 secretName을 읽을 수 있는 권한을 부여합니다.

  • AWS Glue 작업 구성에서 추가 네트워크 연결connectionName을 제공합니다.

Vertica에서 읽는 중

사전 조건:

  • 읽으려는 Vertica 테이블. Vertica 데이터베이스 이름인 dbName과 테이블 이름인 tableName이 필요합니다.

  • 인증 정보를 제공하도록 구성된 AWS Glue Vertica 연결. 인증 정보를 구성하려면 앞 절차인 Vertica에 대한 연결을 구성하는 방법의 단계를 완료하십시오. AWS Glue 연결의 이름인 connectionName이 필요합니다.

  • 앞서 언급한 임시 스토리지로 사용할 Amazon S3 버킷 또는 폴더. tempS3Path라는 이름이 필요합니다. s3a 프로토콜을 사용하여 이 위치에 연결해야 합니다.

예:

dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="vertica", connection_options={ "connectionName": "connectionName", "staging_fs_url": "s3a://tempS3Path", "db": "dbName", "table": "tableName", } )

SELECT SQL 쿼리를 제공하여 DynamicFrame에 반환되는 결과를 필터링할 수도 있고 여러 테이블의 데이터 세트에 액세스할 수도 있습니다.

예:

dynamicFrame = glueContext.create_dynamic_frame.from_options( connection_type="vertica", connection_options={ "connectionName": "connectionName", "staging_fs_url": "s3a://tempS3Path", "db": "dbName", "query": "select * FROM tableName", }, )

Vertica 테이블에 쓰기

이 예제에서는 기존 DynamicFrame, dynamicFrame의 정보를 Vertica에 씁니다. 테이블에 이미 정보가 있는 경우 AWS Glue는 DynamicFrame의 데이터를 추가합니다.

사전 조건:

  • 쓰려는 현재 또는 원하는 테이블 이름, tableName. 또한 해당하는 Vertica 데이터베이스 이름인 dbName도 필요합니다.

  • 인증 정보를 제공하도록 구성된 AWS Glue Vertica 연결. 인증 정보를 구성하려면 앞 절차인 Vertica에 대한 연결을 구성하는 방법의 단계를 완료하십시오. AWS Glue 연결의 이름인 connectionName이 필요합니다.

  • 앞서 언급한 임시 스토리지로 사용할 Amazon S3 버킷 또는 폴더. tempS3Path라는 이름이 필요합니다. s3a 프로토콜을 사용하여 이 위치에 연결해야 합니다.

예:

glueContext.write_dynamic_frame.from_options( frame=dynamicFrame, connection_type="vertica", connection_options={ "connectionName": "connectionName", "staging_fs_url": "s3a://tempS3Path", "db": "dbName", "table": "tableName", } )

Vertica 연결 옵션 참조

  • connectionName — 필수입니다. 읽기 및 쓰기에 사용됩니다. 연결 방법에 인증 및 네트워킹 정보를 제공하도록 구성된 AWS Glue Vertica 연결의 이름입니다.

  • db — 필수입니다. 읽기 및 쓰기에 사용됩니다. 연결 방법이 상호 작용하는 Vertica의 데이터베이스 이름.

  • dbSchema - 테이블을 식별하는 데 필요한 경우 필요합니다. 읽기 및 쓰기에 사용됩니다. 기본값: public. 연결 방법이 상호 작용할 스키마의 이름.

  • table - 쓰기 시 필수, query가 제공되지 않는 한 읽기 전용. 읽기 및 쓰기에 사용됩니다. 연결 방법이 상호 작용할 테이블의 이름.

  • query — 읽기에 사용됩니다. Teradata에서 읽을 때 검색해야 하는 내용을 정의하는 SELECT SQL 쿼리입니다.

  • staging_fs_url — 필수입니다. 읽기 및 쓰기에 사용됩니다. 유효한 값: s3a URL. 임시 스토리지로 사용할 Amazon S3 버킷 또는 폴더의 URL입니다.