로컬 시스템에서 프라이빗 Amazon Redshift 클러스터에 액세스하려면 어떻게 해야 하나요?

4분 분량
0

로컬 컴퓨터를 사용하여 Amazon Virtual Private Cloud(VPC) 프라이빗 서브넷에 있는 Amazon Redshift 클러스터에 액세스하려고 합니다.

간략한 설명

Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스와 SQL Workbench/J를 사용하여 SSH 터널을 생성합니다. 터널이 로컬 시스템에서 들어오는 모든 트래픽을 프라이빗 Amazon Redshift 클러스터로 라우팅합니다.

해결 방법

Amazon VPC, EC2 인스턴스, Amazon Redshift 클러스터 생성

다음 단계에 따라 Amazon VPC, EC2 인스턴스, Amazon Redshift 클러스터를 생성하세요.

  1. 퍼블릭 서브넷과 프라이빗 서브넷이 있는 Amazon VPC를 생성합니다.

  2. Amazon Linux 2 Amazon Machine Image(AMI)에서 Amazon VPC의 퍼블릭 서브넷으로 EC2 인스턴스를 시작합니다. 인스턴스를 생성할 때 다음 옵션을 선택합니다.
    퍼블릭 IP 자동 할당의 경우 활성화를 선택합니다. 또는 인스턴스에 탄력적 IP 주소를 할당합니다.
    SSH 규칙을 사용하여 새 보안 그룹을 생성합니다.
    소스에서 사용자 지정을 선택한 다음 CIDR 블록을 입력합니다. 또는 내 IP를 선택합니다.

  3. Amazon Redshift 콘솔에서 클러스터 서브넷을 생성합니다. 다음 정보를 입력합니다.
    VPC ID로 Amazon VPC의 ID를 선택합니다.
    서브넷 ID로 프라이빗 서브넷의 ID를 선택합니다.

  4. 새 보안 그룹을 생성합니다.

  5. 인스턴스의 보안 그룹으로부터의 인바운드 트래픽을 허용하는 규칙을 보안 그룹에 추가합니다. 다음 정보를 입력합니다.
    유형으로 사용자 지정 TCP를 선택합니다.
    포트 범위로 Amazon Redshift의 기본 포트인 5439를 입력합니다.
    소스사용자 지정을 선택한 다음 보안 그룹의 이름을 입력합니다.

  6. 새 Amazon Redshift 클러스터를 시작하거나 스냅샷에서 클러스터를 복원합니다. 추가 구성 페이지에서 다음 옵션을 선택합니다.
    VPC 선택에서 Amazon VPC를 선택합니다.
    클러스터 서브넷 그룹에서 사용자의 서브넷 그룹을 선택합니다.
    공개적으로 액세스 가능아니오를 선택합니다.
    VPC 보안 그룹에서 사용자의 보안 그룹을 선택합니다. 클러스터가 사용 가능 상태가 될 때까지 기다립니다.

  7. 다음 명령을 실행하여 로컬 시스템에서 EC2 인스턴스에 연결합니다.

    ssh -i "your_key.pem" ec2-user@your_EC2_endpoint

    참고: your_key.pemyour_EC2_endpoint를 사용자 값으로 바꿉니다. 자세한 내용은 SSH를 사용해 Linux 또는 macOS에서 Linux 인스턴스에 연결을 참조하세요.

  8. 다음 명령을 사용하여 telnet을 설치합니다.

    sudo yum install telnet
  9. telnet을 사용하여 Amazon Redshift 클러스터에 대한 연결을 테스트하려면 다음 명령을 실행합니다.

    telnet cluster-endpoint cluster-port

    참고: cluster-endpointcluster-port를 사용자 값으로 바꿉니다.
    또는 다음 명령을 실행하고 dig를 사용하여 로컬 시스템이 Amazon Redshift 클러스터의 프라이빗 IP 주소에 도달할 수 있는지 확인합니다.

    dig cluster-endpoint

    참고: cluster-endpoint를 클러스터 엔드포인트로 바꿉니다.

터널 생성

