概要
AWS DataSync は、オンプレミスのストレージと AWS ストレージサービス間、または AWS ストレージサービス間でデータ転送を自動化するサービスです。NFS や SMB ファイルサーバーから Amazon S3、Amazon EFS、Amazon FSx へのデータ移行を、高速かつ安全に実行できます。
オンプレミスから AWS へのデータ移行や、定期的なデータ同期を手動で行うと、スクリプトの開発・保守やネットワーク帯域の管理、転送エラーのハンドリングなど多くの手間が発生します。DataSync はこれらの課題を解消し、専用のエージェントと最適化されたネットワークプロトコルを使って、効率的なデータ転送を実現します。この記事では、AWS ストレージサービス間の転送タスクを作成し、DataSync の基本的な使い方を体験します。

クラウドおさる弊猿はこの記事で、S3 バケットから S3 バケットへ DataSync でデータを運んでみるでござる。ロケーションとタスク、この 2 つの関係を手で確かめるのでござるよ。
この記事のメリット
- AWS DataSync の基本概念(エージェント、ロケーション、タスク)を理解できる
- DataSync がサポートする転送元・転送先の組み合わせを把握できる
- AWS ストレージサービス間のデータ転送タスクを作成する手順を習得できる
- タスクの実行と転送結果の確認方法を体験できる
- データ転送の自動化とスケジューリングの考え方を理解できる
執筆者とキャラクター紹介
執筆者:土肥(とひ)
株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。


クラウドおさる



はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。



基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。



猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。
技術解説



とひさん、AWS DataSync とはどんなサービスでござるか?
DataSync は、データ転送に特化したマネージドサービスだよ。転送元と転送先の「ロケーション」を定義して、「タスク」として実行することで、データのコピーや同期ができるんだ。



転送するだけなら、弊猿がスクリプトを書いてもできそうでござるが…。猿山でもバナナ倉庫の在庫表を、毎晩当番が手で写しているでござる。
それだと転送エラーのハンドリングとか、整合性チェックとか、全部自分で実装しなきゃいけないんだよね。DataSync は転送時にデータの整合性チェックを自動的に行ってくれるから、エラーの検知・再試行も含めて信頼性の高い転送が可能なんだ。



なるほど、写し間違いの確認までやってくれるのでござるな!DataSync にはどんな部品があるのでござる?
主要なコンポーネントは4つあるよ。
| コンポーネント | 説明 |
|---|---|
| エージェント | オンプレミスなど、自分で管理するストレージ環境にデプロイする仮想マシン。そのストレージと DataSync サービス間の通信を中継する。同じ AWS アカウント内の AWS ストレージ同士の転送では不要 |
| ロケーション | 転送元または転送先のストレージを定義する設定。NFS/SMB サーバー、S3、EFS、FSx などを指定 |
| タスク | 転送元ロケーションから転送先ロケーションへのデータ転送の設定。スケジュールやフィルタリングも定義可能 |
| タスク実行 | タスクを実際に実行したインスタンス。転送結果やステータスが記録される |





エージェントは、オンプレミスのような自前のストレージとやり取りするときに要るのでござるな。転送元・転送先には、どんなストレージが使えるでござるか?
サポートされるロケーションは結構多いんだ。こんな感じだよ。
| カテゴリ | ロケーション |
|---|---|
| オンプレミス | NFS サーバー、SMB サーバー、HDFS、オブジェクトストレージ |
| AWS ストレージ | Amazon S3、Amazon EFS、Amazon FSx(Windows File Server、Lustre、OpenZFS、NetApp ONTAP) |
| 他のクラウド | Azure Blob Storage、他のクラウドのオブジェクトストレージ |
AWS ストレージサービス間の転送、例えば S3 から EFS、EFS から S3 なんかもサポートされていて、同じ AWS アカウントの中ならエージェントのデプロイが不要なんだ。ただ、別のアカウントの EFS や FSx どうし(どちらも S3 ではない組み合わせ)や、他のクラウドと EFS・FSx の間で転送するときはエージェントが要るから、そこは気をつけてね。



AWS の中のサービス同士でも使えるのでござるか!タスクを作るときのオプションも気になるでござる。
タスク作成時にはいろいろな転送オプションを設定できるよ。
| オプション | 説明 |
|---|---|
| 転送モード | 変更されたデータのみ転送するか、すべてのデータを転送するかを選択 |
| データ検証 | 転送後のデータ整合性チェックの方法を設定 |
| 帯域幅の制限 | 転送に使用するネットワーク帯域を制限 |
| スケジュール | 定期的なタスク実行のスケジュールを cron 式で設定 |
| フィルタリング | 特定のパターンに一致するファイルを転送対象から除外または包含 |



