nendのSREエンジニア入門ブログ

nendのSREエンジニア入門ブログ

embulk入門(EC2インスタンス環境からredshiftによるDWH構築)


0. 前書き

機械学習や AI 技術の急速な発展に伴い、データの取り扱いがますます重要な役割を担っています。 データは、機械学習モデルの訓練や評価、ビジネスインテリジェンスにおける意思決定の根拠となるため、その質や整理が極めて重要です。 ここで、Embulk のようなデータ変換ツール(RTL:Record Transformation Language)が大きな役割を果たしています。

Embulk は、データ変換とデータ移行を効率化するためのオープンソースソフトウェアです。

異なるデータソースからデータを抽出し、変換して目的のデータストアにロードするプロセスを簡単かつ迅速に実行できます。

Embulk は、Java で書かれており、プラグインアーキテクチャを採用しているため、さまざまなデータソースやデータストアに対応できます。

これにより、開発者はデータの変換や移行の際に柔軟性を持ち、効率的な作業が可能になります。

データ変換ツールの重要性は、以下の点で特に顕著です。

    1. データ品質の向上 データ変換ツールを利用することで、データの品質を一貫して向上させることができます。 データの変換プロセス中に、欠損値の補完や外れ値の検出、データ型の統一など、さまざまなデータクレンジング処理を行うことができます。
    1. データ連携の強化 異なるシステムやアプリケーション間でデータを連携させる際に、データ形式の違いやプロトコルの違いが障壁となることがあります。 Embulk のようなデータ変換ツールを使用することで、データ連携の障壁を取り除き、システム間のデータ連携をスムーズに行うことができます。
    1. イムリーなデータアクセス データ変換ツールを活用することで、異なるデータソースから迅速にデータを抽出・変換し、必要なデータストアにアクセスすることができます。 これにより、適切なタイミングでデータを利用し、ビジネスインテリジェンスや意思決定に役立てることができます。
    1. コスト削減 手動でのデータ変換やデータ移行は、作業時間がかかり、人的コストも高くなります。 データ変換ツールを使用することで、作業時間を短縮し、人的コストを削減することができます。 また、データの品質向上により、誤った意思決定によるコストも低減されます。
    1. 拡張性と柔軟性 Embulk のようなデータ変換ツールは、プラグインアーキテクチャを採用しているため、新しいデータソースやデータストアが追加された場合でも容易に対応することができます。 これにより、企業がデータソースやデータストアを変更・追加する際の柔軟性が向上します。
    1. 標準化と再利用性 データ変換ツールを使用することで、データ変換プロセスを標準化し、再利用可能なコンポーネントやテンプレートを作成することができます。 これにより、新たなプロジェクトやタスクに対しても、効率的にデータ変換作業を行うことができます。
    1. データセキュリティの向上 データ変換ツールは、データ移行や変換の際に、データの暗号化やアクセス制御などのセキュリティ対策を提供します。 これにより、データの機密性や完全性を保護し、セキュリティリスクを軽減することができます。
  • まとめ Embulk のようなデータ変換ツールは、データ品質の向上、データ連携の強化、 タイムリーなデータアクセス、コスト削減、拡張性と柔軟性の向上、標準化と再利用性の促進、 データセキュリティの向上など、多くのメリットを提供します。 これらの利点により、企業はデータ変換やデータ移行のプロセスを効率化し、ビジネスインテリジェンスや意思決定の精度を向上させることができます。


1. Embulkの概要

Embulkは、エンタープライズレベルのデータ統合を実現するためのオープンソースのデータ統合ツールです。

異なるデータソースからデータを抽出し、変換し、異なるデータストアへとロードする、いわゆるETL(Extract, Transform, Load)プロセスを効率的かつ柔軟に行うことができます。

Javaで実装されており、プラグインアーキテクチャを採用しているため、多様なデータソースやデータストアに対応し、独自のデータ変換や処理を容易に追加することができます。

