DataSyncタスクを作成してみた

DataSyncタスクを作成しました。オプションなど迷うところが多かったので、本エントリが役に立てればと思います。
2022.02.28

東京オフィスの芦沢(@ashi_ssan)です。

主題について、早速始めていきます。

本エントリでは、以下のリソースが準備できていることを前提にDataSyncタスクの作成・実行を行います。

  • DataSync Agent
  • 送信元となるロケーション(Source)
  • 送信先となるロケーション(Destination)

Agentおよび各ロケーションを準備する方法は以下のブログを参考に作成してみてください。

構成図

以下のような既存環境に対し

以下のイメージのタスクを作成・実行し、実際にファイルを転送できることを確認します。

やってみた

タスク作成

まずはタスクを作成します。

AWSマネジメントコンソールのDataSync-TasksからCreate taskをクリックします。

転送元(Source)および転送先(Destination)のロケーションを選択します。

今回は作成済みのロケーションを選択するので、Choose an existing locationを選択し、Nextをクリックしてください。

Task Nameにタスク名を入力し、Task execution configuration(タスク実行設定)を入力していきます。

Verify data(データ検証オプション)

以下の選択肢から選びます。

  • Verify only the data transferred (転送されたデータのみ検証する)
    • このオプションは、転送されたファイルと送信元のメタデータのチェックサムを計算します。次に、このチェックサムと、転送の終了時に送信先にあるファイルで計算されたチェックサムを比較します。
  • Verify all data in the destination (送信先ですべてのデータを検証する)
    • このオプションは、送信元全体と送信先全体の転送の最後にスキャンを実行し、送信元と送信先が完全に同期されていることを確認します。
  • Check integrity during transfer (転送中に整合性をチェックする)
    • このオプションは、転送の終了時に追加の検証を実行しません。すべてのデータ転送は、引き続き転送中にチェックサム検証によって整合性がチェックされます。

公式ドキュメントによると、大半のユースケースではVerify only the data transferredで検証することが推奨されています。

ほとんどのユースケースでは、転送されたファイルのみを検証することをお勧めします。

また、S3ストレージクラス S3 Glacier Flexible Retrieval または S3 Glacier Deep Archiveを使用している場合、以下のような制約事項があるため、認識しておきましょう。

Verify all data in the destination (送信先ですべてのデータを検証する)

このオプションは、S3 Glacier フレキシブルリトリーブまたは S3 Glacier Deep Archive ストレージクラスへの転送時には使用できません。

Set bandwidth limit(帯域幅オプション)

以下の選択肢から選びます。

  • Use available
    • DataSync が転送に使用可能なすべてのネットワーク帯域幅を使用する
  • Set bandwidth limit (MiB/s)
    • DataSync がこのタスクに使用する最大帯域幅を制限

基本的にはUse availableで問題ないかと思いますが、使用できる帯域に制約がある場合はSet bandwidth limitも検証してみましょう。

Queueing(キューイングオプション)

1つのエージェントで複数のタスクを実行する場合は、有効にしておきます。

各タスクの同時最大実行数は1つのため、このオプションを有効にしても、同じタスクを重複して実行することはできませんのでご注意を。

 各タスクには、同時に最大で 1 つのタスクを含めることができます。


続いて、Data transfer configuration(データ転送設定)を入力していきます。

Data to scan(スキャンするデータ)

以下の選択肢から選びます。

  • Entire source location
    • 転送元のロケーション全体をスキャンする
  • Specific files and folders
    • 転送元の特定のファイル、フォルダ、オブジェクトをスキャンする

Specific files and foldersを選択する場合は、Include patternsと組み合わせて使用します。

Transfer mode(転送モード)

以下の選択肢から選びます。

  • Transfer only data that has changed
    • 変更があったデータのみ転送する、差分転送
  • Transfer all data
    • 全データを転送する

Keep deleted files(削除ファイルの保持)

転送元で削除されたファイルを転送先ロケーションに残す場合は、有効にします。

Overwrite files(ファイルの上書き)

ファイルの上書きを行う場合は有効にします。

Exclude patterns & Include patterns(フィルタリングパターン)

転送するデータのフィルタリングを行う場合に設定します。

フィルタリングは正規表現を使うことができます。

詳しいフィルタリング方法等については公式ドキュメントを参照しましょう。


続いて、Schedule(スケジュール設定)を入力します。

Frequency(頻度)

タスクのスケジュール実行頻度を指定します。

以下の粒度でスケジュール設定が可能です。

  • Hourly
    • 1時間おきに実行する時刻(分)を指定
  • Daily
    • 1日おきに実行する時刻を指定
  • Weekly
    • 1週間おきに実行する曜日と時刻を指定
  • Days of the week
    • 複数曜日で実行する曜日と時刻を指定
  • Custom
    • 上記に当てはまらない、その他のパターンをCron形式で指定する

最後にTask logging(タスクのロギング設定)を入力します。

Log level(ログレベル)

以下の選択肢から選びます。

  • Do not send logs to CloudWatch
    • ログ送信を行わない
  • Log basic information such as transfer erros
    • 基本情報や転送エラーのみをロギングする
  • Log all transferred object and files
    • すべての転送オブジェクトやファイルをロギングする

各選択肢でどのようにログが記録されるか?こちらのブログで検証されていますので、ご確認ください。

事前にログの量やログファイルサイズの確認が必要ですが、基本的にはLog all transferred object and filesを選び、トラブルシュートの際に備えましょう。

CloudWatch log group

出力先のCloudWatch log groupを指定します。

DataSyncのコンソール画面からAutogenerate(自動生成)することも可能ですが、一律で/aws/datasyncというロググループ名になってしまうので注意しましょう。

複数タスクを管理する予定があれば、自動生成ではなく個別にロググループを作成し、/aws/datasync/のようにタスク毎にCloudWatchロググループを分割することオススメします。

すべての項目を入力できたら、Nextをクリックします。

Review画面で入力した内容を確認し、Create taskをクリックします。

タスクが作成できました。

タスク実行

最後に、作成したタスクを実行してみます。

タスクの実行には以下の2パターンがあります。

  • Start With defaults
  • Start With overriding options

Start With defaultsを実行すると、タスクの設定で定義されている通りに実行されますが、Start With overriding optionsでは、タスクの設定を上書きして変更し実行することが可能です。

Set bandwidth limit(帯域幅オプション)Data to scan(スキャンするデータ)など、タスクやオプションの検証時に便利な機能なので、ぜひ利用してみてください。

今回は、デフォルト設定でよいので、Start With defaultsで実行しました。

タスク実行結果確認

タスクの実行結果は、DataSyncコンソール-tasks-Historyで確認できます。

Execution IDをクリックすると、タスクの設定内容や、実行したタスクのパフォーマンス情報が確認できます。

最後に

DataSyncのタスクを作成・実行してみました。

DataSyncのタスク作成について、インターネットで検索してもなかなか情報が出てこないので、本エントリがみなさんの役に立てば、と思います。

以上、東京オフィスの芦沢(@ashi_ssan)でした。