Kinesis Firehose 東京リージョンへの移行
日本時間の2017年8月25日についにKinesis Firehoseが東京リージョンでも使えるようになりました。
これまで、Kinesis Fiirehoseと連携するRedshiftは同じリージョンにないといけないためオレゴンに準備していたと思います。S3はどこでも良かったのですが、ネットワーク転送量を気にしてオレゴンに置いていたと思います。
東京リージョンにできたことによってRedshiftもS3も東京リージョンに設置することができるようになりました。移行に関してメリットとデメリットを下記にまとめました
メリット
- Firehoseへの転送のレイテンシが下がる
- オレゴンと東京の2つのリージョン管理の煩雑さが減る
デメリット
- インフラとデータの移行作業が大変。
作業内容
- 東京リージョンに同じ設定のFirehost、Redshift、S3を準備する
- 東京リージョンのFirehoseに接続を切り替える
- RedshiftとS3のデータを東京リージョンに移す
1番、2番はインフラを構築して接続先を切り替えるだけなので一度構築したことがある人なら簡単にできると思います。初めての方は下記リンクを参照してください。3番目は新しい作業になるので今回はこの作業について説明をしたいと思います。
AWS KinesisFirehoseとS3、Redshiftの連携方法
S3のデータ移行
S3のデータ移行にはAWS CLIを使用します。コマンドラインからAWSのリソースを扱えるため簡単にデータ移行を行うことができます。AWS CLIのインストールは下記リンク先を参考にしてみてください
データ移行にはsyncコマンドを使います。これは移行元のバケットまたはディレクトリのデータと移行先でデータを同期させるコマンドなのでデータ移行にうってつけです。
aws s3 sync s3://oregon-bucket/data/ s3://tokyo-bucket/data/
Redshiftのデータ移行
Redshitのデータ移行で気をつけないといけないのは、別リージョンにあるRedshiftとS3に対してUNLOADとCOPYコマンドが使えないことです。なので、データの移行作業は下記のようになります。
- オレゴンのRedshiftからオレゴンのS3にUNLOADコマンドでデータをダンプする
- オレゴンのS3から東京にS3にAWS CLIのsyncコマンドでデータをコピーする
- 東京のS3から東京のRedshiftにCOPYコマンドでデータをリストアする。
少しめんどくさいですが、自分はこの方法でデータを移行しました。リージョンが違ってもUNLOADとCOPYコマンドが使える方法があったらコメントで教えていただきたいです。
下記で詳細に説明していきます。
オレゴンのRedshiftからオレゴンのS3にUNLOADコマンドでデータをダンプする
UNLOADコマンドは下記を参考にしてください。
UNLOAD ('SELECT * FROM sample_table') to 's3://oregon-bucket/unload/directory/path/' iam_role 'arn:aws:iam::123456789012:role/redshift_s3_role' delimiter ',' ESCAPE PARALLEL OFF;
- UNLOAD:ダンプするデータをSQLで指定してください。
- to:UNLOADしたデータの書き込み先を指定してください。
- iam_role:Redshiftへの読み取り権限とS3の書き込み権限を持つロールを指定してください。
- delimiter:CSVの区切り方式を指定できます。
- ESCAPE:データのUNLOAD時にエスケープ処理をしてくれます。
- PARALLEL OFF:書き込み先のファイルを1つだけにできます。これを指定していない場合、複数ファイルができます。
オレゴンのS3から東京にS3にAWS CLIのsyncコマンドでデータをコピーする
東京リージョンへのデータコピーは下記AWS CLIのsyncコマンドで簡単に完了します。
aws s3 sync s3://oregon-bucket/unload/directory/path/ s3://tokyo-bucket/unload/directory/path/
東京のS3から東京のRedshiftにCOPYコマンドでデータをリストアする
最後に東京リージョンのS3から東京リージョンのRedshiftにデータを移行したら完了です。
COPY sample_table FROM 's3://tokyo-bucket/unload/directory/path/' iam_role 'arn:aws:iam::123456789012:role/redshift_s3_role' delimiter ',' ESCAPE IGNOREHEADER 1 TIMEFORMAT 'YYYY-MM-DD HH:MI:SS';
- COPY:データを入れたいテーブルを指定します。
- TIMEFORMAT:DATETIME型のデータの日付フォーマットを指定できます。
まとめ
Kinesis Firehoseの東京リージョン移行は少し手間ですが、移行するとレイテンシの改善や、管理の煩雑さが少しは軽減できるかと思います。移行をする場合はぜひ参考にしてみてください。
おすすめ本
AWS初心者の方には下記の入門書がすごくわかりやすいのでおすすめです。
髙妻智一
最新記事 by 髙妻智一 (全て見る)
- Polkadot(Substrate)のアドレスとトランザクションについて - 2023-03-09
- 【無料公開】「Goで始めるBitcoin」3章 Bitcoinノードとの通信 技術書典8 - 2020-03-08
- エンジニアがゼロから技術ブログを書くための方法をまとめました - 2019-05-25
コメントを残す