AWS 기술 블로그

Visual Studio Code(VS Code)에서 Amazon Redshift extension(AWS-Toolkit) 사용하기

애플리케이션을 개발하다 보면 Amazon Redshift와 같은 데이터베이스와 연동하여 데이터를 입력하거나 가져와야 하는 경우가 있습니다. 파일 처리와 달리, 데이터베이스 연동은 데이터베이스 특성에 맞는 스키마 정보와 데이터 유형을 면밀히 검토하는 것이 필수적입니다. 또한, 샘플 데이터를 사용하여 데이터의 정합성과 일관성을 검증하는 테스트가 중요합니다.

데이터베이스에 접속하여 관련 작업들을 수행하기 위해서는 몇 가지 방법들이 있습니다. 일반적으로 데이터베이스 운영자라면 DBeaver와 같은 데이터베이스 관리 도구를 사용하여 단순한 조회 이상의 다양한 관리 작업을 수행하는 것을 선호합니다. 하지만 개발자 입장에서는 많은 기능보다는 본인이 사용하는 개발 환경에서 필요한 작업을 빠르게 수행할 수 있는 통합 환경을 사용하는 게 보다 효율적입니다.

Visual Studio Code(VS Code)에서 Amazon Redshift 연동

이 블로그에서는 개발자들이 많이 사용하는 Visual Studio Code (VS Code) 내에서 Amazon Redshift를 접속하여 오브젝트를 탐색하고 쿼리를 수행하는 방식에 대해서 알아보려고 합니다.  VS Code에서 Amazon Redshift를 접속하기 위해서는 아래와 같이 2가지 방식이 가능합니다.

첫 번째 방식은  VS Code에 SQLTools와 같은 범용 SQL 툴링 환경을 설치한 후에 Redshift JDBC Driver를 사용하여 접속하는 방식입니다. JDBC Driver를 사용하는 방식은 일반적으로 많이 사용하는 방식이지만 Amazon Redshift 서비스에서 외부 클라이언트가 접속하도록  Endpoint 와 Port를 개방해 주어야 합니다.

두 번째 방식은 AWS Toolkit를 사용하는 방식입니다. AWS는 데이터베이스, AWS Lambda, 머신 러닝 서비스 등 200개 이상의 다양한 서비스들을 지원하고 있습니다. 이 툴킷을 사용하면 VS Code를 사용하는 개발자들이 AWS가 제공하는 다양한 서비스들을 손쉽게 활용할 수 있는 환경을 제공합니다.

최근에 AWS에서는 Amazon Redshift에 대한 지원이 추가된 새로운 버전의  AWS Toolkit for Visual Studio Code를 출시하였습니다. 이 툴킷을 사용하면 AWS Identity and Access Management(IAM)를 통한 인증 방식을 활용하여 AWS 서비스에 접속을 하게 되고  Amazon Redshift 서비스와 통신하기 위해 Data API 방식을 사용합니다.

이 툴킷을 사용하였을 때의 장점은 VS Code 개발 툴 내에서 Amazon Redshift의 스키마 오브젝트를 탐색하고 notebook 환경을 사용하여 쿼리를 수행할 수 있습니다. 또한 Amazon S3, AWS Lambda 등 AWS 내의 다른 서비스에 대한 접근을 지원하여 하나의 도구 내에서 다양한 AWS 서비스와의 연계를 수행하는 데 효율적입니다.

시작하기

앞에서 언급한 두 번째 방식을 상세히 알아보기 위해  VS Code에 AWS Toolkit for Visual Studio Code를 설치하고 Amazon Redshift 서비스에 접속하여 관련 작업들을 수행해 보도록 하겠습니다.

  • 단계 1 : 테스트 수행에 필요한 환경을 구성합니다.
  • 단계 2 : VS Code에 AWS Toolkit for Visual Studio Code를 설치 및 구성합니다.
  • 단계 3 : Amazon Redshift 에 연결하여 조회 작업을 수행합니다.
  • 단계 4: (Option) Amazon S3와 연계 테스트를 위해 데이터를 unload한 후에 VS Code에서 로컬 클라이언트로 파일을 다운로드합니다.

