目次

AWS DataSync 完全ガイド 2026

初心者から実務者向けの包括的解説


ドキュメントの目的

本ガイドは以下を対象としています:

  • 初心者向け: DataSync とは何か、なぜオンプレとクラウドのファイル転送に必要かを学びたい方
  • 開発者・SRE向け: エージェント設定、タスク作成、帯域幅制御を実装したい方
  • インフラエンジニア向け: オンプレミス移行、クロスリージョンレプリケーション、AWS 内コピー戦略を設計したい方
  • 意思決定者向け: 大容量データ移行のコスト計算、所要時間予測を行いたい方

2026年の DataSync エコシステム

  • Enhanced Mode(クロスクラウド): Google Cloud Storage、Azure Blob Storage、Oracle Cloud Object Storage に直接接続。エージェント不要
  • 全リージョン対応: オンプレ → AWS、AWS 内、AWS → 他クラウド のシームレス転送
  • agentless 転送: AWS Storage 間(S3、EFS、FSx)の転送で agent 不要。最大並列化で高速化
  • Transfer Verification: チェックサム自動検証で データ破損検知
  • Bandwidth Throttling: CloudWatch Events + Lambda で 時間帯別に帯域幅制御

概要

AWS DataSync は、オンプレミス・AWS Storage・他クラウド間のデータ転送を自動化・最適化するマネージドサービス です。NFS/SMB/HDFS/S3 API からのデータ取り込み、S3/EFS/FSx への直接転送、クロスリージョン・クロスアカウント同期を、並列化・帯域幅最適化・整合性検証を組み込みで提供します。

初心者向けメモ: DataSync は「賢い rsync」です。自動的に帯域幅を最大活用し、転送エラーを検証し、定期同期をスケジュール実行します。手動 rsync の数倍高速で、エラー検知が確実です。


DataSync が解決する課題

DataSync は以下の課題に対応します:

  1. 転送速度の限界: rsync では帯域幅を完全活用できず。DataSync は並列化・マルチパートで数倍高速化
  2. 転送エラーの検知困難: ファイルコピー後に整合性チェック必須。DataSync は自動チェックサム検証
  3. 長時間転送の中断リスク: オンプレ NAS → AWS への数日かかる転送で中断時の再開が複雑。DataSync は再開可能
  4. 複数拠点の定期同期: 複数データセンターのバックアップを AWS に集約。DataSync は スケジュール実行で自動化
  5. クロスリージョン・クロスアカウント同期: EFS → EFS、S3 → S3 の複製が複雑。DataSync は ウィザード完全サポート

主な特徴

  • 自動帯域幅最適化: 並列化、マルチパート、ネットワーク最適化で数倍高速化
  • 転送検証: チェックサム自動検証で データ破損検知
  • マルチプロトコル対応: NFS、SMB、HDFS、S3 API、Azure Blob、Google Cloud Storage
  • クロスリージョン・クロスアカウント: EFS↔EFS、S3↔S3、FSx↔FSx の転送
  • 定期同期スケジュール: cron 式で 増分同期を自動化
  • 帯域幅制御: 営業時間は 10MB/s、夜間は無制限 など時間帯別制御
  • agentless 転送: AWS Storage 間は エージェント不要
  • Enhanced Mode(2025): 他クラウド Storage への直接転送、エージェント不要

アーキテクチャ

graph TB
    subgraph OnPrem["On-Premises"]
        NAS["NAS Server<br/>NFS/SMB<br/>192.168.1.100"]
        AGENT["DataSync Agent<br/>VMware/Hyper-V<br/>IP: 192.168.1.50"]
    end
    
    subgraph AWS_Region1["AWS Region 1 (ap-northeast-1)"]
        S3A["S3 Bucket<br/>my-migration-bucket"]
        EFS_A["EFS<br/>fs-xxxxx<br/>Regional"]
        FSx_A["FSx for Windows<br/>fs-yyyyyy"]
    end
    
    subgraph AWS_Region2["AWS Region 2 (ap-northeast-3)"]
        S3B["S3 Bucket<br/>backup-bucket"]
        EFS_B["EFS<br/>fs-zzzzz<br/>Regional"]
    end
    
    subgraph CloudProviders["Other Cloud Providers"]
        GCS["Google Cloud Storage"]
        AZURE["Azure Blob Storage"]
        OCI["Oracle Cloud Object"]
    end
    
    subgraph Control["DataSync Control Plane"]
        TASK1["Task 1<br/>NAS → S3"]
        TASK2["Task 2<br/>S3 → EFS"]
        TASK3["Task 3<br/>EFS1 → EFS2<br/>Cross-Region"]
        VERIFY["Verification<br/>Checksum<br/>Filtering"]
    end
    
    NAS -->|iSCSI/NFS| AGENT
    AGENT -->|TLS 1.2<br/>Port 443| TASK1
    
    TASK1 -->|transfer| S3A
    TASK2 -->|transfer| EFS_A
    TASK3 -->|transfer| EFS_B
    
    TASK1 -->|verify| VERIFY
    TASK2 -->|verify| VERIFY
    
    EFS_A -->|replicate| EFS_B
    S3A -->|copy| S3B
    
    AGENT -->|Enhanced Mode| GCS
    AGENT -->|Enhanced Mode| AZURE
    AGENT -->|Enhanced Mode| OCI

