クラウドインテグレーション部の村上です。
今回はAWSのデータ移行サービスであるAWS DataSyncを紹介します。
データ移行のOverView
データ移行の手法はAWS DataSync以外にもあります。一番に思いつくのはAWS Snow Familiyではないでしょうか。
こちらにデータ移行サービスが網羅的に掲載されています。
上記でも紹介されていますが、AWS DataSyncとAWS Snow Familiyにはオンラインかオフラインかという大きな違いがあります。
オンラインでの移行サービスにはAWS DataSyncの他にもAWS Transfer Familyなどが紹介されていますが、下記の弊社ブログでも紹介しているとおり
- AWS DataSyncは移行先にS3以外もサポート
- AWS DataSyncの利用料はギガバイト (GB) あたり 0.0125USDと安い(AWS Transfer Familyは1時間あたり0.30USD、ギガバイト(GB)あたり0.04USD)
という利点もあり、有力な選択肢となりそうです。
AWS DataSyncとその他のサービスの使い分けは「よくある質問」にもまとめがあり、参考になります。
AWS DataSyncを使ってみる
オンプレミスからAWSへの移行も可能ですが、今回はAWSストレージサービス間のデータ移行をやってみたいと思います。
移行元・移行先の準備
まずはS3バケットに移行するデータを保存します。シナリオとしてはS3のbackup
フォルダーの中にあるtarget-file.txt
だけを移行するものとします。
次に移行先であるEFSを作成します。
AWS DataSyncの設定
AWS DataSyncを設定します。
タスクの作成
AWS DataSyncのコンポーネントとしてタスクというものがあります。タスクは移行元や移行先、データの移行方法を定義したものです。
まずは移行元の設定です。ここでは先ほど作成したS3バケットのBackup
フォルダを指定します。
次に移行先の設定です。同様に先ほど作成したEFSを指定します。
最後にデータ移行の設定です。
Task execution configurationではデータの検証に関する設定と帯域幅制限の設定を行います。
AWS DataSyncはデータの転送中、必ずデータ整合性のチェックを行いますが、ここでは追加の検証として転送終了時にも整合性チェックを行うかどうかの設定をします。今回は推奨設定でもある「転送されたデータのみ検証する」を選択します。帯域幅制限は行いません。
Data transfer configurationでは以下の設定を行います。
- Transfer mode
- 移行元と移行先を比較し異なるデータのみを移行するかどうか
- Keep deleted files
- 移行元に存在しないファイルが移行先にあった場合、当該ファイルを保持するか削除するか
- Overwrite files
- チェックすると移行先のファイルは移行元からのファイルによって上書きされる
Filtering configurationでは移行するファイルの除外パターンを設定します。今回dummy-file.txt
は移行しませんので図のように設定します。
Scheduleでは移行の定期実行の設定が可能です。毎時や毎週、cronによるカスタム設定も可能です。
以上で設定は完了です。
タスクを実行する
右上にある「Start」からタスクを実行します。実行するとTask statusがRunnningに変わります。
確認してみる
任意のEC2からEFSをマウントしてみます。
[ec2-user@ip-10-123-10-212 ~]$ sudo mount -t efs -o tls fs-2176a601:/ test-efs [ec2-user@ip-10-123-10-212 ~]$ cd test-efs [ec2-user@ip-10-123-10-212 test-efs]$ ls target-file.txt [ec2-user@ip-10-123-10-212 test-efs]$ cat target-file.txt こんにちは
ちゃんとdummy-file.txt
は移行されずにtarget-file.txt
だけ移行されていました。
まとめ
AWS DataSyncはオンラインでのデータ移行サービスで、安価なだけでなく移行除外の設定やスケジューリング機能、帯域幅制限など細かいオプションもあっておススメです。