メニュー
Amazon Redshift
データベース開発者ガイド (API Version 2012年12月1日)

ステップ 5: マニフェストファイルを作成する

COPY コマンドは、SSH を使用して複数のホストに接続できるだけでなく、各ホストに対して複数の SSH 接続を作成できます。COPY はそれぞれの接続を介してコマンドを実行し、コマンドからの出力を並列的にテーブルにロードします。マニフェストファイルは、Amazon Redshift がホストに接続する際に使用する JSON 形式のテキストファイルです。マニフェストファイルは、Amazon Redshift にデータを返すためにホストで実行されるコマンドと、SSH ホストのエンドポイントを指定するものです。このほか、ホストのパブリックキー、ログインユーザー名、および各エントリの必須フラグを記載することもできます。

マニフェスト ファイルの形式は以下のとおりです。

Copy
{ "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 接続ごとに 1 つずつ "entries" 構造が含まれます。各エントリは、1 つの SSH 接続を表します。単一のホストに対して接続を複数作成することも、複数のホストに対して複数の接続を作成することもできます。二重引用符は、フィールド名と値のどちらにも必要です。必須フィールドのなかで二重引用符を必要としない値は、true または false のブール値のみです。

以下の表では、マニフェストファイルのフィールドについて説明します。

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 であれば、publickey フィールドには AbcCbaxxx…xxxDHKJ と入力してください。

mandatory

(オプション) 接続ができなかった場合に COPY コマンドを失敗とするかどうかを示すものです。デフォルト: false。Amazon Redshift が接続を 1 つも正常に確立できなかった場合に、COPY コマンドが失敗になります。

username

(オプション) ホストシステムにログインし、リモートコマンドを実行する際に使用するユーザー名。ユーザーログイン名は、ステップ 2 でホストの認可されたキーファイルにパブリックキーを追加するときに使用したログイン名と同じものにする必要があります。デフォルトのユーザー名は「redshift」です。

以下の例は、同じホストに対して 4 つの接続を確立し、接続ごとに異なるコマンドを実行するマニフェストの全容を示したものです。

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