원격 호스트(SSH)에서 COPY 지원 - Amazon Redshift

원격 호스트(SSH)에서 COPY 지원

COPY 명령을 사용하면 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스나 다른 컴퓨터 같은 하나 이상의 원격 호스트에서 병렬로 파일을 로드할 수 있습니다. COPY는 SSH(Secure Shell)을 사용하여 원격 호스트에 연결하고 원격 호스트에서 명령을 실행해 텍스트 출력을 생성합니다. 원격 호스트는 EC2 Linux 인스턴스이거나 SSH 연결을 허용하도록 구성된 다른 Unix 또는 Linux 컴퓨터일 수 있습니다. Amazon Redshift는 여러 호스트에 연결할 수 있으며 각 호스트에 대해 여러 SSH 연결을 열 수 있습니다. Amazon Redshift는 각 연결을 통해 고유한 명령을 전송하여 호스트의 표준 출력에 대한 텍스트 출력을 생성합니다. 그러면 Amazon Redshift가 텍스트 파일을 읽을 때 텍스트 출력을 읽습니다.

FROM 절은 매니페스트 파일에 Amazon S3 객체 키를 지정할 때 사용합니다. 매니페스트 파일은 COPY가 SSH 연결을 열어 원격 명령을 실행할 때 사용할 정보를 제공합니다.

중요

매니페스트 파일이 위치한 S3 버킷이 클러스터와 동일한 AWS 리전에 속하지 않을 때는 REGION 파라미터를 사용하여 버킷이 위치한 리전을 지정해야 합니다.

구문

FROM 's3://'ssh_manifest_file' } authorization SSH | optional-parameters

예시

다음은 매니페스트 파일을 사용하여 원격 호스트에서 SSH 연결을 통해 데이터를 로드하는 예입니다.

copy sales from 's3://amzn-s3-demo-bucket/ssh_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' ssh;

파라미터

FROM

로드할 데이터 원본입니다.

's3://copy_from_ssh_manifest_file'

COPY 명령은 SSH를 사용하여 다수의 호스트에 연결할 뿐만 아니라 각 호스트마다 SSH 연결을 생성할 수 있습니다. 이렇게 생성된 각 호스트 연결을 통해 명령을 실행하고, 명령을 통해 출력되는 데이터를 병렬 방식으로 테이블에 로드합니다. s3://copy_from_ssh_manifest_file 인수는 매니페스트 파일에 Amazon S3 객체 키를 지정합니다. 매니페스트 파일은 COPY가 SSH 연결을 열어 원격 명령을 실행할 때 사용할 정보를 제공합니다.

s3://copy_from_ssh_manifest_file 인수는 명시적으로 단일 파일을 참조해야 합니다. 이때 파일은 키 접두사가 될 수 없습니다. 다음은 그 한 예입니다:

's3://amzn-s3-demo-bucket/ssh_manifest.txt'

매니페스트 파일은 Amazon Redshift가 호스트에 연결하는 데 사용하는 JSON 형식의 텍스트 파일입니다. 매니페스트 파일은 SSH 호스트 엔드포인트를 비롯해 호스트에서 데이터를 Amazon Redshift에 반환할 때 실행하는 명령을 지정합니다. 필요한 경우, 호스트 퍼블릭 키, 로그인 사용자 이름 및 각 항목의 필수 플래그를 포함시킬 수 있습니다. 다음은 SSH 연결 2개를 생성하는 매니페스트 파일 예입니다.

{ "entries": [ {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "<host_user_name>"}, {"endpoint":"<ssh_endpoint_or_IP>", "command": "<remote_command>", "mandatory":true, "publickey": "<public_key>", "username": "<host_user_name>"} ] }

매니페스트 파일에는 SSH 연결마다 "entries" 구문이 하나씩 포함됩니다. 단일 호스트에 다중 연결을, 혹은 다수의 호스트에 다중 연결을 생성할 수 있습니다. 표시된 대로 필드 이름과 값 모두에 큰따옴표가 필요하며, 기울어진 따옴표나 "스마트" 따옴표가 아닌 단순한 따옴표(0x22)여야 합니다. 큰따옴표가 필요하지 않은 유일한 값은 "mandatory" 필드의 부울 값인 true 또는 false입니다.

다음 표에서는 매니페스트 파일의 속성을 설명합니다.

엔드포인트

호스트의 URL 주소 또는 IP 주소(예: "ec2-111-222-333.compute-1.amazonaws.com" 또는 "198.51.100.0").

명령