1-1. Embulkの特徴

Embulkは、以下のような特徴を持っています。

  • プラグインアーキテクチャ: 多様なデータソースやデータストアに対応できるだけでなく、独自のデータ処理や変換処理を容易に追加できます。これにより、Embulkは様々なビジネスシナリオに適応しやすいデータ統合ツールとなっています。

  • スケーラビリティ: Embulkは、マルチスレッドおよびマルチプロセスによる並行処理をサポートしています。これにより、大量のデータを効率的に処理でき、高速なデータ統合を実現します。

  • 設定ファイルによる管理: Embulkは、YAML形式の設定ファイルによってデータ統合の設定を管理します。これにより、データ統合のプロセスを明確化し、再利用可能で保守性の高いデータ統合パイプラインを構築することができます。

  • プレビュー機能: Embulkは、データ統合プロセスを実行する前に、その結果をプレビューすることができます。これにより、データ統合のパイプラインが期待通りに動作するかどうかを確認し、問題があれば修正することが容易になります。

  • クロスプラットフォーム: Javaで実装されているため、WindowsmacOSLinuxなどの異なるプラットフォームで動作します。

これにより、環境に依存せず、幅広いシステムでデータ統合を実現することができます。


2. AWSのEC2インスタンスによるembulk実行環境の準備

  • AWSアカウント作成

https://aws.amazon.com/jp/register-flow/ まずはじめに、AWSアカウントを作成します。 AWSの公式ウェブサイトにアクセスし、「無料で始める」または「アカウントを作成」をクリックしてください。 次に、必要な情報(氏名、メールアドレス、パスワード、AWSアカウント名)を入力し、 「続行」をクリックします。 その後、連絡先情報やお支払い情報の入力が求められます。 全て入力が完了したら、アカウントが作成されます。

  • AWS IAMユーザ作成

AWS Identity and Access Management (IAM)を使用して、個別のユーザーを作成します。 これにより、ユーザーごとに適切な権限を与えることができます。

まず、AWS管理コンソールにログインし、「サービス」から「IAM」を選択します。

次に、「ユーザー」をクリックし、「ユーザーを追加」を選択します。

ユーザー名とアクセスタイプ(プログラムによるアクセス、AWSマネジメントコンソールによるアクセス)を指定し、「次のステップ」をクリックします。

ユーザーに適切な権限を与えるために、IAMポリシーをアタッチし、「ユーザーの作成」をクリックして完了します。


3. AWS EC2インスタンス作成

AWSマネジメントコンソールにログインし、「サービス」から「EC2」を選択します。

次に、「インスタンスの作成」をクリックし、希望のインスタンスタイプを選択します。

インスタンスの詳細設定やストレージ、タグの設定を行います。

「セキュリティグループの設定」で適切なポートを開放します。

最後に、「起動」をクリックし、キーペアを選択または新規作成してインスタンスを起動します。

