步骤 5:创建清单文件 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

步骤 5:创建清单文件

COPY 命令可连接到使用 SSH 的多台主机,并可以与每台主机建立多个 SSH 连接。COPY 通过每个主机连接运行一个命令,然后将来自这些命令的输出并行加载到表中。清单文件是 Amazon Redshift 用于连接主机的文本文件,采用 JSON 格式。清单文件指定 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 连接。您可以与单台主机建立多个连接或与多台主机建立多个连接。如上所示,字段名称和值均需要使用双引号。唯一的一个不需要双引号的值是 mandatory 字段的布尔值 truefalse

下面描述了清单文件中的字段。

endpoint

主机的 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,请在公有密钥字段中输入以下文本:AbcCbaxxx…xxxDHKJ

mandatory

(可选)指示在连接失败的情况下 COPY 命令是否应失败。默认为 false。如果 Amazon Redshift 未成功建立至少一个连接,COPY 命令将失败。

username

(可选)将用于登录到主机系统并运行远程命令的用户名。用户登录名必须与步骤 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"} ] }