5단계: 매니페스트 파일 생성 - Amazon Redshift

5단계: 매니페스트 파일 생성

COPY 명령은 SSH를 사용하여 다수의 호스트에 연결할 뿐만 아니라 각 호스트마다 SSH 연결을 생성할 수 있습니다. 이렇게 생성된 각 호스트 연결을 통해 명령을 실행하고, 명령을 통해 출력되는 데이터를 병렬 방식으로 테이블에 로드합니다. 매니페스트 파일은 Amazon Redshift가 호스트에 연결하는 데 사용하는 JSON 형식의 텍스트 파일입니다. 매니페스트 파일은 SSH 호스트 엔드포인트를 비롯해 호스트에서 데이터를 Amazon Redshift에 반환할 때 실행하는 명령을 지정합니다. 필요한 경우, 호스트 퍼블릭 키, 로그인 사용자 이름 및 각 항목의 필수 플래그를 포함시킬 수 있습니다.

로컬 컴퓨터에 매니페스트 파일을 생성합니다. 이후 단계에서 파일을 Amazon S3에 업로드합니다.

매니페스트 파일의 형식은 다음과 같습니다.

{ "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" 구문이 하나씩 포함됩니다. 각 항목은 단일 SSH 연결을 나타냅니다. 단일 호스트에 다중 연결을, 혹은 다수의 호스트에 다중 연결을 생성할 수 있습니다. 예시와 같이 필드 이름과 값에는 큰따옴표가 필요합니다. 큰따옴표가 필요 없는 유일한 값은 필수 필드의 부울 값 true 또는 false입니다.

다음은 매니페스트 파일의 필드에 대한 설명입니다.

엔드포인트

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

명령

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

publickey

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

mandatory

(선택적) 연결이 실패하는 경우에 COPY 명령이 실패해야 하는지 여부를 나타냅니다. 기본값은 false입니다. Amazon Redshift가 하나 이상 연결에 성공하지 못하면 COPY 명령이 중단됩니다.

사용자 이름

(옵션) 호스트 시스템에 로그온하고 원격 명령을 실행하기 위해 사용할 사용자 이름입니다. 사용자 로그인 이름은 2단계에서 호스트의 인증 키 파일에 퍼블릭 키를 추가할 때 사용한 로그인 이름과 동일해야 합니다. 기본 사용자 이름은 "redshift"입니다.

다음 예는 동일 호스트에 대한 4개의 연결을 열어 각 연결을 통해 서로 다른 명령을 실행하는 완성된 매니페스트를 보여줍니다.

{ "entries": [ {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata1.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata2.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata3.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"}, {"endpoint":"ec2-184-72-204-112.compute-1.amazonaws.com", "command": "cat loaddata4.txt", "mandatory":true, "publickey": "ec2publickeyportionoftheec2keypair", "username": "ec2-user"} ] }