호스트에서 gzip, lzop, bzip2 또는 zstd 형식으로 텍스트 출력 또는 이진수 출력을 생성할 때 실행하는 명령입니다. 명령은 사용자 "host_user_name"이 실행 권한을 갖고 있는 어떤 명령도 될 수 있습니다. 명령은 파일 인쇄처럼 간단할 수도 있고 데이터베이스 쿼리나 스크립트 시작이 될 수도 있습니다. 출력(텍스트 파일, gzip 이진 파일, lzop 이진 파일 또는 bzip2 이진 파일)은 Amazon Redshift COPY 명령이 수집할 수 있는 형식이어야 합니다. 자세한 내용은 입력 데이터 준비 단원을 참조하십시오.

publickey

(옵션) 호스트의 퍼블릭 키입니다. 퍼블릭 키를 입력하면 Amazon Redshift가 호스트를 식별하는 데 이 키를 사용합니다. 퍼블릭 키를 입력하지 않으면 Amazon Redshift가 호스트를 식별하지 않습니다. 예를 들어 원격 호스트의 퍼블릭 키가 ssh-rsa AbcCbaxxx…Example root@amazon.com인 경우에는 publickey 필드에 "AbcCbaxxx…Example" 텍스트를 입력하십시오.

mandatory

(옵션) 연결 시도가 실패할 경우 COPY 명령의 중단 여부를 나타내는 절입니다. 기본값은 false입니다. Amazon Redshift가 하나 이상 연결에 성공하지 못하면 COPY 명령이 중단됩니다.

사용자 이름

(옵션) 호스트 시스템에 로그온하고 원격 명령을 실행하기 위해 사용할 사용자 이름입니다. 사용자 로그인 이름은 권한이 부여된 호스트 키 파일에 Amazon Redshift 클러스터의 퍼블릭 키를 추가할 때 사용한 로그인 이름과 동일해야 합니다. 기본 위치는 redshift입니다.

매니페스트 파일 생성에 대한 자세한 내용은 데이터 로드 프로세스 섹션을 참조하세요.

원격 호스트에서 COPY를 지원할 때는 COPY 명령에서 SSH 파라미터를 지정해야 합니다. SSH 파라미터를 지정하지 않으면 COPY가 FROM에서 지정한 파일이 데이터 파일인 것으로 간주하여 중단되고 맙니다.

자동 압축을 사용하는 경우 COPY 명령은 데이터 읽기 작업을 2회 실행합니다. 즉, 원격 명령을 2회 실행합니다. 첫 번째 읽기 작업은 압축 분석을 위한 데이터 샘플을 제공하기 위한 것이며, 두 번째 읽기 작업에서 실제로 데이터를 로드합니다. 원격 명령 2회 실행이 문제를 일으킬 수 있는 경우에는 자동 압축을 비활성화해야 합니다. 자동 압축을 비활성화하려면 COMPUPDATE 파라미터를 OFF로 설정하여 COPY 명령을 실행합니다. 자세한 내용은 자동 압축을 사용하여 테이블 로드 단원을 참조하십시오.

SSH에서 COPY를 사용하는 자세한 절차는 원격 호스트에서 데이터 로드 섹션을 참조하세요.

권한 부여

COPY 명령을 실행하려면 Amazon S3, Amazon EMR, Amazon DynamoDB, Amazon EC2의 데이터를 포함해 다른 AWS 리소스의 데이터에도 액세스할 수 있도록 권한 부여가 필요합니다. 권한은 클러스터에 연결되는 AWS Identity and Access Management(IAM) 역할을 참조하거나(역할 기반 액세스 제어) 사용자의 액세스 자격 증명을 입력하면(키 기반 액세스 제어) 부여할 수 있습니다. 보안과 유연성을 높이려면 IAM 역할 기반 액세스 제어를 권장합니다. 자세한 내용은 권한 부여 파라미터 단원을 참조하십시오.

SSH

원격 호스트에서 데이터를 로드할 때 SSH 프로토콜을 사용하도록 지정하는 절입니다. SSH를 지정하는 경우에는 s3://copy_from_ssh_manifest_file 인수를 사용하여 매니페스트 파일도 지정해야 합니다.

참고

SSH를 사용하여 원격 VPC에서 프라이빗 IP 주소를 사용하는 호스트에서 복사하는 경우 VPC는 향상된 VPC 라우팅을 사용하도록 설정해야 합니다. Enhanced VPC Routing에 대한 자세한 내용은 Amazon Redshift Enhanced VPC Routing 섹션을 참조하세요.

선택적 파라미터

SSH 연결을 통해 COPY를 사용할 때는 다음 파라미터를 옵션으로 지정할 수 있습니다.

지원되지 않는 파라미터

SSH에서 COPY를 사용할 때는 다음 파라미터를 사용할 수 없습니다.

  • Encrypted

  • MANIFEST

  • READRATIO