データフロー(オンプレ → AWS)

  1. Agent 起動: VMware/Hyper-V/EC2 に DataSync Agent VM をデプロイ
  2. Agent Activation: Agent が AWS DataSync サービスに登録
  3. Location 作成: ソース(オンプレ NAS)、宛先(S3/EFS/FSx)ロケーション定義
  4. Task 作成: ソース・宛先・オプション(検証、帯域幅、フィルタ)を定義
  5. Task 実行: 並列化・マルチパート転送で最大帯域幅活用
  6. Verification: チェックサム検証で整合性確認
  7. Scheduling: 定期実行で増分同期を自動化

コアコンポーネント詳細

1. DataSync Agent

オンプレミス側のストレージ(NFS/SMB/HDFS)に接続し、AWS DataSync サービスと通信する VM:

Agent デプロイメント方式

環境 対応 仕様 推奨
VMware vSphere OVA テンプレート 大規模オンプレ
Hyper-V VHD イメージ Windows環境
KVM QEMU イメージ Linux 環境
EC2 AMI AWS Outpost / ハイブリッド
AWS Snowball Edge 内蔵 物理輸送(超大容量)

Agent 仕様

  • CPU: 4-8 vCPU 推奨(パフォーマンス依存)
  • Memory: 32-64 GB 推奨
  • Network: 1 Gbps(E5 往復時間<100ms 推奨)
  • ストレージ: 32 GB SSD(メタデータキャッシュ)

2. Location(ソース・宛先)

サポートロケーション

ロケーションタイプ プロトコル 認証 クロスアカウント
NFS NFSv3/4.1 Agent 必須
SMB SMB 2.1/3.x Agent + 資格情報
HDFS Hadoop API Agent + Kerberos
S3 S3 API IAM Role
EFS NFS v4.1 IAM + 認可ポリシー
FSx for Windows SMB 資格情報
FSx for Lustre Lustre IAM Role
FSx for NetApp ONTAP NFS/SMB IAM + 認可ポリシー
FSx for OpenZFS NFS IAM Role
Google Cloud Storage GCS API Enhanced Mode ✅(2025)
Azure Blob Storage Azure API Enhanced Mode ✅(2025)
Oracle Cloud Storage OCS API Enhanced Mode ✅(2025)

3. Task(転送タスク)

転送ジョブを定義し、実行・スケジュール管理:

Task 構成:
  ├─ Source Location: arn:aws:datasync:...:location/nfs/...
  ├─ Destination Location: arn:aws:datasync:...:location/s3/...
  ├─ Options:
  │   ├─ VerifyMode: ONLY_FILES_TRANSFERRED (転送ファイルのみ検証)
  │   ├─ OverwriteMode: ALWAYS (既存ファイル上書き) / NEVER
  │   ├─ PreserveDeletedFiles: PRESERVE (削除ファイル保持) / REMOVE
  │   ├─ TaskQueueing: ENABLED (順序保証)
  │   ├─ LogLevel: TRANSFER (ログレベル)
  │   ├─ Atime: BEST_EFFORT (アクセス時刻)
  │   └─ BytesPerSecond: 104857600 (100 MB/s に制限)
  └─ Schedule: 
      └─ ScheduleExpression: cron(0 2 * * ? *) (毎日 2:00 AM)

4. Task Execution(実行)

タスクを即時実行、または スケジュール実行:

