S3からAuroraへのデータインポート


背景

Athenaで処理していたデータをAuroraで管理するような仕様ができたので、S3からAuroraへのデータインポートを考え始めた。

データインポート

Auraoの公式ドキュメントを参照すれば大体いけます。

Amazon S3 バケットのテキストファイルから Amazon Aurora MySQL DB クラスターへのデータのロード - Amazon Relational Database Service

↑のドキュメントを簡単にまとめると、以下のことです。

ハマったところ

Amazon Aurora MySQL から AWS の他のサービスへのネットワーク通信の有効化 - Amazon Relational Database Service

↑はわかりませんでしたので、無視した。そしたら、全然S3とつながらなかった。それはそうですね。Auroraはprivate vpcに置いてあるため、そのまま外のS3へのアクセスは不可能です。

対策

endpointを作成

VPC -> エンドポイント -> エンドポイント作成

結果

以下のようにテストしました。

テストデータ

  • テーブルの作成
mysql> create table users_01(
    -> userid integer not null primary key,
    -> username char(8),
    -> firstname varchar(30),
    -> lastname varchar(30),
    -> city varchar(30),
    -> state char(2),
    -> email varchar(100),
    -> phone char(14),
    -> likesports varchar(100),
    -> liketheatre varchar(100),
    -> likeconcerts varchar(100),
    -> likejazz varchar(100),
    -> likeclassical varchar(100),
    -> likeopera varchar(100),
    -> likerock varchar(100),
    -> likevegas varchar(100),
    -> likebroadway varchar(100),
    -> likemusicals varchar(100));
Query OK, 0 rows affected (3.44 sec)
  • txtファイルの用意
aws s3 cp allusers_pipe.txt s3://fout-fox-development/allusers_pipe.txt
  • データインポート
mysql> LOAD DATA FROM S3 's3://fout-fox-development/allusers_pipe.txt'
    -> INTO TABLE users_01
    -> FIELDS TERMINATED BY '|'
    -> LINES TERMINATED BY '\n'
    -> (@var1, @var2, @var3, @var4, @var5, @var6, @var7, @var8, @var9, @var10, @var11, @var12, @var13, @var14, @var15, @var16, @var17, @var18)
    -> SET
    -> userid = @var1,
    -> username = @var2,
    -> firstname = @var3,
    -> lastname = @var4,
    -> city=@var5,
    -> state=@var6,
    -> email=@var7,
    -> phone=@var8,
    -> likesports=@var9,
    -> liketheatre=@var10,
    -> likeconcerts=@var11,
    -> likejazz=@var12,
    -> likeclassical=@var13,
    -> likeopera=@var14,
    -> likerock=@var15,
    -> likevegas=@var16,
    -> likebroadway=@var17,
    -> likemusicals=@var18;
Query OK, 49990 rows affected (8.81 sec)
Records: 49990  Deleted: 0  Skipped: 0  Warnings: 0

パフォーマンス

参照