スケジュールで定期実行、変更分だけの転送もできる、と。猿山の倉庫から山頂の倉庫へ、増えたバナナだけを毎晩運ぶ当番のようなものでござるな。日々のデータ同期にも使えそうでござる!
実践
ここでは、Amazon S3 バケット間のデータ転送タスクを作成し、DataSync の基本的な操作を体験します。同じアカウント内の AWS ストレージ同士の転送ではエージェントのデプロイが不要なため、コンソールの操作のみで完結します。
前提条件
- リージョン:
ap-northeast-1(東京) - AWS マネジメントコンソールにログイン済み
- 転送元の S3 バケットが作成済みで、1つ以上のオブジェクトが格納されていること
- 転送先の S3 バケットが作成済みであること(空の状態)
| リソース種別 | リソース名 | 用途 |
|---|---|---|
| S3 バケット(転送元) | datasync-source-<アカウントID> | 転送元バケット |
| S3 バケット(転送先) | datasync-dest-<アカウントID> | 転送先バケット |
| DataSync ロケーション(転送元) | — | 転送元 S3 の定義 |
| DataSync ロケーション(転送先) | — | 転送先 S3 の定義 |
| DataSync タスク | s3-to-s3-transfer | S3 間データ転送タスク |
| IAM ロール | (自動作成) | DataSync が S3 にアクセスするための権限 |
転送タスクを作成する
- AWS マネジメントコンソールにログインし、リージョンが
ap-northeast-1(東京)であることを確認します - 上部の検索バーに
DataSyncと入力し、表示された「DataSync」を選択します - 左側ナビゲーションの「タスク」を選択します
- 「タスクを作成する」をクリックします。タスクの作成は「送信元ロケーションを設定」→「送信先ロケーションを設定」→「設定」→「レビュー」の 4 ステップのウィザードで、転送元・転送先のロケーションもこの中で作ります
転送元ロケーションを設定する
- 「新しいロケーションを作成」を選択し、「ロケーションタイプ」で「Simple Storage Service (Amazon S3)」を選択します
- 以下を設定します
- S3 URI:
s3://datasync-source-<アカウントID>/と入力します(バケット全体が対象になります) - S3 バケット所有者: 「This AWS account」のまま
- IAM ロール: 「自動生成する」をクリックします。DataSync がこのバケットにアクセスするための IAM ロールとポリシーが作られ、
AWSDataSyncS3BucketAccess-datasync-source-…のような名前のロールが選択されます - 「次へ」をクリックします


転送先ロケーションを設定する
- 「新しいロケーションを作成」を選択し、「ロケーションタイプ」で「Simple Storage Service (Amazon S3)」を選択します
- 以下を設定します
- S3 URI:
s3://datasync-dest-<アカウントID>/と入力します - S3 ストレージクラス: 「標準」のまま(送信先にだけある項目です)
- IAM ロール: 「自動生成する」をクリックします
- 「次へ」をクリックします


タスクの設定を行う
- 「タスクモード」で「拡張」を選択します。拡張モードは、データの一覧表示・転送・検証を並行して行うため、基本モードより高速です。S3 間の転送はどちらのモードでもできますが、タスクモードはタスクを作成したあとで変更できません
- 「名前」に
s3-to-s3-transferと入力します - その他の設定はデフォルトのままにします
- スキャンするコンテンツ: すべて
- 転送モード: 変更されたデータのみを転送
- 検証: 転送されたデータのみを検証
- 「次へ」をクリックします


- レビュー画面で設定内容を確認し、「タスクを作成する」をクリックします
タスクの詳細画面に「タスクが作成されました」と表示され、ステータスが「利用可能」になっていることを確認します。





転送元と転送先をロケーションとして登録し、それをタスクでつなぐ。同じアカウントの S3 同士の転送なので、エージェントは一度も出てこなかったでござるな。
タスクを実行する
- タスクの詳細画面で「開始」をクリックし、「デフォルトから開始する」を選択します。確認画面は無く、すぐに実行が始まります


転送結果を確認する
- タスクの詳細画面で「Task executions」タブを選択します
- タスク実行のステータスが「成功」になるまで待ちます。今回は、実行の準備に 4 分ほどかかり、転送そのものは 30 秒ほどで終わりました


- 実行 ID をクリックすると、転送されたファイル数やデータ量の詳細を確認できます
- 転送先の S3 バケットを開き、転送元のオブジェクト(
sample.txtとdata/配下の 2 ファイル)がコピーされていることを確認します



タスクは一度作れば何度でも実行でき、実行のたびに履歴が残るのでござる。定期的に同期したくなったら、同じタスクにスケジュールを足せばよいでござる。
まとめ
- AWS DataSync はオンプレミスと AWS 間、または AWS サービス間のデータ転送を自動化するマネージドサービスである
- エージェント・ロケーション(転送元・転送先)・タスク・タスク実行の 4 つのコンポーネントで構成される(エージェントは必要な場合だけ使う)
- オンプレミスとの転送にはエージェントのデプロイが必要だが、同じアカウント内の AWS ストレージ同士の転送では不要である(別アカウントの EFS・FSx どうしなど、AWS の中でもエージェントが要る場合がある)
- 転送時にデータ整合性チェックが自動的に行われるため、信頼性の高い転送が可能である
- スケジュール設定により定期的なデータ同期を自動化できる
- S3、EFS、FSx など多様なストレージサービスをサポートしている
参照先
- AWS DataSync とは
- AWS DataSync の仕組み
- タスクの作成
- ロケーションの作成
- タスクの開始
- タスクモードの選択
- AWS DataSync エージェントが必要ですか?
- AWS DataSync でデータを転送できる場所












