步驟 5:建立資訊清單檔案 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

步驟 5:建立資訊清單檔案

COPY 命令可以使用 SSH 來連接至多台主機,也可以對每台主機建立多個 SSH 連線。COPY 會透過每個主機連線執行命令,然後將命令的輸出平行載入資料表。資訊清單檔案是 JSON 格式的文字檔案,供 Amazon Redshift 用來連接至主機。資訊清單檔案指定 SSH 主機端點,以及在主機上執行以將資料傳回給 Amazon Redshift 的命令。您可以選擇在每個項目中包含主機公有金鑰、登入使用者名稱及 mandatory 旗標。

在本機電腦上建立資訊清單檔案。在稍後的步驟中,您會將檔案上傳到 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 連線。您可以對單一主機建立多個連線,也可以對多台主機建立多個連線。如上所示,欄位名稱和值都需要雙引號。不需要雙引號的唯一值為強制欄位的布林值 truefalse

下列描述資訊清單檔案中的欄位。

端點

主機的 URL 地址或 IP 地址。例如,"ec2-111-222-333.compute-1.amazonaws.com" 或 "22.33.44.56"

command

主機將執行的命令,以產生文字或二進位 (gzip、lzop 或 bzip2) 輸出。命令可以是使用者 "host_user_name" 有許可執行的任何命令。命令可能只是列印檔案這麼簡單,也可能查詢資料庫或啟動指令碼。輸出 (文字檔案、gzip 二進位檔案、lzop 二進位檔案,或 bzip2 二進位檔案) 必須採用 Amazon Redshift COPY 命令可擷取的格式。如需詳細資訊,請參閱 準備您的輸入資料

publickey

(選用) 主機的公有金鑰。如果提供公有金鑰,Amazon Redshift 會使用此金鑰來識別主機。如果未提供公有金鑰,Amazon Redshift 不會嘗試識別主機。例如,如果遠端主機的公有金鑰是:ssh-rsa AbcCbaxxx…xxxDHKJ root@amazon.com,請在公有金鑰欄位中輸入下列文字:AbcCbaxxx…xxxDHKJ

mandatory

(選用) 指出如果嘗試連線失敗,COPY 命令是否就應該失敗。預設值為 false。如果 Amazon Redshift 未成功建立至少一個連線,則 COPY 命令會失敗。

使用者名稱

(選用) 用來登入主機系統並執行遠端命令的使用者名稱。使用者登入名稱與步驟 2 中用來將公有金鑰新增至主機授權金鑰檔案的登入必須相同。預設的使用者名稱為 "redshift"。

下列範例顯示完整的清單檔案,可開啟對相同主機的四個連線,並透過每個連線執行不同的命令:

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