DataSyncを利用してS3とEC2(NFS)の同期を実施

はじめに

ちょっと前のお話ですが、EC2(NFS)-DataSyncを利用して同期させてみたのでブログにまとめてみたいと思います。
今回はすでにNFSなど、DataSyncを稼働させる環境は用意してある前提での執筆です。ご参考程度にお考え下さい。

関連記事

  1. Datasyncを利用してS3とEFSの同期を実施
  2. DataSyncを利用してS3とEC2(NFS)の同期を実施 (本記事)

そもそも

DataSyncって何?って思われる方のために簡単に書いてみました。
https://aws.amazon.com/jp/datasync/

S3、EFS、FSxなどのAWSマネージドストレージやオンプレミスストレージ間で同期をかけることができるサービスです。
オンプレミスやEC2にて利用する場合は専用のAgentを搭載したサーバを用意する必要がありますが、AWSマネージドサービス間の場合ではAgentが必要ありません。
ということで、今回はAgentありのDataSyncを触ってみたいと思います。

目次

手順の概要

  1. Agentサーバの起動
  2. Agentの登録
  3. タスクの作成
  4. タスクの開始
  5. CloudWatch Logsの例(手順ではありません)

手順

Agentサーバの起動

まずはAgentサーバを起動します。
注意点が二つあります。一点目は、Agentがプリインストールされたサーバを起動する必要があること。
通常のサーバを起動してコマンドでAgentをインストールするのではありません。

二点目は、サーバのスペックです。AWSの推奨スペックが下記のようになっています。高いと思われるかもしれませんが、当てはまるものを選んでください。
m5.2xlarge:最大 2,000 万個未満のファイルを転送する場合。
m5.4xlarge: 2,000万個を超えるファイルを転送する場合。

EC2のコンソールからインスタンスを起動を選択します。
aws-datasync-でAMIを検索してください。

コミュニティAMIを選択してください。
発行日を確認し、最新のAMIを選択してください。

インスタンスタイプ→上記に記載した通り、公式推奨のものを利用してください。
ネットワーク→NFSサーバと同じVPCを選択すると設定が多少楽になります。
アクティベートのため、DataSyncサーバ用のSGでHTTPを開放しておきました。

ストレージはデフォルトの容量で作成します。gp2を選択していますが、gp3のほうがいいでしょう。
外付けディスクは利用しないため、必要ありません。
※このサーバはあくまでもDataSyncAgentを動かすだけなので、容量は最小限でいいです。
その他デフォルトor任意で構いませんので、サーバを立ち上げてください。

Agentの登録

DataSyncに移動します。
画面右上のプルダウンを選択し、「オンプレミスストレージとAWSの間」を選択し、「今すぐ始める」をクリックしてください。

ハイパーバイザーを「Amazon EC2」とします。
エージェントのIPアドレスに先ほど起動したサーバのIPアドレスを入力してください。
入力したら「キーを取得する」を押します。
問題なければキーが取得され、Agentが登録されます。

問題なくAgentが登録できました。

タスクの作成

右上の「タスクを作成する」を押してください。

送信元のロケーションを選択します。
どこのストレージからデータを送信するのか選択してください。
今回は「NFS」を選択します。

NFSを選択すると、↑のような画面になります。
下記の通り入力し、「次へ」を選択してください。

エージェント→先ほど登録したエージェント
NFSサーバ→NFSサーバのPIP
※エージェントサーバのIPではありません。
※NFSに対してAgentサーバから疎通が通るようにSGやNFS設定を確認してください。

マウントパス→NFSをマウントしているパスです。

送信先の設定を行います。

S3バケットを選択すると、↑のような画面になります。
下記の通り入力し、「次へ」を選択してください。

リージョン→用途に合わせて選択してください。
S3バケット→送信先のバケットを選択してください。
S3ストレージクラス→送信先がS3の場合、ストレージクラスを選択できます。
フォルダ→特定のフォルダに送信したい場合入力します。バケットにそのまま入れる場合は不要です。
IAMrole→右側の「Autogenerate」を押すと自動生成されるので推奨します。
※送信先がS3の場合はMultiアップロードを可能にするロールをつけたほうがいいです。

タスク名→必須です。適当にわかりやすいものをつけてください。
その他は見ただけでわかると思うので割愛します。

Datasyncを利用してS3とEFSの同期を実施


こちらに詳しくのっている項目もあるので読んでみてください。

頻度→毎週同期をかけるなど、スケジュールが必要な場合に設定します。
※一回のみの同期であれば、必要ありません。

ログ記録→Cloudwatchlogsに記録をすることができます。
記録しないを選ぶこともできますが、記録しておいたほうが無難です。エラーのみかすべてのログを記録するか選べます。

問題がなければタスクを作成してください。

タスクの開始

右上の「アクション」をクリックします。
※基本的に「デフォルトから開始する」で問題ありません。
「オプションを上書きして開始する」を選択するとタスクの作成時のオプションを変更することができますが、あまり利用することはないと思います。
タスクを開始し、しばらくすると完了します。

左ペインの「履歴」をクリックすると、各タスクの履歴を確認できます。
成功になっていれば、同期が正常に行われているはずです。

まとめ

今回はS3とNFSでのデータ同期を行ってみました。難しい点はなかったと思いますが、FSxなどの場合、また設定のコツが変わってきます。
それらについては次回以降執筆予定です。