# 即時実行
aws datasync start-task-execution \
  --task-arn arn:aws:datasync:ap-northeast-1:...:task/xxxxx

# 実行状態を監視
aws datasync describe-task-execution \
  --task-arn ... \
  --execution-arn arn:aws:datasync:...:execution/xxxxx

# 結果例
{
  "Status": "SUCCESS",
  "BytesTransferred": 1073741824,  # 1 GB
  "FilesTransferred": 10000,
  "BytesSkipped": 0,
  "FilesSkipped": 0,
  "StartTime": "2026-04-26T02:00:00Z",
  "EndTime": "2026-04-26T02:05:30Z"
}

主要ユースケース(10パターン)

1. 大規模オンプレミス NAS → S3 移行

シナリオ:
  オンプレミス: Dell EMC Isilon NAS(50TB)
  転送先: S3 Standard Tier
  ネットワーク: 1 Gbps(往復時間 50ms)
  
構成:
  Agent: 8 vCPU, 64GB メモリ VM(VMware)
  転送スレッド数: 64 並列
  チェックサム検証: ONLY_FILES_TRANSFERRED
  帯域幅: 制限なし(夜間バッチ)
  
所要時間:
  理論値: 50TB ÷ 1Gbps = 400秒 = 6.7分
  実測値: ~10分(オーバーヘッド含む)
  
コスト:
  Agent VM: $0.3/時間 × 1時間 = $0.30
  DataSync 転送料金: 50,000GB × $0.0125 = $625
  合計: $625.30

メリット:
  - 手動 rsync なら 1-2日かかる → DataSync なら 10分
  - 検証・フィルタリングが自動

2. AWS オンボーディング(複数ファイルサーバー統約)

シナリオ:
  3 つのオンプレミス拠点(各 10TB)→ AWS EFS 1 つに統約
  
ステップ:
  拠点A: /data → EFS:/site-a へ DataSync Task
  拠点B: /data → EFS:/site-b へ DataSync Task
  拠点C: /data → EFS:/site-c へ DataSync Task
  
  定期同期: 毎日深夜 01:00 実行(増分のみ)
  
構成:
  EFS: Regional, Elastic Throughput
  各タスク: 独立実行, 1 つずつ順序実行
  検証: POINT_IN_TIME_CONSISTENT
  
月間コスト:
  EFS ストレージ: 30TB × $0.30 = $9,000
  DataSync 転送: (10TB + 5TB + 5TB) × $0.0125 = $250/月
  合計: ~$9,250

メリット:
  - 3 拠点の ファイルを EC2/ECS クラスター全体で共有可能
  - 定期同期で オンプレミス更新を自動反映

3. クロスリージョン EFS 複製(DR)

シナリオ:
  Primary EFS: ap-northeast-1(東京)5TB
  Replica EFS: ap-northeast-3(大阪)
  RPO: 1時間以内(定期同期)
  
構成:
  Task: EFS-1a(Tokyo) → EFS-1(Osaka)
  Schedule: cron(0 * * * ? *) (毎時実行)
  Verification: POINT_IN_TIME_CONSISTENT
  TransferMode: CHANGED (変更ファイルのみ)
  
所要時間:
  初回: 5TB ÷ 5Gbps (EFS同期最大) = ~8分
  以降毎時: 変更分のみ(通常 100MB 未満なら 1-2秒)
  
コスト:
  Primary EFS: 5TB × $0.30 = $1,500/月
  Replica EFS: 5TB × $0.30 = $1,500/月
  DataSync 転送: (5TB 初回 + 月間差分 30TB) × $0.0125 = $375
  合計: ~$3,375

メリット:
  - AZ/リージョン障害時に 秒単位でフェイルオーバー可能
  - EFS Replication より 細粒度制御可能

4. 医療機関の PACS バックアップ(FSx for Windows)

シナリオ:
  PACS(画像ストレージシステム): 500TB, SMB プロトコル
  転送先: FSx for Windows(AWS)
  バックアップ周期: 日次(夜間)
  
構成:
  Agent: Hyper-V VM(Windows Server)
  Location Source: SMB /pacs-01
  Location Dest: FSx for Windows smb://fs-xxxxx/backup
  Schedule: cron(0 22 * * ? *) (毎日 22:00)
  Verification: POINT_IN_TIME_CONSISTENT
  BytesPerSecond: 52428800 (50MB/s に制御)
  
