🐈

Zero-ETLがpostgres試せるようになってた

2023/12/04に公開

概要

つい最近だがzero-etlがRDSのpostgresをサポートしやがったのでこの際取り組む。

経緯

会社でぽちぽちetlプロセス構築をおこなっている関係上、zero-etlには注目していたのだが、生憎Aurora, Redshiftのpostgresは対応されていなかったことから試したことがなかった。(使えなくても試せ)

ただこの度プレビューでAurora-postgresをzero-etlがサポートしたので試してみる。

https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/zero-etl.html

前提

定義

そもそもzero-etlとは?
zero-etl
ソースとターゲットシステム間のデータ転送が自動的に処理されるデータ統合の一種。
異なるシステム間で手動でデータを移送したりコピーしたりしなくても、保存されたデータをクエリするだけで住むように、データを収集、保存する。これによりプロセスがはるかに簡単に、ヒューマンエラーのリスクも軽減されるようなサービスとなっている。

ゼロ ETL は、ETL データパイプラインを構築する必要性を排除し、または最小限に抑える一連の統合です。抽出、変換、ロード (ETL) は、さまざまなソースからのデータを結合、クリーニング、正規化して、分析、人工知能 (AI)、機械学習 (ML) のワークロードに対応できるようにするプロセスです。従来の ETL プロセスは、開発、メンテナンス、スケールに時間がかかり、複雑です。一方、ゼロ ETL 統合では、ETL データパイプラインの作成を必要とせずに、ポイントツーポイントのデータ移動を円滑に行うことができます。また、ゼロ ETL を使用することで、データを移動することなく、データサイロ全体でクエリを実行できるようになります。

https://aws.amazon.com/jp/what-is/zero-etl/

方法

auroraとredshiftを繋げてzero-etlができる状態にする。

自分みたいな情弱とは違い、ネットには既にまとめてくださっている記事があるのでこちらも参考にする。
https://dev.classmethod.jp/articles/zero-etl-aurora-postgresql/

ひとまず現段階ではpostgresはohioリージョンを選択する必要がありそうなのでリージョン切り替えてスタート。

https://aws.amazon.com/jp/about-aws/whats-new/2023/11/amazon-aurora-postgresql-zero-etl-integration-redshift-public-preview/

プレビュー環境で作成しましょう。(rdsを開いて右下)

クラスターパラメータグループを作成,ここはドキュメント通りサポートされているaurora-postgres15を選択しましょう。
作成し終えたらパラメータグループの以下のパラメータを修正します。

rds.logical_replication=1
aurora.enhanced_logical_replication=1
aurora.logical_replication_backup=0
aurora.logical_replication_globaldb=0

Aurora PostgreSQL 15.4 in the US East (Ohio)

続いてはクラスターを作成します。
もちろんzero-etl supportであるversionを指定するように注意しましょう。
クラスタパラメータグループに関しても、先ほど作成したものを選択して作成を完了。

Aurora PostgreSQL (Compatible with PostgreSQL 15.4 and Zero-ETL Support)

redshiftに関しても同様。
パラメータグループを作成してから、クラスターを作成しましょう。

以下気をつける。

大文字と小文字の区別が有効になっている。詳細については、「データウェアハウスの大文字と小文字の区別を有効にする」を参照してください。

次にクラスター及びdbの作成
以下気をつけるのだ。

PREVIEW_2023トラックにプレビューで作成されている。詳細については、「ターゲット Amazon Redshift データウェアハウスの作成」を参照してください。
RA3 ノードタイプ (ra3.16xlarge、ra3.4xlarge、ra3.xlplus) または Amazon Redshift Serverless を実行している。
暗号化されている (プロビジョニングされたクラスターを使用している場合)

redshiftのresource policyにてzero-etl integrationの作成を許可するIAMユーザ、IAMロール、アカウントの指定を行わないとおこなられる。

Authorized principals に自分のアカウントidを、
integrationにrdsを許可するようにRedshiftのResource policyを編集する必要あり。

Fix resource policy and case sensitivity parameter
The selected target does not have the correct resource policy and case sensitivity parameter to support a zero-ETL integration. You can have RDS fix this for you, or you can manually update them in the Redshift console

https://aws.amazon.com/jp/blogs/news/getting-started-guide-for-near-real-time-operational-analytics-using-amazon-aurora-zero-etl-integration-with-amazon-redshift/
曰くquey dataから紐づけせたデータベースを作成する必要あり。

最後に


aws弱者が少ししか試すことしかできていないが、今後のワクワク感をアップさせてくれるようなリリースを味わえて嬉しい。
etl関連は運用時の人的コストがかかる箇所だと思うので、それが限りなく減らせるのは大変なメリットなのではないかと感じた。

参考文献


https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/zero-etl.html

https://dev.classmethod.jp/articles/zero-etl-aurora-postgresql/

https://aws.amazon.com/jp/about-aws/whats-new/2023/11/amazon-aurora-postgresql-zero-etl-integration-redshift-public-preview/

https://aws.amazon.com/jp/blogs/news/getting-started-guide-for-near-real-time-operational-analytics-using-amazon-aurora-zero-etl-integration-with-amazon-redshift/

Discussion