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

リモートホスト (SSH) からの COPY

COPY コマンドでは、Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをはじめとするコンピューターなど、1 つ以上のリモートホストから同時にデータをロードすることができます。COPY では Secure Shell (SSH) を使用してリモートホストに接続し、リモートホストのコマンドを実行してテキスト出力を生成します。リモートホストになることができるのは、EC2 の Linux インスタンスか、SSH 接続を許可するように設定されている Unix コンピューターまたは Linux コンピューターです。Amazon Redshift は、複数のホストに接続したうえで、各ホストに対していくつも SSH 接続を確立することができます。Amazon Redshift はそれぞれの接続を介して固有のコマンドを送信し、ホストの標準的な出力先にテキスト出力を生成したうえで、Amazon Redshift がそのテキストファイルを読み取ります。

FROM 句を使用してマニフェストファイルの Amazon S3 オブジェクトキーを指定します。そのマニフェストファイルは、COPY が SSH 接続を開いてリモートコマンドを実行するために使用する情報を提供します。

重要

マニフェストファイルを保持する S3 バケットがクラスターと同じリージョンに存在しない場合は、REGION パラメータを使用して、バケットがあるリージョンを指定する必要があります。

構文

Copy
FROM 's3://'ssh_manifest_file' } authorization SSH | optional-parameters

次の例では、マニフェストファイルを使用し、SSH を使用してリモートホストからデータをロードします。

Copy
copy sales from 's3://mybucket/ssh_manifest' iam_role 'arn:aws:iam::0123456789012:role/MyRedshiftRole' ssh;

Parameters

FROM

ロードするデータのソースです。

「s3://copy_from_ssh_manifest_file

COPY コマンドは、SSH を使用して複数のホストに接続できるだけでなく、各ホストに対して複数の SSH 接続を作成できます。COPY はそれぞれの接続を介してコマンドを実行し、コマンドからの出力を並列的にテーブルにロードします。s3://copy_from_ssh_manifest_file 引数は、マニフェストファイルの Amazon S3 オブジェクトキーを指定します。そのマニフェストファイルは、COPY が SSH 接続を開いてリモートコマンドを実行するために使用する情報を提供します。

s3://copy_from_ssh_manifest_file 引数は 1 つのファイルを明示的に参照する必要があります。これをキープレフィックスにすることはできません。例を以下に示します。

Copy
's3://mybucket/ssh_manifest.txt'

マニフェストファイルは、Amazon Redshift がホストに接続する際に使用する JSON 形式のテキストファイルです。マニフェストファイルは、Amazon Redshift にデータを返すためにホストで実行されるコマンドと、SSH ホストのエンドポイントを指定するものです。このほか、ホストのパブリックキー、ログインユーザー名、および各エントリの必須フラグを記載することもできます。次の例は、2 つの 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" 構造が含まれます。単一のホストに対して接続を複数作成することも、複数のホストに対して複数の接続を作成することもできます。例に示すように、フィールド名と値のどちらにも二重引用符が必要です。 引用符は、傾きの付いた "高機能な" 引用符ではなくシンプルな引用符 (0x22) にする必要があります。"mandatory" フィールドの中で二重引用符を必要としない値は、true または false のブール値のみです。

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

endpoint

ホストの URL アドレスまたは IP アドレス。たとえば、"ec2-111-222-333.compute-1.amazonaws.com" または "198.51.100.0"

コマンド

テキスト出力またはバイナリ出力を gzip、lzop、または bzip2 形式で生成する際にホストが実行するコマンド。コマンドは、ユーザー "host_user_name" が実行権限を持つコマンドであれば、どれでも指定できます。ファイルを印刷するなどのシンプルなコマンドでも、データベースにクエリを実行したり、スクリプトを実行したりするコマンドでもかまいません。出力 (テキストファイル、gzip バイナリファイル、lzop バイナリファイル、または bzip2 バイナリファイル) は、Amazon Redshift の COPY コマンドが取り込める形式にする必要があります。詳細については、「入力データを準備する」を参照してください。

publickey

(オプション) ホストのパブリックキー。パブリックキーが指定されている場合、Amazon Redshift はパブリックキーを使用してホストを特定します。パブリックキーが指定されていなければ、Amazon Redshift がホストの特定を試みることはありません。たとえば、リモートホストのパブリックキーが ssh-rsa AbcCbaxxx…Example root@amazon.com であれば、パブリックキーのフィールドには "AbcCbaxxx…Example" と入力してください。

mandatory

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

username

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

マニフェストファイルの作成の詳細については、「データをロードする手順」を参照してください。

リモートホストから COPY を実行するには、COPY コマンドに SSH パラメータを指定する必要があります。SSH パラメータを指定しない場合、COPY では、FROM で指定されたファイルがデータファイルであると想定され、COPY は失敗します。

自動圧縮を使用する場合には、COPY コマンドでデータの読み取り操作が 2 回実行されます。つまり、COPY コマンドではリモートコマンドが 2 回実行されることになります。初回の読み取り操作は圧縮の分析用データサンプルを提供するためのものであり、実際にデータがロードされるのは 2 回目の読み取り操作です。リモートコマンドを 2 回実行することが問題になるようであれば、自動圧縮は無効にする必要があります。自動圧縮を無効にするには、COMPUPDATE パラメータを OFF に設定して COPY コマンドを実行します。詳細については、「自動圧縮ありでテーブルをロードする」を参照してください。

SSH から COPY を使用するための詳細な手順については、「リモートホストからデータをロードする」を参照してください。

authorization

COPY コマンドには、Amazon S3、Amazon EMR、Amazon DynamoDB、Amazon EC2 を含む別の AWS リソースのデータにアクセスするための承認が必要になります。クラスターにアタッチされた AWS Identity and Access Management (IAM) ロールを参照して (ロールベースのアクセスコントロール)、または、IAM ユーザー用のアクセス認証情報を提供して (キーに基づくアクセスコントロール)、その承認を提供できます。セキュリティと柔軟性を強化するために、IAM ロールベースのアクセスコントロールを使用することをお勧めします。詳細については、「認証パラメータ」を参照してください。

SSH

SSH プロトコルを使用してリモートホストからデータがロードされることを指定する句です。SSH を指定する場合は、s3://copy_from_ssh_manifest_file 引数を使用してマニフェストファイルを指定する必要もあります。

オプションのパラメータ

SSH からの COPY では、オプションで次のパラメータを指定できます。

サポートされないパラメータ

SSH からの COPY では、次のパラメータは使用できません:

  • ENCRYPTED

  • MANIFEST

  • READRATIO

  • REGION