AWS DataSyncでS3のデータをEFSに転送する

記事タイトルとURLをコピーする

クラウドインテグレーション部の村上です。

今回はAWSのデータ移行サービスであるAWS DataSyncを紹介します。

データ移行のOverView

データ移行の手法はAWS DataSync以外にもあります。一番に思いつくのはAWS Snow Familiyではないでしょうか。

こちらにデータ移行サービスが網羅的に掲載されています。

aws.amazon.com

上記でも紹介されていますが、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)

という利点もあり、有力な選択肢となりそうです。

blog.serverworks.co.jp

AWS DataSyncとその他のサービスの使い分けは「よくある質問」にもまとめがあり、参考になります。

AWS DataSync をいつ選択するか

AWS DataSyncを使ってみる

オンプレミスからAWSへの移行も可能ですが、今回はAWSストレージサービス間のデータ移行をやってみたいと思います。

移行元・移行先の準備

まずはS3バケットに移行するデータを保存します。シナリオとしてはS3のbackupフォルダーの中にあるtarget-file.txtだけを移行するものとします。

f:id:swx-murakami:20210227225448p:plain

次に移行先であるEFSを作成します。

f:id:swx-murakami:20210227225924p:plain

AWS DataSyncの設定

AWS DataSyncを設定します。

タスクの作成

AWS DataSyncのコンポーネントとしてタスクというものがあります。タスクは移行元や移行先、データの移行方法を定義したものです。

まずは移行元の設定です。ここでは先ほど作成したS3バケットのBackupフォルダを指定します。 f:id:swx-murakami:20210227231138p:plain

次に移行先の設定です。同様に先ほど作成したEFSを指定します。 f:id:swx-murakami:20210227231747p:plain

最後にデータ移行の設定です。

Task execution configurationではデータの検証に関する設定と帯域幅制限の設定を行います。

AWS DataSyncはデータの転送中、必ずデータ整合性のチェックを行いますが、ここでは追加の検証として転送終了時にも整合性チェックを行うかどうかの設定をします。今回は推奨設定でもある「転送されたデータのみ検証する」を選択します。帯域幅制限は行いません。

f:id:swx-murakami:20210227234631p:plain

Data transfer configurationでは以下の設定を行います。

  • Transfer mode
    • 移行元と移行先を比較し異なるデータのみを移行するかどうか
  • Keep deleted files
    • 移行元に存在しないファイルが移行先にあった場合、当該ファイルを保持するか削除するか
  • Overwrite files
    • チェックすると移行先のファイルは移行元からのファイルによって上書きされる

Filtering configurationでは移行するファイルの除外パターンを設定します。今回dummy-file.txtは移行しませんので図のように設定します。

f:id:swx-murakami:20210228004220p:plain

Scheduleでは移行の定期実行の設定が可能です。毎時や毎週、cronによるカスタム設定も可能です。

f:id:swx-murakami:20210227234310p:plain

以上で設定は完了です。

タスクを実行する

右上にある「Start」からタスクを実行します。実行するとTask statusがRunnningに変わります。

f:id:swx-murakami:20210227235536p:plain

確認してみる

任意の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はオンラインでのデータ移行サービスで、安価なだけでなく移行除外の設定やスケジューリング機能、帯域幅制限など細かいオプションもあっておススメです。

村上博哉 (執筆記事の一覧)

2020年4月入社。機械学習が好きです。記事へのご意見など:hiroya.murakami@serverworks.co.jp