Zero ETL で Aurora PostgreSQL から Redshift へデータ連携をさせてみた #AWSreInvent

2023.12.01

こんにちは、森田です。

先日 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の暗号化を有効化することに気づかなかったです)

制約についても慣れれば、もっとサクッと構築できそうなので、パイプラインを管理することなく、データ連携ができるのは非常に魅力的だと感じました!

参考