Zero ETL で Aurora PostgreSQL から Redshift へデータ連携をさせてみた #AWSreInvent
こんにちは、森田です。
先日 Aurora PostgreSQL が Amazon Redshift との Zero ETL 統合がプレビューで利用できるようになりました。
本記事では、実際に Zero ETL 統合を使って、 Aurora PostgreSQL から Redshift へデータの連携を行います。
やってみた
DB クラスターパラメータグループの作成
まずは、 Aurora PostgreSQL のクラスターパラメータグループの作成を行います。
なお、作成はプレビュー環境で行う必要があります。
RDSコンソールから下部からプレビュー環境を開くことができます。
パラメータグループファミリーに aurora-postgresql15 を指定して作成を行います。
続いて作成したパラメータグループのパラメータ rds.logical_replication=1 に変更します。
上記と同じように以下のパラメータも変更します。
- aurora.enhanced_logical_replication=1
- aurora.logical_replication_backup=0
- aurora.logical_replication_globaldb=0
Aurora PostgreSQL クラスターの作成
続いて、Aurora PostgreSQL クラスターの作成を行います。
version の指定を Zero-ETL Support のものを選択します。
クラスターパラメータグループも先ほど作成したものを選択し、クラスターの作成を完了させます。
Redshift パラメータグループの作成
Redshift もパラメータグループの作成を行います。
enable_case_sensitive_identifier(大文字と小文字の区別 )を true にしたものを作成します。
Redshift クラスターの作成
Redshift クラスターの作成を行います。
プレビュー版の Redshift クラスターを作成する必要があるため、コンソール上部に表示されているボタンから作成を行います。
作成時に、Preview track の項目があるため、 preview_2023 を選択します。
その他に、ゼロ ETL 統合を利用する場合は、以下を満たすように作成を行う必要があります。
- ノードの種類
- ra3.16xlarge
- ra3.4xlarge
- ra3.xlplus
- 暗号化
- 有効化
また、先ほど作成したパラメータグループも忘れないように設定します。
作成後に、Principalの設定が必要となります。
Redshift クラスターの Resource Policy タブから設定を行います。
Authorized principals では、Zero-ETL integration の作成を許可する IAMユーザ、 IAMロール、 AWSアカウントID の指定を行います。
Authorized integration source では、 Redshift への統合を許可するソースの指定を行います。
Zero-ETL integrations の作成
RDSのコンソールから Zero-ETL integrations の作成を行います。
ここでは、実際に連携元(ソース)と連携先(ターゲット)の指定を行っていきます。
なお、この integration は、データベースごとに必要となるため、連携したいデータベースの数だけ integration を作成する必要があります。
連携元(ソース)の指定
クラスターと連携したいデータベース名を入力します。
連携先(ターゲット)の指定
連携先の Redshift クラスターを入力します。
あとは、デフォルトのままで選択していき、integrationの作成を完了させます。
Redshift 側でのデータベースの作成
ソースから連携されたデータベース情報を格納するデータベースを用意し、Integrationと紐付けを行う必要があります。
クエリ エディターを使って、以下コマンドを実行し、integration_id を取得します。
SELECT integration_id FROM SVV_INTEGRATION;
取得後、以下コマンドを実行して、データベースの作成と Integration との紐付けを完了させます。
CREATE DATABASE Redshift側で作成するデータベース名 FROM INTEGRATION '取得したintegration_id' DATABASE ソースのデータベース名;
上記の設定が完了すると、 Databaseの項目もActiveとなり、データ連携が開始されます。
最後に
実際にゼロETLの設定を行ってみましたが、DB と Redshift での制約に気づかず、結構時間がかかってしまいました。
(Redshiftの暗号化を有効化することに気づかなかったです)
制約についても慣れれば、もっとサクッと構築できそうなので、パイプラインを管理することなく、データ連携ができるのは非常に魅力的だと感じました!