公式ドキュメント はありますが、AWS側の設定なども含めて細かくやり方を残しておきます。
事前準備
Azure SQL DataWarehouse準備
作成手順は公式ドキュメント参考
Azure Portal で Azure SQL データ ウェアハウスを作成し、クエリを実行する
今回は「東日本リージョン」に作ります
Amazon Redshift準備
作成手順は公式ドキュメント参考
Amazon Redshiftクラスターを作成するデータがなければサンプルデータをロードしておいてください
サンプルデータをロードするQuery Editorを使って、対象テーブルのテーブル定義を表示します。
SELECT * FROM pg_table_def WHERE tablename = '[テーブル名]'
Redshiftと同じ構造のテーブルをSQL DWに作る
- SSMSでSQL DWに接続して、先程確認したテーブル定義と同じ構造のテーブルを作っておきます。空のテーブルでよいです。
SQL Server Management Studio (SSMS) で SQL Data Warehouse に接続する
Azure Data Factoryを準備する
Redshiftのセキュリティグループ編集
Redshiftにアクセスするので、RedshiftのセキュリティグループでAzureからの接続を許可しないといけません。
5439ポートを0.0.0.0/0、つまり全空けだと当然うまくいきますが、それだとなんかイヤなのである程度アクセス元を絞りたいと思います。
Redshiftにアクセスするのは、最初に接続してテーブル構造とかを持ってくるのが「Data Factory」、実際にデータコピーするのが「SQL DataWarehouse」になります。
Data FactoryとSQL DWの接続元IPアドレスは特定することができないので、最もアクセス元を絞れるのは、リージョンで払い出させれる可能性のあるIPアドレスレンジということになります。
Data Factoryは「米国東部リージョン」、SQL DWは「東日本リージョン」に作っているので、両方のリージョンからのアクセスを許可してあげる必要があります。
以下ダウンロードサイトより、米国東部リージョンと東日本リージョンのIPRangeを取得します。
Azure Datacenter IP Rangesかなりの量なので、AWS CLIでセキュリティグループの設定を追加していきます。1セキュリティグループ当たり、60ルールが上限なので、そのへんはセキュリティグループを複数作って対応していきます。
for ip in `cat iprange.txt`; do aws ec2 authorize-security-group-ingress --group-id [Security Group ID] --protocol tcp --port 5439 --cidr $ip; done