[アップデート] AWS DataSync でファイルリストを使って転送ファイルを指定出来るようになりました

2024.02.08

いわさです。

AWS DataSync は複数のロケーション間でのデータ転送タスクを作成することが出来るマネージドサービスです。
データ転送タスクを作成する際に、対象ストレージのファイルを全て送信するのではなく、転送対象のファイルを絞り込む仕組みがあります。

既存ではフィルターパターンを指定した絞り込みが可能だったのですが、本日のアップデートで対象ファイルを明記したマニフェストファイルを基に転送対象を明記することが出来るようになりました。

対象ファイルをリスト形式で記載したマニフェストファイルを S3 バケットへアップロードしておき、それを参照する形でタスクを作成することで使うことが出来ます。
従来のフィルターパターンとの併用は出来ないのでルール的な指定がしたければ従来の方法を、具体的なファイル名が特定出来てそれのみを転送するタスクとしたい場合は今回の方法を使うことが出来ます。

使い方

今回の機能はロケーションではなくタスク作成時の設定構成画面で設定します。
数ヶ月前とユーザーインターフェースが少し違っているのですが、最新版だとタスク名下の Source data options パネルから設定することが出来ます。

参考までに、2023 年 9 月ごろの UI は以下の記事で確認することが出来ます。

前述の Using filters がこれまでのフィルタパターンを使った絞り込み機能で、Using a manifest を選択することで今回の新しいマニフェストを使ったファイル指定機能を使うことが出来ます。

必要な情報は S3 URI です。
マニフェストファイルを事前に任意の S3 バケットへ格納し、指定する必要があります。
そのため、まずはマニフェストを準備しましょう。

マニフェストの準備

マニフェスト機能を使い方は次の公式ドキュメントにまとまっています。
マニフェストファイルは CSV 形式で対象ファイルのリストを記述します。

検証の前提として、今回は転送元・転送先どちらも S3 バケットなシンプルな構成にしました。
S3 バケットの場合だとエージェントも不要なので検証楽なんですよ。

転送元バケットに次のように 3 つのファイルをアップロードしておきました。
マニフェストファイルでこのうちの一部のファイルのみを指定して転送するようなタスクを作ってみます。

最低限の定義だと、ファイル名を列挙するだけで良いです。
今回だと次のようなマニフェストファイルを作成しました。

hoge1.txt
hoge2.txt

こちらファイルバージョンの指定も可能で、その場合はカンマ区切りで 2 列目にバージョン ID を指定する形となります。
今回は転送元バケットにバージョニング設定をしていなかったので割愛しました。

作成した上記マニフェストファイルを次のように S3 バケットにアップロードしておきました。

タスクを作成して実行してみる

ではタスクを作成して実行してみましょう。
タスク内容は先程の画面のようにマニフェストファイルを S3 URI で指定するくらいで、後は次のように事前にロケーションを作成しているので、転送元と転送先のロケーションをした程度です。

タスクを実行して成功ステータスを確認しました。
転送先の S3 バケットを確認してみましょう。

期待どおり、マニフェストファイルに記述されたファイルのみが転送されていることが確認出来ました。

注意点として、マニフェストファイルではディレクトリの指定は出来ず、完全なファイル名をファイルごとに指定を行う必要があります。
そのため、特定パスや拡張子などで複数のファイルを指定したい場合は従来どおりのフィルタパターンを使う必要があります。
マニフェストファイルと使い分ける必要があり、従来の方法に代わるものではないのでご注意ください。

さいごに

本日は AWS DataSync でファイルリストを使って転送ファイルを指定出来るようになったので確認してみました。

従来も特定ファイルのみを転送したいタスクを作成する際にはフィルタパターンを使うことで実現出来ていましたが、特定ファイルが複数に及ぶ場合はパイプで区切った文字列を用意するなど管理がし易い状態ではありませんでした。
特定のファイルのみかつ複数のファイルを取り扱いたい場合に今回のマニフェストファイル機能が使えそうです。