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"} ] }