クラウドストレージに大量のデータを預けた後で「他社に乗り換えたい」と思ったとき、想定外のコストに直面するケースがあります。主犯はEgress料金です。AWSのS3では、インターネットへのデータ転送に1GBあたり約$0.09(最初の10TB)、Azure Blob Storageは$0.087/GB、Google Cloud Storageは最初の1TBで$0.12/GBかかります。10TBのデータを移行しようとすれば、それだけで数万円規模の転送費用が発生します。
アップロードは無料でもダウンロードには課金される——この価格設計が、多くのクラウドプロバイダーが採用するロックイン手法です。
ベンダーロックインの正体:3つのパターン

クラウドストレージのベンダーロックインには、大きく3つのパターンがあります。
1. Egressコストによる経済的な囲い込み
前述の通り、主要クラウドプロバイダーは「データを預けるのは格安、取り出すのは高額」という構造になっています。1TBのデータを毎月取り出すと、それだけで年間数十万円のコストになりえます。移行時には全データを一度に引き出す必要があるため、累積したデータ量が多いほど脱出コストは高くなります。
2. 独自機能・APIへの依存
各クラウドプロバイダーは標準的なストレージ機能に加えて、独自の付加機能を提供しています。AWS LambdaのトリガーをS3イベントと連携させたり、AWS KMSで管理する暗号化キーを使ったりした設計は、AWSから離れるとそのまま動きません。「便利だから使っていた」機能が、気づかないうちに移行の障壁になります。
3. データ形式・メタデータの非互換
ストレージに付与したタグ、アクセス制御リスト(ACL)、バケットポリシーなどのメタデータは、移行先で完全に再現できないことがあります。データ本体は移せても、付帯情報の移植に想定外の工数がかかるパターンです。
「S3互換」は一律ではない
「S3互換API対応」と書かれていれば移行が容易に見えますが、S3互換性はグラデーションです。あるプロバイダーは基本的なPUT/GETは動いても、バージョニングがなかったりオブジェクトサイズに上限があったりします。
Cloudflare R2はコアAPIに対応していますが、バージョニングとオブジェクトロックがありません。DigitalOcean SpacesやVultrは1ファイルあたりのサイズ上限が5GBです。イベント通知が使えるのは実質的にAWS・GCS・MinIOのみです。
移行前に自分のワークロードで何を使っているかを確認してください。特に以下は移行先で動作しない可能性があります:
- S3のライフサイクルポリシー
- オブジェクトバージョニング
- Lambda S3イベントトリガー
- KMS管理の暗号化キー
- バケット通知
「接続できる」と「同じように動く」は別の話です。
データポータビリティを確保する4つの実践
1. オープン標準だけを使う
特定ベンダーの独自機能に依存しないことが出発点です。暗号化はサービス側のKMS連携ではなくクライアントサイドで行う、イベント処理はS3依存のLambdaではなくキューサービスで実装するといった設計方針が、将来の選択肢を広げます。
2. 定期的にエクスポートを試す
「移行できる」を定期的に実証してください。年に1回でも実際に全データをエクスポートする手順を実行し、所要時間とコストを計測しておく。試したことのないシステムを本番でいきなり動かすのはリスクです。
3. Egressコストを計算に入れた契約交渉
大量のデータを扱う企業は、契約時にEgress料金の上限や移行時の特例を交渉できることがあります。特にプライベートクラウドや専用型クラウドでは交渉の余地があります。
4. バックアップを別プロバイダーに分散させる
バックアップを同じプロバイダーに置くと、緊急時の選択肢がなくなります。オフサイトバックアップを別のストレージサービスに置くことで、プロバイダーの障害時にも対応でき、移行の準備運動にもなります。
rcloneによる移行:実践的な手順

rcloneはS3・WebDAV・Google Drive・Azure Blobなど40種類以上のストレージに対応する移行ツールです。S3互換ストレージ間であれば、接続情報を設定するだけでコピーが完了します。
設定例(移行元:AWS S3 → 移行先:S3互換ストレージ)
# rcloneの設定
rclone config
# 移行元(AWS S3)の確認
rclone ls source:bucket-name
# 同期(--dry-runで先に確認)
rclone sync source:bucket-name dest:bucket-name --dry-run
# 実際に移行
rclone sync source:bucket-name dest:bucket-name --progress
rclone checkコマンドで移行後のデータ整合性を検証できます。チェックサムベースの比較なので、名前が同じでも内容が違うファイルを検出できます。
移行時の注意点
大量データの移行は転送速度とEgressコストのトレードオフです。同一リージョン内での移行(例:AWS東京リージョン内)はEgressコストがかかりません。リージョンをまたぐ移行や他社への移行では、転送量を事前に見積もってコストを計算してください。
並列転送を有効にすると速度が上がります:
rclone sync source:bucket dest:bucket --transfers 16 --checkers 32
ストレージ選定時のチェックリスト
移行しやすいストレージかどうかは、契約前に以下を確認することで判断できます。
| 項目 | 確認内容 |
|---|---|
| Egressコスト | データをダウンロードする際の料金体系 |
| S3互換の範囲 | バージョニング・オブジェクトロックの対応状況 |
| データ形式 | 独自形式でのみ保存されるか、標準フォーマットか |
| 移行サポート | プロバイダーが移行ツールを提供しているか |
| APIドキュメント | エンドポイント、認証、エラーコードが文書化されているか |
| SLAと解約条件 | 解約時のデータ引き渡し期間と手順 |
Egressコストがゼロまたは低いプロバイダー(Cloudflare R2、一部のプライベートクラウド等)は、移行コストが実質的に存在しません。これはベンダーロックインの経済的な拘束力がない状態を意味します。
HStorageでのデータポータビリティ
HStorageはS3互換APIとWebDAVの両方を提供しています。
S3互換API経由でのアクセスでは、rcloneをそのまま使えます。
# rclone.conf
[hstorage]
type = s3
provider = Other
endpoint = https://s3.hstorage.io
access_key_id = your_access_key
secret_access_key = your_secret_key
これにより、HStorageに保存したデータを他のS3互換ストレージへrcloneでコピーする操作が、設定変更だけで実行できます。
WebDAV経由では、macOS Finder・Windows エクスプローラー・Linux(davfs2)から直接ファイルをドラッグ&ドロップで取り出せます。専用クライアントを介さずにデータにアクセスできる状態は、ベンダー依存度が低いことを示しています。
HStorageにはEgress課金がなく、保存したデータはいつでもダウンロードできます。ストレージの価格は容量単位で固定されており、取り出し量によって請求額が変わるような隠れたコスト構造はありません。
データを預ける前にrcloneで取り出しテストを一度実行してください。「エクスポートできる」を検証済みにしておくことが、後から後悔しない選択につながります。
HStorageの14日間無料トライアルでS3互換APIとWebDAVの動作を確認してください。