다음 단계에 따라 터널을 생성하세요.

  1. 로컬 시스템에 SQL Workbench/J를 설치합니다.
  2. 최신 Amazon Redshift JDBC 드라이버를 다운로드합니다.
  3. SQL Workbench/J에서 JDBC 드라이버를 사용하여 연결 프로필을 생성합니다.
  4. SQL Workbench/J에서 SSH 연결을 구성하려면 SSH를 선택하고 다음 정보를 입력합니다.
    SSH 호스트 이름에 EC2 인스턴스의 퍼블릭 IP 주소 또는 DNS를 입력합니다.
    SSH 포트22를 입력합니다.
    사용자 이름ec2-user를 입력합니다.
    프라이빗 키 파일에 EC2 인스턴스를 생성할 때 다운로드한.pem 파일을 입력합니다.
    암호의 경우 필드를 비워 둡니다.
    로컬 포트에 사용 가능한 로컬 포트를 입력합니다. Amazon Redshift 클러스터는 기본적으로 포트 5439를 사용합니다.
    DB 호스트 이름에 클러스터 엔드포인트를 입력합니다. 엔드포인트는 포트 번호 또는 데이터베이스 이름을 포함할 수 없습니다.
    DB 포트5439를 입력합니다.
    JDBC URL 재작성 옵션을 선택합니다.
  5. 확인을 선택합니다.
  6. JDBC URL, 슈퍼유저 이름, 암호를 올바르게 입력했는지 확인합니다.
  7. 연결이 제대로 작동하는지 확인하려면 테스트를 선택합니다. 자세한 내용은 SQL Workbench/J 웹사이트에서 SSH 터널을 통한 연결을 참조하세요.

(선택 사항) AWS Identity and Access Management(AWS IAM) 사용자의 연결 수정

IAM 사용자로 Amazon Redshift 클러스터에 연결하려면 다음 단계를 완료하여 연결 프로필을 수정하세요.

  1. IAM 사용자 정책을 검토합니다. IAM 사용자 정책은 dbgroup, dbuser, dbname 리소스에 대한 GetClusterCredentials, JoinGroup, CreateClusterUser Amazon Redshift 작업을 허용해야 합니다. 다음은 IAM 사용자 정책의 예시입니다.
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "redshift:GetClusterCredentials",
                    "redshift:CreateClusterUser",
                    "redshift:JoinGroup"
                ],
                "Resource": [
                    "arn:aws:redshift:eu-west-2:012345678912:dbgroup:clustername/group_name",
                    "arn:aws:redshift:eu-west-2:012345678912:dbuser:clustername/user_name or * ",
                    "arn:aws:redshift:eu-west-2:012345678912:dbname:clustername/database_name"
                ]
            }
        ]
    }
    참고: us-west-2를 클러스터가 있는 AWS 리전으로, 012345678912를 AWS 계정 ID로, user_name을 Amazon Redshift 사용자 이름으로 바꿉니다. 또는 특정 사용자 이름 대신 "*"를 사용할 수 있습니다.
  2. SQL Workbench/J에서 연결 프로필 JDBC URL의 첫 번째 부분을 jdbc:redshift:iam으로 변경합니다. 예를 들어 JDBC URL을 jdbc:redshift:iam://127.0.0.1:5439/example로 변경합니다.
  3. 확장 속성을 선택하고 다음 정보를 입력합니다.
    AccessKeyID에 IAM 사용자의 액세스 키 ID를 입력합니다.
    SecretAccessKey에 IAM 사용자의 비밀 액세스 키를 입력합니다.
    (선택 사항) DbGroups의 경우 IAM 사용자가 기존 그룹에 참여하게 하려면 이 옵션을 선택합니다.
    DbUser에 IAM 사용자 이름을 입력합니다.
    AutoCreate의 경우 옵션을 true로 설정합니다.
    ClusterID에 Amazon Redshift 클러스터 이름을 입력합니다.
    리전에 클러스터가 있는 리전(예: us-east-1)을 입력합니다.
  4. 클러스터 연결 프로필 페이지에서 테스트를 선택합니다.

관련 정보

Amazon Redshift 클러스터에 연결이 안 되는 이유는 무엇인가요?

AWS 공식
AWS 공식업데이트됨 4달 전
댓글 없음

관련 콘텐츠