Amazon RedshiftからMashuへメタデータを同期するための設定手順と、必要なRedshift側の権限について説明します
1. Mashuサーバーのセットアップ
RedshiftからMashuへメタデータを同期するためには、Mashuサーバーのセットアップが必要です。Mashuサーバーのセットアップ方法は https://services.robon.co.jp/ja/kb/mashu/server/mashu-server を参照してください。
2.データソースの作成
Redshiftのメタデータを同期するために、タイプとして「AmazonRedshift」を選択してデータソースを作成します。

3. Redshiftへの接続情報設定
データソース詳細画面の「接続設定」タブで、Redshiftへの接続情報を設定します。
- 
Host: MashuサーバーからRedshiftサーバーへ接続する際に使用する、Redshiftサーバーのホスト名を指定します。 - (注意)Docker環境での実行について: MashuサーバーがRedshiftサーバーと同じホストマシン上のDockerコンテナ内で動作している場合、ホスト名として localhostを使用すると接続できません。Dockerコンテナからホストマシン上のRedshiftサーバーを参照できるように、ホストマシンのIPアドレスや、お使いのDockerネットワーク環境に応じた適切な接続情報を指定してください。
 
- (注意)Docker環境での実行について: MashuサーバーがRedshiftサーバーと同じホストマシン上のDockerコンテナ内で動作している場合、ホスト名として 
- Port: Redshiftサーバーのポート番号を指定します。ポート番号を指定しない場合Redshiftのデフォルトポート番号5439が使用されます。
- DBName: 接続対象となるRedshiftデータベースの名前を指定します。
- 
User: Redshiftへの接続に使用するユーザー名を指定します。 
- 
Password: 上記 Userに対応するパスワードを指定します。
- SSL接続: RedshiftサーバーとSSLを用いて通信したい場合は、SSL接続をONにします。

4. 必要なRedshift権限
MashuがRedshiftからメタデータを同期したり、テーブルのデータをプレビューするためには、接続に使用するユーザーに対して、適切な権限が付与されている必要があります。
4.1. スキーマのUSAGE権限 
同期対象スキーマに対するUSAGE権限が必要です。
GRANT USAGE ON SCHEMA <スキーマ名> TO <ユーザー名>;
4.2. 既存テーブルへのSELECT権限 
同期対象スキーマ内の同期対象テーブルに対するSELECT権限が必要です。
GRANT SELECT ON ALL TABLES IN SCHEMA <スキーマ名> TO <ユーザー名>;
4.3. 将来作成されるテーブルへの権限設定について
上記 GRANT SELECT ON ALL TABLES コマンドは、実行時点でスキーマ内に存在するテーブルに対してのみSELECT権限を付与します。そのため、このコマンド実行後に新しく作成されたテーブルには、自動的にSELECT権限が付与されません。
将来作成されるテーブルにも自動的にSELECT権限を付与するためには、以下のコマンドを実行して、対象スキーマにおけるデフォルト権限を設定してください。
ALTER DEFAULT PRIVILEGES IN SCHEMA <スキーマ名> GRANT SELECT ON TABLES TO <ユーザー名>;
これにより、<ユーザー名>は、<スキーマ名>内で今後作成される新しいテーブルに対しても、自動的にSELECT権限を持つようになります。
5. 接続設定の保存とスキーマ選択
Redshiftへの接続情報を入力後、「保存」ボタンをクリックします。Redshiftへの接続に成功すると、メタデータを取り込むスキーマを選択できるようになります。
同期したいメタデータが含まれるスキーマを選択してください。

6. メタデータの同期実行
データソース画面の「メタデータ」タブに移動し、「メタデータ同期」ボタンをクリックすることで、Redshiftからのメタデータ同期が開始されます。