実行パターン:
  初回バックアップ: 500TB ÷ 50MB/s = ~116時間(5日)
  以降: 差分のみ(平均 10TB/日)→ ~3時間
  
コスト:
  FSx for Windows: 500TB × $0.25 = $125,000/月
  DataSync 転送: (500TB 初回 + 300TB 月間差分) × $0.0125 = $10,000
  Agent VM: $0.5/時間 × 730時間 = $365
  合計: ~$135,365

メリット:
  - HIPAA/GDPR コンプライアンス対応
  - 医療画像データの 整合性検証が自動
  - RPO 1日以内で DR 環境構築

5. メディア・映像ファイル AWS 処理への転送

シナリオ:
  オンプレミス: 4K 映像ストレージ 100TB
  AWS 処理: MediaConvert, Elemental Live など
  
構成:
  Agent: 高性能(16 vCPU, 128GB メモリ)
  Location: NFS /media/master
  Destination: S3 + EFS(処理用)
  Transfer Mode: CHANGED (新ファイルのみ)
  Verification: COPY_WITH_SKIP_VERIFY (速度優先)
  Bandwidth: 無制限(オンプレミス network 余裕あり)
  
月間フロー:
  新規映像: 50TB/月 → DataSync で AWS へ
  処理結果: 100TB(エンコード後) → S3 Glacier に自動アーカイブ
  
コスト:
  S3 Intelligent-Tiering: 150TB × $0.023 = $3,450/月
  DataSync 転送: 50TB × $0.0125 = $625
  MediaConvert: プロパティ別
  合計: ~$4,075+

メリット:
  - Global Creative Cloud ワークフロー対応
  - AWS AI/ML でコンテンツ分析・自動編集

6. Hadoop クラスター → AWS 移行

シナリオ:
  Hadoop HDFS: 200TB(Parquet フォーマット)
  → AWS S3 + Athena クエリ環境へ
  
構成:
  Agent: Hadoop クラスター内に デプロイ
  Location Source: HDFS hdfs://namenode:9000/data
  Location Dest: S3 s3://data-lake-bucket/parquet/
  Verification: ONLY_FILES_TRANSFERRED
  Overwrite Mode: ALWAYS (スキーマ更新対応)
  
段階化:
  Phase 1: Historical Data 100TB → S3
  Phase 2: Incremental Sync 毎週 5TB → S3
  Phase 3: Decommission オンプレミス Hadoop
  
コスト:
  S3 Standard: 200TB × $0.023 = $4,600
  DataSync: (100TB 初回 + 20TB 月間) × $0.0125 = $1,500
  合計: ~$6,100

メリット:
  - Athena で SQL クエリ可能(Hadoop より柔軟)
  - Spark on AWS EMR で 自動スケーリング
  - Data Lake Foundation 構築

7. エンタープライズ NAS → AWS(複数リージョン)

シナリオ:
  NetApp OnCommand(NAS): 1PB → AWS Global デプロイ
  
構成:
  Primary Region: ap-northeast-1(東京)EFS 500TB
  Secondary Region: ap-northeast-3(大阪)EFS 500TB
  Tertiary Region: us-east-1(N.Virginia)S3 500TB
  
パイプライン:
  東京 NAS →(Task1)→ 東京 EFS
  東京 EFS →(Task2 CHANGED)→ 大阪 EFS
  東京 EFS →(Task3)→ N.Virginia S3
  
スケジュール:
  初回: 全ファイル転送(1-2週間かけて)
  以降: 毎日深夜 差分同期(CHANGED)
  
月間コスト:
  EFS × 2: 1000TB × $0.30 = $300
  S3: 500TB × $0.023 = $11,500
  DataSync: (1PB 初回 + 100TB 月間差分) × $0.0125 = $13,750
  合計: ~$25,550

メリット:
  - グローバル市場での Local Compliance
  - 各リージョンで ローカル処理・アナリティクス
  - ハイブリッド DR 環境

8. AWS 内 S3 → EFS コピー(分析用)

シナリオ:
  Data Lake(S3): 10TB Parquet
  → Machine Learning pipeline 用 EFS へ
  
構成:
  Source: S3 s3://datalake/ml-input/
  Destination: EFS fs-xxxxx:/ml-workspace/
  Agent: agentless (AWS 内転送)
  Verification: COPY_WITH_SKIP_VERIFY(高速)
  Transfer Mode: CHANGED
  Schedule: cron(0 1 * * ? *) (毎日 1:00 AM)
  
