はじめに
ガバメントクラウド(AWS)への移行は、通常のAWS移行と比べていくつかの固有制約が加わります。これらはデータ移行ツールの選定・認証設計・ネットワーク経路に直接影響します。
本記事では、こうしたガバメントクラウド固有の制約を踏まえながら、DBとファイルそれぞれの移行方式の選択肢・特徴・実装上の注意点を整理します。ガバメントクラウド環境を実際に構築・移行する技術者を想定しています。
ガバメントクラウド全般については GCASガイド を参照してください。
ガバメントクラウドにおけるデータ移行の注意点
技術面で押さえておくべきガバメントクラウド(AWS)固有の制約を先に整理します。これらはすべての移行方式に横断的に影響します。
IAMユーザーの利用不可
ガバメントクラウド環境ではIAMユーザー(アクセスキー)の利用が廃止されています。移行ツールの認証設計を見直す必要があります。
SCPによるサービス制限・リージョン制限
SCPにより一部AWSサービスが制限されており、国内リージョン(ap-northeast-1/ap-northeast-3)以外へのリソース作成も禁止されています。移行で利用するサービスが制限対象かどうかをGCASガイドの最新版で事前確認することが必須です。
代表的な制限として、AWS CloudShellは通常版が利用不可で、VPC環境版のみ許可されています。
データタイプの整理
移行対象データは大きく2種類に分類できます。
| 種別 | 具体例 | 主な課題 |
|---|---|---|
| DB | RDB(PostgreSQL、MySQL、Oracle等)、NoSQL | トランザクション整合性の維持、ダウンタイムの最小化 |
| その他ファイル | ログ、帳票PDF、添付ファイル、バックアップ等 | 大容量データの転送スループット、差分同期 |
ネットワーク経路の整理
移行に使うAWSサービスへの接続経路はインターネット・Direct Connect・VPNの3択です。閉域接続(Direct Connect/VPN)を利用する場合は各サービスのVPCエンドポイントと組み合わせることでインターネットを経由しない転送経路を構成できます。
どちらの経路を使うかによって、各移行方式の設定(エンドポイント作成の要否・エージェントの向き先等)が変わるため、方式選定の前に接続経路を確定させておくことが重要です。
| サービス | インターネット経由 | Direct Connect / VPN + VPCエンドポイント |
|---|---|---|
| S3 | ○ | Gateway型またはInterface型エンドポイント |
| DataSync | ○(エージェント→パブリックエンドポイント) | PrivateLinkエンドポイントを使用 |
| DMS | ○ | レプリケーションインスタンスをVPC内に配置、ソースDBへ疎通 |
| Transfer Family | ○ | VPC-hosted serverを使用 |
DBの移行方式
1. AWS Database Migration Service(DMS)
**継続的なデータ同期(CDC: Change Data Capture)**により、旧システムを稼働させたままダウンタイムを最小化した移行が可能なマネージドサービスです。
主な特徴:
- 異種DB間の移行に対応(Oracle → Aurora PostgreSQL 等)。スキーマ変換が必要な場合はSCT(Schema Conversion Tool)を併用する
- フルロード完了後にCDCに切り替え、差分を追従しながら移行期間を確保できる
- 構成要素はレプリケーションインスタンス・ソースエンドポイント・ターゲットエンドポイント・レプリケーションタスクの4点
実装上の注意点:
- レプリケーションインスタンスはVPC内のプライベートサブネットに配置し、ソースDB(オンプレ)へはDirect Connect/VPN経由で疎通を確保する
- DMS用サービスロールに
dms.amazonaws.comをPrincipalとして設定し、S3・KMS・CloudWatch Logsへの必要権限を付与する - ソースDBの論理レプリケーション設定が必要(PostgreSQLの場合は
wal_level=logical) - CDC中のレプリケーションラグをCloudWatch Metricsでモニタリングし、ラグが十分に小さくなったタイミングでカットオーバーを判断する
2. スナップショット共有(旧環境がAWSの場合)
移行元が既にAWS上にある場合、RDSスナップショットをガバメントクラウドアカウントへ直接共有する方式です。設定がシンプルで大規模DBでも現実的な時間で移行できます。
主な手順:
- 移行元アカウントでRDSスナップショットを作成(自動スナップショットは共有不可のため手動で作成)
- スナップショットの「共有」設定に移行先(ガバメントクラウド)アカウントIDを追加
- 移行先アカウントでスナップショットを自アカウントにコピー
- コピーしたスナップショットからRDS/Auroraインスタンスをリストア
実装上の注意点:
- 暗号化スナップショットの場合、移行元のKMSカスタマーキーのキーポリシーに移行先アカウントのIAMロールを追加する必要がある
- 移行先のKMSキーで暗号化し直したい場合は、スナップショットのコピー時(手順3)に
--kms-key-idで移行先アカウントのCMKを指定する。これにより移行元KMSキーへの依存を切り離せる - スナップショットのコピー先リージョンはap-northeast-1またはap-northeast-3に限定する(SCP制限)
- クロスアカウントコピー自体はAWS内部ネットワークで完結するため、閉域設計の影響を受けない
3. DBダンプ(論理バックアップ)
pg_dump / mysqldump 等のネイティブツールによる論理バックアップ&リストアです。環境依存が低く最もポータブルな方式です。
主な特徴:
- DB種別・バージョン・環境を問わず汎用的
- 特定のスキーマ・テーブルのみを対象にした部分移行が容易
- 大規模DBではダンプ・転送・リストアそれぞれに時間がかかるため、計画的なダウンタイム確保が必要
実装上の注意点:
- ダンプファイルの転送先S3バケットへはS3 Gateway型VPCエンドポイント経由でアクセスし、インターネットを回避する
- 実行はEC2のインスタンスプロファイル(IAMロール)経由でS3に書き込む。アクセスキーは使用しない
-
pg_dump -Fc(カスタムフォーマット)+pg_restore -j(並列リストア)の組み合わせでスループットを改善できる - ダンプファイルはS3のSSE-KMSで暗号化し、バケットポリシーで移行先以外からのアクセスを制限する
DB移行方式の比較
| 項目 | DMS | スナップショット共有 | DBダンプ |
|---|---|---|---|
| 旧環境 | 全環境→AWS | AWS→AWS | 全環境→全環境 |
| ダウンタイム | 最小化可能(CDC) | 中程度(リストア時間依存) | 長い(サイズ依存) |
| 異種DB対応 | ◎(SCT併用) | ×(同種のみ) | △(手動変換要) |
| コスト | レプリケーションインスタンス費用 | スナップショット保存費用のみ | EC2等の実行コストのみ |
| 設定複雑度 | 高(エンドポイント・タスク・ロール設定) | 低 | 低 |
| 大規模DB | ◎ | ◎ | △ |
| 主な制約ポイント | IAMロール設計・VPC疎通設計が必要 | 外部アカウント共有のSCP可否・CMK設定 | IAMロール設計・S3エンドポイント設定 |
| 推奨シーン | オンプレ起点、異種DB、ダウンタイム最小化 | AWS間移行、同種DB、大規模 | 小〜中規模、部分移行、シンプルさ優先 |
その他ファイルの移行方式
1. AWS DataSync
オンプレのNFS/SMB/HDFS/S3互換ストレージからS3・EFS・FSxへの転送を自動化するマネージドサービスです。差分検出・チェックサム検証・再試行を自動で行うため、大規模ファイル群の移行に適しています。
実装上の注意点:
- オンプレ側にDataSyncエージェント(VMイメージまたはEC2)をデプロイし、インターネットまたはDirect Connect/VPN経由でDataSyncサービスエンドポイントに接続する
- 閉域構成の場合は**DataSync用のVPCエンドポイント(PrivateLink)**を作成し、エージェントからインターネットを経由しないルーティングを確保する
- 転送タスクには
VerifyDataオプションを有効化し、転送後の整合性チェックを自動実行させる - DataSyncのサービスロールに
datasync.amazonaws.comをPrincipalとして設定し、S3への書き込み権限を付与する
2. S3レプリケーション(旧環境がAWSの場合)
S3クロスアカウントレプリケーションにより、オブジェクトの新規作成・更新を自動でガバメントクラウドアカウントのバケットに同期します。
実装上の注意点:
- ソースバケットにレプリケーション設定を追加し、宛先としてガバメントクラウドアカウントのバケットARNを指定する
- ガバメントクラウド側バケットポリシーに、ソースアカウントのIAMロールからの
s3:ReplicateObject/s3:ReplicateDeleteを許可する - KMS暗号化バケットの場合、ソース側KMSキーポリシーにレプリケーションロールのアクセスを許可し、宛先側KMSキーでSSE-KMS暗号化するように設定する
- レプリケーションは新規オブジェクトのみが対象。既存オブジェクトはS3 Batch Operationsで初回コピーを別途実行する(後述)
3. AWS CLI(aws s3 sync)
シンプルかつ制御しやすい転送方法です。スクリプトに組み込んで自動化しやすく、小〜中規模のファイル移行や特定ディレクトリの増分転送に適しています。
実装上の注意点:
- 実行環境にIAMロール(インスタンスプロファイルまたはタスクロール)を付与し、アクセスキーを使用しない
- 閉域構成ではルートテーブルにS3 Gateway型エンドポイントを設定し、インターネットを経由せず転送する
- 大容量転送時はAWS CLIの設定ファイル(
~/.aws/config)でスループットを調整する[default] s3 = max_concurrent_requests = 20 multipart_threshold = 64MB multipart_chunksize = 16MB -
--sse aws:kms --sse-kms-key-id <key-id>でSSE-KMS暗号化を指定する
4. S3 Batch Operations(旧環境がAWSの場合)
S3内の大量オブジェクトに対して一括操作を実行するサービスです。S3レプリケーションは既存オブジェクトを同期しないため、初回の一括コピーにBatch Operationsを組み合わせるのが定石です。
実装上の注意点:
- ジョブの入力としてS3インベントリレポートを使用するか、CSVマニフェストを用意する
- ジョブの操作タイプに
S3PutObjectCopyを選択し、宛先バケットをガバメントクラウドアカウントのバケットに指定する - ジョブに付与するIAMロールには、ソース・宛先両バケットへの
s3:GetObject/s3:PutObjectおよび必要に応じてKMSへのアクセスを付与する - 失敗したオブジェクトはジョブ完了レポートから確認し、再ジョブで再試行する
5. AWS Transfer Family(SFTP)
SFTPプロトコルを使ったS3へのファイル転送を提供するマネージドサービスです。既存のSFTP連携を変更せずにストレージをS3に移行したい場合に有効です。
実装上の注意点:
- VPC-hosted serverタイプを選択し、VPC内のプライベートサブネットにエンドポイントを配置することで閉域内からのSFTP接続が可能になる
- ユーザー認証はSSH公開鍵方式(Transfer Family管理)またはSecretsManager連携(カスタムIdP)で構成する。後者はパスワード認証も対応可能
- バックエンドのS3バケットとSSE-KMS暗号化設定を合わせておく
- 連携元システムの接続先ホスト名・ポート・鍵の変更が必要な場合は事前に調整する
6. AWS Snowball Edge
物理デバイスにデータをロードし、AWSデータセンターへ輸送してS3にインポートするオフラインデータ転送サービスです。ネットワーク帯域が深刻なボトルネックになる超大規模データ移行で選択肢になります。
実装上の注意点:
- 申請から返却まで数週間のリードタイムが発生する。移行スケジュールの早い段階でSnowballを使うかどうかを判断する
- デバイスへのデータロードにはSnowball Edge Clientまたは
aws s3 cp(Snowball専用エンドポイント向け)を使用する - デバイス上のデータは256ビット暗号化済みで、AWSが輸送後にデータを消去することが保証されている
- Storage Optimizedモデル(80TB利用可能)とCompute Optimizedモデル(エッジ計算用途)から用途に合わせて選択する
その他ファイル移行方式の比較
| 項目 | DataSync | S3レプリケーション | AWS CLI | S3 Batch Operations | Transfer Family (SFTP) | Snowball Edge |
|---|---|---|---|---|---|---|
| 旧環境 | 全環境 | AWS→AWS | 全環境 | AWS→AWS | 全環境 | 全環境 |
| 大規模データ | ◎ | ◎ | △ | ◎ | △ | ◎ |
| 継続的な差分同期 | ○(スケジュール) | ◎(自動・イベント駆動) | × | × | × | × |
| 閉域対応 | ◎(VPCエンドポイント) | ◎(VPCエンドポイント) | ◎(S3 GWエンドポイント) | ◎(VPCエンドポイント) | ◎(VPC-hosted) | ◎(物理輸送) |
| 既存ワークフロー維持 | △ | △ | △ | △ | ◎(SFTP継続) | × |
| 設定複雑度 | 中(エージェント+VPCエンドポイント) | 中(バケットポリシー+KMS設定) | 低 | 中(マニフェスト+IAMロール) | 中(VPC-hosted設定) | 高(申請・輸送・デバイス操作) |
| コスト感 | 転送量課金 | 低(レプリケーション費用) | 低(実行環境費用) | リクエスト+転送量 | エンドポイント費用+転送量 | デバイス利用料 |
| 推奨シーン | オンプレ起点の定期・大規模転送 | AWS間の継続同期 | スクリプト制御・中規模以下 | S3既存オブジェクトの一括コピー | 既存SFTP連携の維持 | 超大規模・ネット帯域不足 |
まとめ
ガバメントクラウドへのデータ移行は、移行元環境・データ種別・ネットワーク制約・許容ダウンタイムの4軸で方式を選定します。
DB移行の選定指針:
- オンプレ起点 or 異種DB → DMS(CDCでダウンタイム最小化)
- AWS間 同種DB → スナップショット共有(シンプルかつ高速)
- 小規模 or 部分移行 → DBダンプ
ファイル移行の選定指針:
- オンプレ起点・大規模 → DataSync(エージェント+VPCエンドポイント)
- AWS間・移行後も継続同期が必要 → S3レプリケーション + S3 Batch Operations(既存オブジェクト初回コピー+以降差分)
- 既存SFTP連携を維持 → Transfer Family(VPC-hosted)
- ネット帯域が致命的に不足 → Snowball Edge(早めに申請判断)
どの方式でも共通して以下を徹底してください。
- IAMユーザー(アクセスキー)を使わず、IAMロールで認証設計を行う
- S3・RDSへのアクセスはVPCエンドポイント経由とし、インターネットを回避する
- 利用するAWSサービスがSCPの制限対象でないことをGCASガイド最新版で確認する
- 本番移行前に必ずテスト移行を実施し、所要時間とデータ整合性を確認する