사전 준비사항

테스트를 수행하기 위해서는 다음과 같은 항목과 서비스가 필요합니다.

단계 1 : 테스트 수행에 필요한 환경을 구성합니다.

  1. AWS CLI를 사용하여 AWS 접속 환경을 설정합니다.
    VS Code에서 IAM를 통한 인증을 받기 위해서는 IAM Credentials와 IAM Identity Center를 지원합니다. 이 글에서는 IAM Credentials 방식을 사용하도록 하겠습니다.  AWS CLI  환경이 없으면 AWS CLI 설치 또는 업데이트에 따라 설치를 수행합니다. 구성 작업까지 완료하였으면 aws configure list 명령 수행 시에 다음과 같은 정보를 확인할 수 있습니다. (다음 단계에서 AWS에 접속하기 위해 Access Key와 Secret Key가 필요합니다.)
  2. Amazon Redshift 환경을 구성한 후 데이터베이스를 생성합니다.
    Amazon Redshift 시작 안내서에 따라  Amazon Redshift 환경을 생성합니다. (기존에 클러스터를 보유하고 있으면 사용 가능합니다.) 가이드에 따라 쿼리 수행에 필요한 테이블(users, event, sales)을 작성하고 데이터를 적재합니다. (다음 단계에서 클러스터에 접속하기 위해 데이터베이스 사용자와 패스워드 정보가 필요합니다.)
  3. 클라이언트 환경에 Visual Studio Code (VS Code)를 설치 및 구성합니다.
    (예, MacOS에 설치 시)

단계 2 : VS Code에 AWS Toolkit for Visual Studio Code를 설치 및 구성합니다.

  1. VS Code를 실행합니다.
  2. 왼쪽 메뉴에서 “Extension” 아이콘 을 선택합니다.
  3. Extensions 검색바에서 “AWS Toolkit”를 검색하여 설치합니다.
  4. 설치가 성공하면 왼쪽 메뉴에 “AWS” 아이콘 이 보입니다.
  5. 왼쪽 메뉴에서 “AWS” 아이콘을 선택하면 AWS가 제공하는 몇 가지 서비스들을 확인할 수 있습니다. 여기서는 서비스 탐색을 위해 EXPLORER 항목을 선택합니다.
  6. EXPLORER 항목의 “Select a connection”의 메뉴에서 “Add New Connection”을 선택합니다.
  7. “AWS Toolkit: Add Connection to AWS” 화면에서 “AWS Explorer”를 사용합니다.
  8. AWS에 접속하기 위해 IAM Identity Center (SSO) 방식과 IAM Roles Credentials 방식을 지원합니다. 여기서는 후자를 선택하고 프로파일 이름과 키 정보를 입력합니다.
  9. AWS에 성공적으로 접속하면 Redshift를 포함하여 AWS가 제공하는 다양한 서비스를 확인할 수 있습니다.

단계 3 : Amazon Redshift에 연결하여 조회 작업을 수행합니다.

  1. EXPLORER 창에서 Redshift를 선택하여 단계 1에서 생성한 Redshift 클러스터를 확인합니다. (기 존재하고 있는 다른 클러스터도 확인할 수 있습니다.)
  2. 접속하려는 클러스터를 선택한 후 “Click to connect”를 선택합니다.
  3. “Connection Type”에서 AWS Secrets Manager와 Database user name and password 방식을 지원합니다. 이 글에서는 단계 1에서 Redshift 환경 구성 시에 사용하였던 데이터베이스 사용자와 패스워드를 입력하여 연결합니다.
  4. 연결이 성공하면 테이블 오브젝트(event, sales, users)들을 확인할 수 있습니다.
  5. “Create-Notebook”를 선택하여 쿼리 수행을 위한 notebook를 만듭니다.
  6. 아래 쿼리를  cell 창에 복사한 후 왼쪽의 수행 버튼을 누릅니다.  데이터가 정상적으로 적재되어 있으면 쿼리 결과를 확인할 수 있습니다.
SELECT firstname, lastname, total_quantity 
FROM   (SELECT buyerid, sum(qtysold) total_quantity
        FROM  sales
        GROUP BY buyerid
        ORDER BY total_quantity desc limit 10) Q, users