実行例:
  初回: 10TB → ~2-3分(agentless で高速)
  以降: 差分 100GB → ~10秒
  
コスト:
  EFS: 10TB × $0.30 = $3,000
  DataSync: 10TB × $0.0125 = $125
  合計: ~$3,125

メリット:
  - S3 Select/Athena より低遅延アクセス
  - ML training データセット高速ロード

9. クロスアカウント EFS 同期(監視・ロギング用)

シナリオ:
  本社アカウント: EFS(本店データ)→ 監査アカウントへ複製
  
構成:
  Source Account: 123456789012
    EFS: fs-prod-xxxxx
    
  Audit Account: 987654321098
    EFS: fs-audit-xxxxx
  
  Task (Audit Account で実行):
    Source: EFS (本社)
    Destination: EFS (監査)
    Cross-Account IAM Role: arn:aws:iam::123456789012:role/DataSyncCrossAccount
  
月間:
  初回: 全ファイル複製
  以降: 毎日深夜 差分同期
  
コスト:
  EFS × 2 リージョン: ~$6,000
  DataSync: ~$200
  合計: ~$6,200

メリット:
  - Compliance・監査ログの分離環境
  - データセキュリティ強化

10. Snowball Edge + DataSync ハイブリッド(超大容量)

シナリオ:
  オンプレミス: 100PB NAS
  AWS へ の移行(物理輸送 + オンライン同期)
  
フロー:
  Step 1: Snowball Edge(100 個)で 物理的に輸送
          各 100TB × 100 = 10PB × 10 回転
  
  Step 2: AWS に到着後、Snowball から S3 へ自動ロード
  
  Step 3: DataSync で 残りファイル・差分を オンライン同期
          帯域幅: 100Mbps(低速接続対応)
  
所要時間:
  物理輸送: 2-3週間 × 10回転 = 20-30週
  オンライン同期: 残り 10% × 100PB ÷ 100Mbps = ~1年
  
コスト:
  Snowball Edge: $300/日 × 30日 × 10回転 = $90,000
  S3 保存: 100PB × $0.023 = $2,300,000/月
  DataSync: (10PB 段階的) × $0.0125 = $125,000
  合計: ~$2,515,000

メリット:
  - 物理ネットワーク制限下での 超大容量移行
  - Snowball + DataSync で 完全自動化
  - 5年で エンタープライズ全体 AWS 化実現

設定・操作の具体例

AWS CLI でタスク作成・実行

# 1. Agent を起動し、アクティベーション
aws datasync create-agent \
  --agent-name my-onprem-agent \
  --activation-key xxxxxxxxxxxxx \
  --region ap-northeast-1

# 結果: AgentArn: arn:aws:datasync:ap-northeast-1:...:agent/agent-xxxxx

# 2. NFS Location(ソース)を作成
aws datasync create-location-nfs \
  --subdirectory /data/exports \
  --server-hostname 192.168.1.100 \
  --on-prem-config AgentArns=arn:aws:datasync:ap-northeast-1:...:agent/agent-xxxxx

# 結果: LocationArn: arn:aws:datasync:...:location/nfs/...

# 3. S3 Location(宛先)を作成
aws datasync create-location-s3 \
  --s3-bucket-arn arn:aws:s3:::my-migration-bucket \
  --subdirectory /migrated-data \
  --s3-config BucketAccessRoleArn=arn:aws:iam::123456789012:role/DataSyncS3Role

# 結果: LocationArn: arn:aws:datasync:...:location/s3/...

# 4. Task を作成
aws datasync create-task \
  --source-location-arn arn:aws:datasync:ap-northeast-1:...:location/nfs/... \
  --destination-location-arn arn:aws:datasync:ap-northeast-1:...:location/s3/... \
  --name nfs-to-s3-migration \
  --options '{
    "VerifyMode": "ONLY_FILES_TRANSFERRED",
    "OverwriteMode": "ALWAYS",
    "PreserveDeletedFiles": "PRESERVE",
    "TaskQueueing": "ENABLED",
    "LogLevel": "TRANSFER",
    "TransferMode": "CHANGED",
    "BytesPerSecond": 104857600
  }' \
  --schedule 'ScheduleExpression=cron(0 2 * * ? *)'

