S3からAuroraへのデータインポート
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 -> エンドポイント -> エンドポイント作成
以下のようにテストしました。
背景
Athenaで処理していたデータをAuroraで管理するような仕様ができたので、S3からAuroraへのデータインポートを考え始めた。
データインポート
Auraoの公式ドキュメントを参照すれば大体いけます。Amazon S3 バケットのテキストファイルから Amazon Aurora MySQL DB クラスターへのデータのロード - Amazon Relational Database Service
↑のドキュメントを簡単にまとめると、以下のことです。
- IAM policy作成(S3へのアクセス許可)
- IAM Role作成(AuroraからAWSへのアクセス許可)
- Auroraのparameter group設定
- クラスターのparameter group(各インスタントの設定が同じなら、クラスターだけを設定すればOK)
- 各インスタントのparameter group
- Amazon Aurora MySQL から AWS の他のサービスへのネットワーク通信の有効化 - 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
コメント
コメントを投稿