WHERE Q.buyerid = userid
ORDER BY Q.total_quantity desc;


추가적으로 Notebook 내에서는 여러 개의 작업을 동시에 관리할 수 있도록 ‘Split Editor’ 버튼을 통해 수평 분할 기능을 지원합니다. 또한 Notebook 내에서 “+ Code” 을 눌러 cell를 추가하여 여러 개의 cell 들을 관리할 수 있습니다. Cell 단위로 쿼리를 수행하고 결과값을 확인할 수 있어 하나의 notebook 내에서 순차적인 작업 관리가 용이합니다.

단계 4 : (Option) Amazon S3와 연계 테스트를 위해 데이터를 unload 한 후에 VS Code에서 로컬 클라이언트로 파일을 다운로드합니다.

  1. EXPLORER 창에서 Amazon S3 서비스를 선택한 후에 데이터를 unload 하기 위한 버킷을 생성하기 버튼을 누릅니다. (S3에 대한 추가 권한이 필요할 수 있습니다.)
  2. 버킷 이름으로 unloadvscode-xxx를 입력합니다. (버킷 이름은 Amazon S3 이름 규칙에 따라 고유해야 합니다.)
  3. 단계 3에서 사용했던 쿼리 결과를 위에서 생성한 버킷으로 unload 하기 위해 아래 쿼리를 cell 창에 복사한 후 수행합니다.
    unload (‘SELECT firstname, lastname, total_quantity 
    FROM   (SELECT buyerid, sum(qtysold) total_quantity
            FROM  sales
            GROUP BY buyerid
            ORDER BY total_quantity desc limit 10) Q, users
    WHERE Q.buyerid = userid
    ORDER BY Q.total_quantity desc’) to ‘s3://unloadvscode/unload/sales’ 
    iam_role default parallel off;
  4. EXPLORER 창에서 refresh 버튼 을 누릅니다.
  5. S3 버킷에 unload 된 파일을 확인합니다.
  6. 파일을 선택하여 VS Code에서 내용을 확인할 수 있으며, 다운로드 버튼을 눌러 클라이언트로 다운로드합니다.
  7. 로컬 클라이언트에서 다운로드한 파일을 열어서 내용을 확인합니다.

반대로 다른 샘플 데이터를 사용하여 테스트 작업이 필요할 수 있습니다. 이를 위해서 버킷 내에 Create Folder 와 upload 기능을 지원하고 있습니다. 데이터를 Amazon S3에 업로드하고 Amazon Redshift로 적재한 후에 애플리케이션을 통한 검증 작업을 수행할 수 있습니다.

리소스 정리하기

이 글에서 AWS 와 연계한 테스트를 수행하기 위해서 Amazon Redshift 와   Amazon S3를 사용하고 있습니다. 불필요한 비용이 발생하지 않도록 테스트가 종료된 이후에는 관련 자원에 대한 정리 작업을 수행하기 바랍니다. 단계 1의 가이드에 따라 Amazon Redshift Serverless를 생성하였으면 작업그룹 삭제네임스페이스 삭제 작업을 수행합니다.  단계 4의 추가 테스트를 수행한 경우에는 Amazon S3에 생성한 파일과 버킷을 삭제하기 바랍니다.

결론

2023년 10월에 AWS는 최신 AWS Toolkit for Visual Studio Code를 발표하였습니다. 이 글에서는 Visual Studio Code (VS Code) 개발자가 Amazon Redshift 연동이 필요한 경우에  이 툴킷을 사용하여 툴 내에서 데이터베이스 오브젝트를 탐색하고 쿼리를 조회를 하는 동시에 다른  AWS  서비스와 연계하는 방안에 대해 알아보았습니다.

JeongKwon Lee

JeongKwon Lee

이정권 솔루션 아키텍트는 AWS WWSO Analytics 팀의 일원으로서 Redshift 서비스를를 중심으로 AWS 기반의 서비스를 구성하고자 하는 고객분들께 클라우드 환경에 최적화된 아키텍처 가이드와 POC 등를 지원하는 역할을 수행하고 있습니다.