# 結果: TaskArn: arn:aws:datasync:ap-northeast-1:...:task/task-xxxxx

# 5. Task を即座に実行
aws datasync start-task-execution \
  --task-arn arn:aws:datasync:ap-northeast-1:...:task/task-xxxxx

# 6. 実行状況をモニタリング
aws datasync describe-task-execution \
  --task-arn arn:aws:datasync:ap-northeast-1:...:task/task-xxxxx \
  --execution-arn arn:aws:datasync:ap-northeast-1:...:execution/exec-xxxxx \
  --query '[Status,BytesTransferred,FilesTransferred,StartTime,EndTime]' \
  --output table

帯域幅制御(時間帯別)

# CloudWatch Events + Lambda で 帯域幅を動的に制御

# 営業時間(09:00-18:00): 10 MB/s に制限
aws datasync update-task \
  --task-arn arn:aws:datasync:ap-northeast-1:...:task/task-xxxxx \
  --options '{
    "BytesPerSecond": 10485760
  }'

# 夜間(22:00-06:00): 無制限
aws datasync update-task \
  --task-arn arn:aws:datasync:ap-northeast-1:...:task/task-xxxxx \
  --options '{
    "BytesPerSecond": -1
  }'

# Lambda 関数(cron で実行)
import boto3
import json

datasync = boto3.client('datasync')

def lambda_handler(event, context):
    task_arn = 'arn:aws:datasync:ap-northeast-1:...:task/task-xxxxx'
    
    # 現在時刻を取得
    from datetime import datetime
    hour = datetime.now().hour
    
    # 営業時間: 09:00-18:00
    if 9 <= hour < 18:
        bytes_per_second = 10485760  # 10 MB/s
    else:
        bytes_per_second = -1  # 無制限
    
    # Task を更新
    response = datasync.update_task(
        TaskArn=task_arn,
        Options={
            'BytesPerSecond': bytes_per_second
        }
    )
    
    return {
        'statusCode': 200,
        'body': json.dumps(f'Updated bandwidth to {bytes_per_second} bytes/sec')
    }

Terraform での DataSync Task 設定

# Agent の作成
resource "aws_datasync_agent" "onprem" {
  ip_address        = "192.168.1.50"
  security_group_arns = [aws_security_group.datasync.arn]
  subnet_id         = aws_subnet.onprem.id

  tags = {
    Name = "onprem-datasync-agent"
  }
}

# NFS Location(ソース)
resource "aws_datasync_location_nfs" "onprem_nfs" {
  subdirectory = "/data/exports"
  server_hostname = "192.168.1.100"

  on_prem_config {
    agent_arns = [aws_datasync_agent.onprem.arn]
  }
}

# S3 Location(宛先)
resource "aws_datasync_location_s3" "aws_s3" {
  s3_bucket_arn = "arn:aws:s3:::my-migration-bucket"
  subdirectory  = "/migrated-data"

  s3_config {
    bucket_access_role_arn = aws_iam_role.datasync_s3.arn
  }
}

# Task
resource "aws_datasync_task" "nfs_to_s3" {
  source_location_arn      = aws_datasync_location_nfs.onprem_nfs.arn
  destination_location_arn = aws_datasync_location_s3.aws_s3.arn

  name = "nfs-to-s3-migration"

  options {
    atime = "BEST_EFFORT"
    bytes_per_second = 104857600  # 100 MB/s
    gid = "BOTH"
    log_level = "TRANSFER"
    mtime = "PRESERVE"
    overwrite_mode = "ALWAYS"
    preserve_deleted_files = "PRESERVE"
    posix_permissions = "BEST_EFFORT"
    task_queueing = "ENABLED"
    transfer_mode = "CHANGED"
    verify_mode = "ONLY_FILES_TRANSFERRED"
  }

  schedule {
    schedule_expression = "cron(0 2 * * ? *)"
  }

  tags = {
    Environment = "production"
  }
}

# CloudWatch イベント(自動実行)
resource "aws_cloudwatch_event_rule" "datasync_schedule" {
  name = "datasync-daily-sync"
  schedule_expression = "cron(0 2 * * ? *)"
}

