血と汗となみだを流す

個人の思ったこと、やったことの吐き出し口です。

Aurora MySQL のテーブルを Database Migration Service (DMS) → Kinesis Data Streams → Amazon Data Firehose (旧: Kinesis Data Firehose) → S3 でデータ出力してみた

以下の構成で Amazon Aurora MySQL 上のテーブルのデータを Amazon S3 にエクスポートします。

Architecture

Aurora MySQL 上のテーブルは以下のような形です。

use kajihirodb;
select * from dms_source_table;

id title keyword
1 風の谷のナウシカ ナウシカ
2 となりのトトロ トトロ
3 天空の城ラピュタ パズー
4 ハウルの歩く城 ハウル
5 千と千尋の神隠し 千尋

ここから DMS を利用してテーブルデータを取得し、Kinesis Data Streams に流します。
Kinesis Data Streams から Kinesis Data Firehose に送り、S3 に出力します。
Kinesis 関連の設定はすべてデフォルト値です。

以下、S3 に出力した結果です。

S3 Console

Kinesis Data Firehose で指定した S3 バケット上に yyyy / mm / dd で区切られ、その中にファイルが出力されています。
ファイルの中身は以下でした。

  • KDS-S3-KdgnY-1-2024-02-20-09-42-55-76b4ea85-b321-497a-b3b1-0e3d79b8d705
{
    "metadata": {
        "timestamp":    "2024-02-20T09:42:55.692040Z",
        "record-type":  "control",
        "operation":    "create-table",
        "partition-key-type":   "task-id",
        "schema-name":  "",
        "table-name":   "awsdms_apply_exceptions"
    }
}
  • KDS-S3-KdgnY-1-2024-02-20-09-42-56-7f7b4097-2208-4d6f-93f9-c8e5b8fc1b4a
{
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.340335Z",
        "record-type":  "control",
        "operation":    "drop-table",
        "partition-key-type":   "task-id",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}{
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.348950Z",
        "record-type":  "control",
        "operation":    "create-table",
        "partition-key-type":   "task-id",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}{
    "data": {
        "id":   1,
        "title":    "風の谷のナウシカ",
        "keyword":  "ナウシカ"
    },
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.360235Z",
        "record-type":  "data",
        "operation":    "load",
        "partition-key-type":   "primary-key",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}{
    "data": {
        "id":   2,
        "title":    "となりのトトロ",
        "keyword":  "トトロ"
    },
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.368645Z",
        "record-type":  "data",
        "operation":    "load",
        "partition-key-type":   "primary-key",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}{
    "data": {
        "id":   3,
        "title":    "天空の城ラピュタ",
        "keyword":  "パズー"
    },
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.376638Z",
        "record-type":  "data",
        "operation":    "load",
        "partition-key-type":   "primary-key",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}{
    "data": {
        "id":   5,
        "title":    "千と千尋の神隠し",
        "keyword":  "千尋"
    },
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.394266Z",
        "record-type":  "data",
        "operation":    "load",
        "partition-key-type":   "primary-key",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}
  • KDS-S3-KdgnY-1-2024-02-20-09-42-56-eb681b7d-0113-4e51-a1b7-b7670fdef71c
{
    "data": {
        "id":   4,
        "title":    "ハウルの歩く城",
        "keyword":  "ハウル"
    },
    "metadata": {
        "timestamp":    "2024-02-20T09:42:56.385582Z",
        "record-type":  "data",
        "operation":    "load",
        "partition-key-type":   "primary-key",
        "schema-name":  "kajihirodb",
        "table-name":   "dms_source_table"
    }
}

実際に S3 に出力した場合にどのようなデータ形式になるかの参考になればと思います。

プライバシーポリシー