3-1. embulk動作環境の前提知識

  • Java EmbulkはJavaで実装されているため、Java 8以降のバージョンが必要です。Javaがインストールされていない場合は、OracleのウェブサイトまたはOpenJDKプロジェクトからJavaをダウンロードし、インストールしてください。

  • Embulkのダウンロード Embulkの公式ウェブサイト (https://www.embulk.org/) からEmbulkのバイナリファイルをダウンロードします。 ダウンロードしたファイルを適切なディレクトリに移動し、実行可能な状態にします。

  • 環境変数の設定: システムの環境変数にEmbulkのバイナリファイルのパスを追加します。これにより、コマンドラインからEmbulkを実行できるようになります。

  • Embulkの基本的な使用方法

Embulkを使用してデータ統合を行うには、以下の手順に従います。

  • 設定ファイルの作成: YAML形式の設定ファイルを作成し、データの抽出元、変換処理、ロード先などの設定を記述します。必要に応じて、プラグインをインストールして設定ファイルに追加します。

  • データ統合の実行: コマンドラインから embulk run <設定ファイル> コマンドを実行して、データ統合プロセスを開始します。データの抽出、変換、ロードが順次行われます。

  • プレビューとデバッグ: 設定ファイルに問題がある場合や、データ統合の結果を確認したい場合は、 embulk preview <設定ファイル> コマンドを使用して、データ統合の結果をプレビューします。 問題があれば設定ファイルを修正し、再度プレビューや実行を行います。

  • Embulkプラグインの活用

Embulkのプラグインアーキテクチャを活用することで、データ統合プロセスをカスタマイズし、独自のビジネス要件に対応できます。 Embulkプラグインは主に以下の4つの種類があります。

  • Inputプラグイン: データの抽出元となるデータソースに接続し、データを読み込むプラグインです。例えば、CSVファイル、データベース、APIなどのデータソースからデータを抽出するためのプラグインが提供されています。

  • Outputプラグイン: データのロード先となるデータストアに接続し、データを書き込むプラグインです。例えば、データベース、クラウドストレージ、データウェアハウスなどのデータストアにデータをロードするためのプラグインが提供されています。

  • Filterプラグイン: データの変換や加工を行うプラグインです。例えば、データの型変換、値の置換、列の削除・追加などの処理を実行するためのプラグインが提供されています。

  • Executorプラグイン: Embulkの動作を制御するプラグインです。例えば、並行処理の設定やリトライロジック、タスクの分割方法などをカスタマイズするためのプラグインが提供されています。

プラグインのインストールは、 embulk gem install <プラグイン名> コマンドを使用して行います。 インストールが完了したら、設定ファイルにプラグインの設定を追加することで、データ統合プロセスに組み込むことができます。

3-2. amazon linux2によるembulk環境構築デモ(バイナリファイル使用)

  • 前提条件 このデモでは、Amazon Linux 2の環境がすでにセットアップされていることを前提としています。以下の手順は、Amazon Linux 2のインスタンスSSH接続できる状態から始めます。

環境の準備 まず、Amazon Linux 2のインスタンスSSH接続します。以下のコマンドを使用して、インスタンスに接続できます。

$ ssh -i <your_private_key.pem> ec2-user@<your_instance_public_ip>

インスタンスに接続したら、最新のパッケージをインストールします。以下のコマンドを実行して、パッケージをアップデートします。

$ sudo yum update -y

Javaのインストール

EmbulkはJavaで実装されているため、Java 8以降のバージョンが必要です。以下の手順でJavaをインストールします。

まず、Javaのインストールを行います。以下のコマンドを実行して、OpenJDK 8をインストールします。

$ sudo yum install -y java-8-openjdk-devel

Javaのインストールが完了したら、バージョンを確認します。以下のコマンドを実行して、Javaのバージョンが表示されることを確認します。

$ java -version

Embulkのインストール Embulkのバイナリファイルをダウンロードします。以下のコマンドを実行して、Embulkのバイナリファイルをダウンロードし、実行可能な状態にします。

$ curl -o embulk --create-dirs -L "https://dl.embulk.org/embulk-latest.jar"
$ chmod +x embulk

以下のコマンドを実行して、Embulkを /usr/local/bin に移動します。

$ sudo mv embulk /usr/local/bin/

Embulkのバージョンを確認します。以下のコマンドを実行して、Embulkのバージョンが表示されることを確認します。

$ embulk --version

サンプルデータの準備

このデモでは、CSV形式のサンプルデータを使用します。以下のコマンドを実行して、サンプルデータを作成します。

$ echo "id,name,age" > sample.csv
$ echo "1,Alice,30" >> sample.csv
$ echo "2,Bob,28" >> sample.csv
$ echo "3,Charlie,22" >> sample.csv
$ echo "4,David,40" >> sample.csv

これにより、以下の内容の sample.csv ファイルが作成されます。

id,name,age
1,Alice,30
2,Bob,28
3,Charlie,22
4,David,40

設定ファイルの作成

  1. Embulkの設定ファイルを作成します。以下のコマンドを実行して、YAML形式の設定ファイル try.yml を作成します。

$ touch try.yml

  1. 作成した try.yml ファイルを編集し、以下の内容を追加します。
in:
  type: file
  path_prefix: /path/to/your/sample.csv
  decoders:
  - {type: gzip}
  parser:
    charset: UTF-8
    newline: LF
    type: csv
    delimiter: ','
    quote: '"'
    escape: ''
    null_string: ''
    trim_if_not_quoted: false
    skip_header_lines: 1
    allow_extra_columns: false
    allow_optional_columns: false
    columns:
    - {name: id, type: long}
    - {name: name, type: string}
    - {name: age, type: long}

out:
  type: stdout

この設定ファイルでは、CSVファイルからデータを読み込み、標準出力にデータを表示するように設定しています。path_prefix の値を、先ほど作成した sample.csv ファイルのパスに置き換えてください。


3-3. Embulkの実行

以下のコマンドを実行して、Embulkを実行し、データ統合プロセスを開始します。

$ embulk run try.yml

実行が完了すると、標準出力にデータが表示されます。以下のような出力が表示されることを確認します。

{"id":1,"name":"Alice","age":30}
{"id":2,"name":"Bob","age":28}
{"id":3,"name":"Charlie","age":22}
{"id":4,"name":"David","age":40}

デバッグとプレビュー

設定ファイルに問題がある場合や、データ統合の結果を確認したい場合は、以下のコマンドを使用してデータ統合の結果をプレビューします。

$ embulk preview try.yml

プレビューの結果が表示されます。以下のような出力が表示されることを確認します。

+---------+----------+-----+
| id:long | name     | age |
+---------+----------+-----+
|       1 | Alice    |  30 |
|       2 | Bob      |  28 |
|       3 | Charlie  |  22 |
|       4 | David    |  40 |


----
## 3-4. 設定ファイルの作成

Embulkでは、YAML形式の設定ファイルを使用してデータ統合の設定を行います。このデモでは、CSVファイルを読み込み、標準出力に表示する簡単な設定ファイルを作成します。

1. 以下の内容で `try.yml` ファイルを作成します。

in: type: file path_prefix: ./sample.csv parser: charset: UTF-8 newline: LF type: csv delimiter: ',' quote: '"' escape: '' null_string: 'NULL' trim_if_not_quoted: false skip_header_lines: 1 allow_extra_columns: false allow_optional_columns: false stop_on_invalid_record: true columns: - {name: id, type: long} - {name: name, type: string} - {name: age, type: long}

out: type: stdout

この設定ファイルでは、入力として sample.csv ファイルを指定し、CSVファイルのパース設定を記述しています。出力として標準出力を指定しています。


----
## 3-5. Embulkの実行と動作確認

以下のコマンドを実行して、Embulkを実行し、データ統合プロセスを開始します。

$ embulk run try.yml
Embulkが正常に実行されると、標準出力に以下のような結果が表示されます。

id,name,age 1,Alice,30 2,Bob,28 3,Charlie,22 4,David,40

これで、Amazon Linux 2でEmbulkをインストールし、動作確認ができました。
今回のデモでは、CSVファイルを読み込み、
標準出力に表示する簡単なデータ統合を行いましたが、Embulkのプラグインを活用することで、さまざまなデータソースからのデータ抽出やデータストアへのデータロード、データの変換・加工を行うことができます。



docker-composeでetl対象DB/BI/embulk環境をデプロイする

----
## 3-6. Dockerファイルの用意

まず、以下のようなdocker-compose.yamlファイルを作成します。

version: '3'

services: db: image: mysql:5.7 environment: MYSQL_DATABASE: sample MYSQL_USER: user MYSQL_PASSWORD: password MYSQL_ROOT_PASSWORD: root_password volumes: - ./mysql-data:/var/lib/mysql ports: - "3306:3306"

metabase: image: metabase/metabase ports: - "3000:3000" environment: MB_DB_TYPE: mysql MB_DB_DBNAME: sample MB_DB_PORT: 3306 MB_DB_USER: user MB_DB_PASS: password MB_DB_HOST: db

embulk: image: embulk/embulk volumes: - ./embulk:/embulk - ./mysql-data:/var/lib/mysql command: ["embulk"] tty: true

このファイルでは、3つのサービスを定義しています。


* db:MySQLデータベースサーバー

* metabase:MetabaseのWebアプリケーションサーバー

* embulk:Embulkのコンテナ

dbサービスでは、MySQLのイメージを使用し、MYSQL_DATABASE、MYSQL_USER、MYSQL_PASSWORD、MYSQL_ROOT_PASSWORDの環境変数を設定しています。また、ポート3306をホストとコンテナの間でマッピングし、データを永続化するためにvolumesを設定しています。

metabaseサービスでは、Metabaseのイメージを使用し、MB_DB_TYPE、MB_DB_DBNAME、MB_DB_PORT、MB_DB_USER、MB_DB_PASS、MB_DB_HOSTの環境変数を設定しています。
また、ポート3000をホストとコンテナの間でマッピングします。

embulkサービスでは、Embulkのイメージを使用し、volumesを設定しています。
また、commandにはembulkコマンドを指定しています。


----
## 3-7. Docker Composeを実行する

Docker Composeを実行する前に、プロジェクトのディレクトリに移動してください。

$ cd myproject

次に、以下のコマンドを実行して、Docker Composeを起動します。

$ docker-compose up -d

これにより、MySQL、Metabase、Embulkの3つのコンテナが作成され、起動されます。

サンプルデータの準備

まず、CSV形式のサンプルデータを作成します。以下のような内容のsample.csvファイルを作成し、./embulkディレクトリに保存します。

id,name,age,address 1,Alice,25,Tokyo 2,Bob,30,Osaka 3,Charlie,35,Kyoto

----
## 3-8. Embulkの設定ファイルを作成する

Embulkを使用して、CSVファイルからMySQLデータベースにデータをロードします。Embulkの設定ファイルを作成し、必要なパラメータを設定します。

以下のコマンドを使用して、Embulkの設定ファイルを作成します。

$ embulk guess ./embulk/sample.csv -o ./embulk/config.yml

guessコマンドを使用することで、CSVファイルのスキーマを自動的に推測し、設定ファイルを作成できます。作成されたconfig.ymlファイルを編集して、以下のように設定します。

in: type: file path_prefix: ./embulk/sample.csv parser: type: csv delimiter: ',' quote: '"' null_string: 'NULL' escape: '"' columns: - {name: id, type: long} - {name: name, type: string} - {name: age, type: long} - {name: address, type: string}

out: type: jdbc driver_path: /usr/share/java/mysql-connector-java.jar url: jdbc:mysql://db/sample user: user password: password table: users mode: insert

この設定では、inプラグインでCSVファイルを読み込み、outプラグインでMySQLデータベースにデータを書き込みます。また、必要なパラメータ(ドライバーのパス、接続先のURL、ユーザー名、パスワード、テーブル名など)が設定されています。


----
## 3-9. Embulkのプラグインをインストールする

Embulkのプラグインをインストールする必要があります。以下のコマンドを使用して、必要なプラグインをインストールします。

$ embulk gem install embulk-input-file $ embulk gem install embulk-output-jdbc $ embulk gem install embulk-output-mysql

これにより、inプラグインとoutプラグインがインストールされます。


Embulkのドライランを実行する

Embulkを使用して、MySQLデータベースにデータをロードする前に、ドライランを実行して、問題がないか確認します。

以下のコマンドを使用して、Embulkのドライランを実行します。

$ embulk run ./embulk/config.yml -c ./embulk/

これにより、設定ファイルに従って、CSVファイルが解析され、MySQLデータベースに書き込まれる予定のデータが表示されます。

EmbulkでMySQLデータベースにデータをロードする
ドライランが成功したら、実際にMySQLデータベースにデータをロードします。

以下のコマンドを使用して、Embulkを実行します。

$ embulk run ./embulk/config.yml -c ./embulk/

これにより、CSVファイルからMySQLデータベースにデータがロードされます。


----
## 3-10. Metabaseでデータを可視化する

Metabaseを使用して、MySQLデータベースにロードされたデータを可視化します。

Metabaseにアクセスするには、Webブラウザで以下urlにアクセスします。
http://localhost:3000

Metabaseのダッシュボードが表示されます。

最初に、データベースを追加する必要があります。左側のサイドバーで「Add data」をクリックします。
その後、MySQLデータベースを選択し、必要な情報を入力します。以下の情報を入力します。

Database name:sample Host:localhost Port:3306 Database username:user Database password:password

これらの情報を入力したら、「Test Connection」をクリックして接続を確認します。
接続が成功したら、「Save」をクリックしてデータベースを追加します。

次に、クエリを作成します。
左側のサイドバーで「Ask a question」をクリックし、適切なデータベースを選択します。その後、テーブルを選択し、必要なグラフや表を作成します。

以上の手順を実行することで、CSVファイルからMySQLデータベースにデータをロードし、Metabaseで可視化することができます。



s3→ec2(mysql)で特定カラムを暗号化して転送(embulk-filter-encrypt-column プラグイン)

ここではダミーのcsvをs3にアップロードし、一部のカラムに暗号化を施しmysqlに転送する工程を解説します

----
## 3-11. ダミーデータの作成とs3アップロード

以下のサイトでダミーデータを作成します。
https://testdata.userlocal.jp/
行数は何でもいいですが確認しやすいよう50行以内にしましょう。

(例)

"氏名","氏名(ひらがな)","年齢","生年月日","性別","血液型","メールアドレス","電話番号","携帯電話番号","郵便番号","住所","会社名","クレジットカード","有効期限","マイナンバー" "阿部 望","あべ のぞみ",49,"1973年06月10日","男","AB","abe_610@example.net","0565-10-3122","070-6963-2372","478-1873","愛知県豊田市若宮町1-1-3","株式会社パートナー","3543265770563937","01/26","576149735983"

上のような生成されたファイルをs3バケットにアップロードします。

----
## 3-12. AWS S3にアクセスキーとシークレットキーを設定する

最初に、AWS S3にアクセスするために必要なアクセスキーとシークレットキーを設定します。AWS S3のWebコンソールにログインし、[セキュリティ認証情報]をクリックして、アクセスキーとシークレットキーを取得します。

Embulkの設定ファイルを作成する

次に、Embulkの設定ファイルを作成します。以下のような設定を記述することで、AWS S3にアップロードされたCSVファイルを読み込み、指定したデータベースに書き込みます。

in: type: s3 bucket: your-bucket access_key_id: YOUR_ACCESS_KEY_ID secret_access_key: YOUR_SECRET_ACCESS_KEY path_prefix: /path/to/csv/file.csv parser: type: csv delimiter: ',' quote: '"' null_string: 'NULL' escape: '"' columns: columns: - {name: name, type: string} - {name: name_hiragana, type: string} - {name: age, type: long} - {name: birthdate, type: string} - {name: gender, type: string} - {name: blood_type, type: string} - {name: email, type: string} - {name: phone_number, type: string} - {name: mobile_phone_number, type: string} - {name: postal_code, type: string} - {name: address, type: string} - {name: company_name, type: string} - {name: credit_card_number, type: string} - {name: expiration_date, type: string} - {name: my_number, type: string}

filters: - type: encrypt_column columns: - name - name_hiragana - age - birthdate - gender - blood_type - email - phone_number - mobile_phone_number - postal_code - address - company_name - credit_card_number - expiration_date - my_number key_provider: type: random secret_key: your_secret_key key_columns: - id out: type: jdbc driver_path: /usr/share/java/mysql-connector-java.jar url: jdbc:mysql://db/sample user: user password: password table: users mode: insert

設定ファイルでは、inプラグインでS3からCSVファイルを読み込み、outプラグインでMySQLデータベースにデータを書き込みます。
また、filtersで個人情報を含むemailカラムを暗号化するように設定されています。


----
## 3-13. Embulkのプラグインをインストールする

Embulkのプラグインをインストールする必要があります。
以下のコマンドを使用して、必要なプラグインをインストールします。

$ embulk gem install embulk-input-s3 $ embulk gem install embulk-output-jdbc $ embulk gem install embulk-filter-encrypt-column

これにより、inプラグインとoutプラグイン、encrypt_columnプラグインがインストールされます。


Embulkのドライランを実行する

以下のコマンドを使用して、Embulkのドライランを実行します。

$ embulk run /path/to/config.yml

ドライランが成功したら、実際にMySQLデータベースにデータをロードします。

$ embulk run /path/to/config.yml

これにより、AWS S3にアップロードされたCSVファイルからデータが読み込まれ、指定したMySQLデータベースに書き込まれます。
また、emailカラムに含まれる個人情報が暗号化されます。

以上の手順を実行することで、AWS S3にアップロードされたCSVファイルからEmbulkを使用してMySQLデータベースにデータをロードし、個人情報を暗号化することができます。


----
# 4. mysqlのデータをredshiftに出力して可視化する

## 4-1.Embulkの設定ファイルを作成する

まずは、Embulkの設定ファイルを作成します。
MySQLからデータを抽出してRedshiftに挿入するため、以下のような設定ファイルを作成します。

in: type: mysql host: localhost user: user password: password database: sample table: users columns: columns: - {name: name, type: string} - {name: name_hiragana, type: string} - {name: age, type: long} - {name: birthdate, type: string} - {name: gender, type: string} - {name: blood_type, type: string} - {name: email, type: string} - {name: phone_number, type: string} - {name: mobile_phone_number, type: string} - {name: postal_code, type: string} - {name: address, type: string} - {name: company_name, type: string} - {name: credit_card_number, type: string} - {name: expiration_date, type: string} - {name: my_number, type: string}

filters: - type: decrypt_column columns: - name - name_hiragana - age - birthdate - gender - blood_type - email - phone_number - mobile_phone_number - postal_code - address - company_name - credit_card_number - expiration_date - my_number key_provider: type: random secret_key: your_secret_key key_columns: - id

out: type: redshift host: your-redshift-endpoint user: your-redshift-username password: your-redshift-password database: your-redshift-database schema: your-redshift-schema table: users mode: insert

設定ファイルでは、inプラグインでMySQLからデータを抽出し、outプラグインでRedshiftにデータを書き込みます。
また、filtersで個人情報を含むemailカラムを復号化するように設定されています。



## 4-2.Embulkのプラグインをインストールする

以下のコマンドを使用して、必要なプラグインをインストールします。

$ embulk gem install embulk-input-mysql $ embulk gem install embulk-output-redshift $ embulk gem install embulk-filter-decrypt-column

これにより、inプラグインとoutプラグイン、decrypt_columnプラグインがインストールされます。


Embulkのドライランを実行する

以下のコマンドを使用して、Embulkのドライランを実行します。

$ embulk run /path/to/config.yml

ドライランが成功したら、実際にRedshiftにデータを書き込みます。

$ embulk run /path/to/config.yml

これにより、MySQLデータベースからデータが抽出され、指定したRedshiftに書き込まれます。また、emailカラムに含まれる個人情報が復号化されます。

以上の手順を実行することで、Embulkを使用してMySQLからデータを抽出してRedshiftにデータを書き込み、個人情報を復号化することができます。