resource "aws_cloudwatch_event_target" "datasync_task" {
  rule = aws_cloudwatch_event_rule.datasync_schedule.name
  target_id = "DataSyncTask"
  arn = "arn:aws:datasync:${data.aws_region.current.name}:${data.aws_caller_identity.current.account_id}:task/${aws_datasync_task.nfs_to_s3.id}"
  role_arn = aws_iam_role.eventbridge_datasync.arn
}

他の類似ツール・サービスとの比較

観点 DataSync Storage Gateway S3 Transfer Accel rsync Snowball
用途 オンライン転送・同期 ハイブリッド統合 S3 高速化 ファイル同期 物理輸送
対応プロトコル NFS/SMB/HDFS/S3 NFS/SMB/iSCSI HTTP SSH -
自動検証 ✅ チェックサム ❌ 手動 ❌ 別途スクリプト
定期同期 ✅ スケジュール △ ファイルゲートウェイ ✅ cron
帯域幅制限 △ rsync --bwlimit -
スケーラビリティ 並列化・マルチパート エッジ マシン依存 S3 の制限 シングルスレッド 物理容量依存
コスト `0.0125/GB 転送 キャパ購入制 転送料金高い 無料 `300/日 × 期間
適用最小容量 GB 単位 TB 単位 GB 単位 可変 100TB 以上推奨
適用最大容量 PB(段階的) TB 実質無制限 PB(時間要) 数 PB(複数 Snowball)
2026年推奨判断 オンライン移行・同期 レガシー環境 全部 AWS 環境 シンプルなら可 超大容量(>100TB)

ベストプラクティス(✅ / ❌)

✅ DO

  • Agent の高性能化: 4+ vCPU, 32+ GB メモリ で 並列化活用
  • VerifyMode を有効化: チェックサムで データ破損検知
  • Transfer Mode = CHANGED: 初回移行後は差分のみで時間短縮
  • 帯域幅制御: 営業時間は制限、夜間は無制限で ネットワーク最適化
  • 定期同期スケジュール: CloudWatch Events + Lambda で自動化
  • CloudWatch で監視: 転送速度、エラー、検証失敗を追跡
  • 段階的移行: 部分テスト後に全体へ拡張
  • Cross-Account Task: Audit/Security アカウントでの複製で compliance 対応

❌ DON’T

  • Agent 低スペック: CPU 不足で 並列化が活かせず、速度低下
  • VerifyMode = NONE: データ破損検知できない。初回移行では必須
  • 制限なし帯域幅で常時実行: ネットワーク飽和で 本番業務に支障
  • Transfer Mode = ALWAYS: 既存ファイル常に比較チェックで 遅い
  • 手動タスク実行: 定期同期が漏れるリスク。スケジュール必須
  • エラーハンドリングなし: 転送失敗を検知しない。アラーム設定必須
  • Task ログを削除: トラブルシューティング時に 原因追跡困難
  • 単一 Agent に依存: Agent 障害で 全転送が停止。冗長化検討

トラブルシューティング

症状 原因 対策
Agent がアクティベート不可 セキュリティグループで https(443)遮断 Agent SG のアウトバウンドルール確認(TCP/443 許可)
NFS マウント接続エラー Agent が NAS に アクセス不可 NAS ファイアウォール確認、NFS ポート(2049)許可
転送速度が遅い(<10 MB/s) Agent CPU 不足、または ネットワーク輻輳 Agent リソース増加、または 時間帯ずらし
検証失敗(Verification failed) ネットワーク転送エラー、またはファイル権限変更 再実行、ファイル権限確認
Task 実行途中で 中断 Agent 接続切断、または オンプレミス側ファイルシステム エラー Agent 再起動、NAS 診断実行
スケジュール実行されない CloudWatch Events ルールが OFF、または IAM ロール不足 EventBridge ルール確認、IAM ロール権限確認
Overwrite モード で 上書き失敗 宛先 S3/EFS 権限不足 IAM ロール(s3:PutObject等)権限追加
Cost が予想外に高い 予定以上のファイル転送実行 Transfer Mode を CHANGED に変更、帯域幅制限検討
ログが CloudWatch に 出現しない Log Group が作成されていない Task 作成時に ログレベル = TRANSFER 指定し再実行

2025-2026 最新動向

1. Enhanced Mode(クロスクラウド対応 2025)

  • Google Cloud Storage、Azure Blob Storage、Oracle Cloud Object Storage に直接接続
  • エージェント不要で エージェント管理の複雑性軽減
  • マルチクラウド環境で 統一転送プラットフォーム実現

