2016-11-21 5 views
0

クラスタにリージョン1のテーブルがあり、他のいくつかのリージョン(リージョン2)の別のクラスタにそれらのテーブルの一部をコピーしたいとします。
今まで私がmatillionを使用しており、そのために私は、クラスタからS3にsteps-aws redshiftでクロスリージョンのコピーテーブルを自動化

  1. コピーデータを以下の続いています。
  2. このデータをs3からcluster-bにロードします。

私が仕事をするには、マリオンが多少コストがかかるので、私はこれに代わる解決策が必要です。

私はCLI、ラムダ、APIについて聞いたことがありますが、私は毎週この手順を行っているので、どのように使うべきか分かりません。私はこのプロセスを自動化したいと思います。

答えて

1

AWS Command-Line Interface (CLI)は、AWSサービスの制御(Amazon Redshiftデータベースの起動、セキュリティ設定の変更など)に使用されるため、このユースケースには関係ありません。 Amazon Redshiftとの間でデータをインポート/エクスポートするコマンドは、SQL経由でRedshiftに直接発行する必要があります。他の地域のアマゾン赤方偏移のインスタンスにいくつかのテーブルをコピーするには

  • COPY commandでクラスタを使用し
  • のAmazon S3バケットに赤方偏移からデータをエクスポートするためにAUNLOAD commandでクラスタを使用しますBを使用して、S3からRedshiftにデータをロードし、REGIONパラメータを使用してソース領域を指定します。

したがって、各クラスタに別々のSQL接続が必要です。 でRedshiftに接続できるプログラムであれば十分でしょう。たとえば、標準psqlツール(バージョン8.0.2が望ましい)は、RedshiftがPostgreSQL 8.0.2に基づいているため、使用できます。

参照:Connect to Your Cluster by Using the psql Tool

だから、あなたのスクリプトのようなものになります:

psql -h clusterA -U username -d mydatabase -c 'UNLOAD...' 
psql -h clusterB -U username -d mydatabase -c 'COPY...' 

あなたはAWSラムダからこれを実行することができますが、ラムダ関数は、わずか5分の最大値、およびスクリプトのために実行その制限を超える可能性があります。代わりに、一部のマシンで通常のcronジョブを実行できます。

+0

CLIは関連していないと言いましたが、まだ使用できる場合はCLIを使用してその方法を教えてください。 –

+0

AWS CLIを使用してデータをRedshiftにインポート/エクスポートすることはできません。これは、AWS CLIに発行されるコマンドにのみ使用されます。 AWS CLIを使用してEC2インスタンスを起動することもできますが、インスタンス内で*ソフトウェアを使用する場合は、アプリケーションと直接通信する必要があります。レッドシフトと同じです。 –

関連する問題