Kinesis Firehoseをオレゴンから東京リージョンに移行する手順




Kinesis Firehose 東京リージョンへの移行

日本時間の2017年8月25日についにKinesis Firehoseが東京リージョンでも使えるようになりました。

これまで、Kinesis Fiirehoseと連携するRedshiftは同じリージョンにないといけないためオレゴンに準備していたと思います。S3はどこでも良かったのですが、ネットワーク転送量を気にしてオレゴンに置いていたと思います。

東京リージョンにできたことによってRedshiftもS3も東京リージョンに設置することができるようになりました。移行に関してメリットとデメリットを下記にまとめました

メリット

  • Firehoseへの転送のレイテンシが下がる
  • オレゴンと東京の2つのリージョン管理の煩雑さが減る

デメリット

  • インフラとデータの移行作業が大変。

作業内容

  1. 東京リージョンに同じ設定のFirehost、Redshift、S3を準備する
  2. 東京リージョンのFirehoseに接続を切り替える
  3. RedshiftとS3のデータを東京リージョンに移す

1番、2番はインフラを構築して接続先を切り替えるだけなので一度構築したことがある人なら簡単にできると思います。初めての方は下記リンクを参照してください。3番目は新しい作業になるので今回はこの作業について説明をしたいと思います。

AWS KinesisFirehoseとS3、Redshiftの連携方法

S3のデータ移行

S3のデータ移行にはAWS CLIを使用します。コマンドラインからAWSのリソースを扱えるため簡単にデータ移行を行うことができます。AWS CLIのインストールは下記リンク先を参考にしてみてください

AWS CLIのインストール手順と設定

データ移行にはsyncコマンドを使います。これは移行元のバケットまたはディレクトリのデータと移行先でデータを同期させるコマンドなのでデータ移行にうってつけです。

aws s3 sync s3://oregon-bucket/data/ s3://tokyo-bucket/data/

Redshiftのデータ移行

Redshitのデータ移行で気をつけないといけないのは、別リージョンにあるRedshiftとS3に対してUNLOADとCOPYコマンドが使えないことです。なので、データの移行作業は下記のようになります。

  1. オレゴンのRedshiftからオレゴンのS3にUNLOADコマンドでデータをダンプする
  2. オレゴンのS3から東京にS3にAWS CLIのsyncコマンドでデータをコピーする
  3. 東京の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初心者の方には下記の入門書がすごくわかりやすいのでおすすめです。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です