2. agentless 転送(AWS Storage 間)

  • S3 ↔ S3、EFS ↔ EFS、FSx ↔ FSx で エージェント不要
  • 最大並列化で 転送速度大幅向上(従来比 50-100倍)

3. Bandwidth Throttling の自動化

  • CloudWatch Metrics + Lambda で 時間帯別制御が容易に
  • ネットワーク効率化で コスト削減・業務影響最小化

4. Transfer Verification 強化

  • チェックサム種別選択可(MD5, SHA256)
  • データ改ざん検知精度向上

学習リソース

AWS 公式

テックブログ


実装例

小規模(1-10 TB)

構成:
  Agent: VM(4 vCPU, 16GB メモリ)
  Location: NAS (NFS)→ S3
  Transfer: 1 回限りの移行

所要時間: 10TB ÷ 100MB/s = ~28時間(1日)
コスト: $125(転送料金)

用途: 小規模ファイルサーバー移行

中規模(10-100 TB)

構成:
  Agent: 高性能 VM(8 vCPU, 64GB メモリ)
  Location: NetApp NAS → EFS + S3
  定期同期: 毎日深夜 差分のみ

初回: 50TB → 5-10時間
以降: 月間差分 5TB × 12回 × $0.0125 = $750/月

用途: エンタープライズ NAS AWS 統合

大規模(100 TB - PB)

構成:
  Agent: 複数(分散実行)
  Snowball Edge: 物理輸送 + DataSync オンライン同期
  Location: HDFS → S3 Intelligent-Tiering

初回: Snowball 10回 × 100TB + DataSync 差分
月間: DataSync 差分 100TB × $0.0125 = $1,250

用途: 大規模データセンター統合・クラウド移行

導入ロードマップ

Phase 1: 計画・評価(1-2週間)

  1. ファイルサーバー・NAS の容量、プロトコル調査
  2. ネットワーク帯域幅・遅延測定
  3. AWS ターゲット選定(S3/EFS/FSx)
  4. 移行スケジュール・コスト見積もり

Phase 2: PoC(1-2週間)

  1. Agent VM デプロイ
  2. Location テスト設定
  3. Task 作成・実行
  4. 転送速度・検証精度 ベンチマーク

Phase 3: 本番移行(4-12週間)

  1. 本番 Agent デプロイ
  2. Location 本番設定
  3. 段階的転送実行
  4. CloudWatch 監視・アラーム設定

Phase 4: 最適化・運用(継続)

  1. 帯域幅制御の調整
  2. 定期同期スケジュール最適化
  3. コスト削減施策(Snapshots Archive 等)
  4. ディザスタリカバリー テスト

実装チェックリスト

  • [ ] Agent の要件スペック確認(vCPU, メモリ, ネットワーク)
  • [ ] オンプレミス側ファイアウォール設定(https 443)
  • [ ] NAS/ファイルサーバーの認証方式確認(NFS Kerberos など)
  • [ ] AWS Target の 権限設定(IAM Role で s3:PutObject 等)
  • [ ] VerifyMode を ONLY_FILES_TRANSFERRED 以上に設定
  • [ ] Transfer Mode を CHANGED に設定(差分転送で効率化)
  • [ ] CloudWatch ログ出力を有効化(TRANSFER レベル)
  • [ ] 帯域幅制限設定(営業時間は 10-50 MB/s)
  • [ ] スケジュール実行設定(cron 式)
  • [ ] CloudWatch アラーム設定(転送失敗、検証失敗)
  • [ ] 定期的に 転送ログ確認(月1回レビュー)
  • [ ] ディザスタリカバリー テスト実施(年2回)

まとめ

AWS DataSync は オンプレミス・AWS・他クラウド間の大容量ファイル転送を自動化・最適化するマネージドサービス です。2026年では Enhanced Mode でクロスクラウド対応agentless 転送で AWS Storage 間を高速化自動チェックサム検証でデータ品質保証 を実現します。

並列化・マルチパート・帯域幅最適化により、手動 rsync より数倍高速で、エラー検知が確実。定期同期スケジュール・CloudWatch 監視で、完全に自動化されたデータ同期基盤を構築できます。


参考文献

AWS 公式(10+)

テックブログ・OSS(5+)


最終更新: 2026-04-26
バージョン: v2.0