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

はじめに

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

そもそも

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

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

専用のAgentを利用した同期については、また近日中に

関連記事

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

目次

手順の概要

  1. タスクの作成
  2. タスクの開始
  3. CloudWatch Logsの例(手順ではありません)

手順

タスクの作成


画面右上のプルダウンで「AWSストレージサービス間」を選択し、「今すぐ始める」をクリックしてください。
※オンプレミスやEC2と同期する場合は「オンプレミスストレージとAWSの間」を選択します。


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


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

リージョン→用途に合わせて選択してください。通常は「東京」で問題ないと思います。
S3バケット→送信元のバケットを選択してください。
S3ストレージクラス→送信先がS3の場合、ストレージクラスを選択できます。
フォルダ→送信元のバケットから特定フォルダのみ送信できます。バケット全体の場合は不要です。
IAMrole→右側の「Autogenerate」を押すと自動生成されるので推奨します。
※仮に送信先がS3の場合、Multiアップロードを可能にするロールをつけることを推奨します。

送信先の設定を行います。
今回は「Amazon EFS ファイルシステム」を選択します。

ファイルシステムを選択すると、↑のような画面になります。
下記の通り入力し、「次へ」を選択してください。

マウントパス→転送先の配下におきたい場合入力。
※入力する場合は必ず先にEFS側のディレクトリを作成しておいてください。EFS側にディレクトリが存在しないとエラーになります。
サブネット→アクセス元のサブネット。EFSが存在するサブネットを選択すれば問題ないです。

セキュリティグループ→EFSについてるSG入れれば問題ありません。EC2からEFSへアクセスするため、TCP2049ポートをアクセス元のEC2から開けておいてください。
※DataSync用にANYなどで開放する必要はありません。

暗号化→暗号化したいときに選択してください。
※暗号化を選択するとオプションでEFSアクセスポイントを指定できます。指定する場合はIAMroleを作ってあげてください。

項目としてもわかりやすいと思いますので、簡単な補足だけ行います。
帯域幅制限→DataSyncの起動中、EFSなどストレージ側のパフォーマンスに影響が出る可能性を考慮したほうがいいと思います。
スキャンするデータ→特定のファイルとフォルダを選択すると、対象パターンを入力できます。送信元のロケーション設定とうまく組み合わせてください。

スケジュール→最低でも1時間毎の同期です。分毎での同期ができないので注意してください。
分単位での設定が必要な場合はEventBridge、Lambdaと組み合わせることで実現可能です。
Cloudwatchロググループ→右側の自動生成を使うと設定が簡単にできます。
また、エラーログのみ保存するかすべてのログを保存するかの選択が可能です。

問題がなければ、「次へ」を選択し、「タスクを作成する」を選択してください。

タスクの開始

タスクを作成したら、該当するタスクを選択してください。右上のアクションから「タスクの開始」を選択することでタスクの開始ができます。


また、オプションを上書きして開始するを選択することで、同期のオプションを変更した状態での同期が可能です。


タスクが完了したら、履歴を確認できます。
左ペインから履歴を選択すると上のような画面になります。
成功になっていれば、同期先にファイルがコピーされているはずです。

CloudWatch Logsの例


これは実際のCloudWatch Logsの画面です。
タスクごとにログが記録されているのがわかります。


実際のログの例です。

まとめ

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