AWS S3 -> Cloudflare R2への移行を試してみた
R2 Super Slurperを使ってS3からR2へのデータ移行
こんばんは、DELTAの馬場です。今回はR2 Super Slurperに触れる機会があったのでそのレポート記事を書きます。
最近自社ではCloudflare いいじゃん!の波が来ていてR2のエグレス無料に惹かれたところもあり、S3のバケットのR2への移行補助ツールであろうR2 Super Slurperを試してみることになりました。
実際のバケットはかなりの量のファイルがあるため、検証用に10GiB程度のバケットを使って検証しています。
実施する前に
公式ドキュメント(https://developers.cloudflare.com/r2/data-migration/super-slurper/)を見ると以下の条件のものは移行されずskipされるのでrcloneとか使ってねの記載がありました。
- 単体のファイルサイズが50GB以上のもの
- Glacier Instant Retrievalを除くS3 Glacierクラスのファイル
- S3 Intelligent Tiering を使用していてDeepArchiveクラスに配置されたファイル
なのであらかじめ該当するファイルの有無やストレージクラスの戦略を確認しておきます。
実施する
事前準備
- 対象S3バケットのリソースを取得できるAWS IAMユーザーのアクセスキーの発行
- Cloudflare R2の移行先バケットに編集権限を持つAPIトークンの発行
AWSに対しては任意のIAMユーザーのアクセストークンを利用してリソースを取得し、Cloudflareでは移行先となるバケットにAPIトークンを用いてオブジェクトの配置/上書きを行うためこれらの権限が必要になるそうです。
本番
実際にツールを動かすのはとても簡単で画面の指示に従いながらソースバケットと移行先R2バケットの情報を入力するだけでした。
-
ソースバケットの情報入力
- 事前に準備しておいたアクセスキー等の情報を入力します。
アクセスキーが有効化どうかもチェックしているようでした。
- 事前に準備しておいたアクセスキー等の情報を入力します。
-
移行先R2バケットの情報入力
- 1.と同じように必要な情報やトークンを入力します。
こちらでもトークンの検証を行っていました。
- 1.と同じように必要な情報やトークンを入力します。
-
最後にレビュー画面で問題が無いかを確認し、「ファイルを移行する」ボタンを押すと移行が開始されます。
移行中はこのような形で移行状況を確認することができます。
検証結果
- ファイル数:2080
- 合計サイズ:10.8GiB
- 開始時間:2023-11-09T08:00:56
- 終了時間:2023-11-09T08:22:27
⇒ 約22分
という結果になりました。体感としては少々遅いなという感想になりましたが aws s3 cp
でローカルに落とし、別バケットに再度アップロードしようとすると「まぁこのくらいの時間かかってしまうだろうな」とも思える時間なのでしょうがないのかな?という思いがあります。
実際に移行の運用する場合は
- S3とR2両方にアップロードするようにアプリ側を編集
- 時間はかかるがマイグレーションを実施
- 移行しきったタイミングでR2のみにアップロードするように再度修正
といった流れになるかな?と想定しています!
Discussion