🛸

AWS S3 -> Cloudflare R2への移行を試してみた

2023/11/13に公開

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バケットの情報を入力するだけでした。

  1. ソースバケットの情報入力

    • 事前に準備しておいたアクセスキー等の情報を入力します。

      アクセスキーが有効化どうかもチェックしているようでした。
  2. 移行先R2バケットの情報入力

    • 1.と同じように必要な情報やトークンを入力します。

      こちらでもトークンの検証を行っていました。
  3. 最後にレビュー画面で問題が無いかを確認し、「ファイルを移行する」ボタンを押すと移行が開始されます。

移行中はこのような形で移行状況を確認することができます。

検証結果

  • ファイル数:2080
  • 合計サイズ:10.8GiB
  • 開始時間:2023-11-09T08:00:56
  • 終了時間:2023-11-09T08:22:27
    ⇒ 約22分

という結果になりました。体感としては少々遅いなという感想になりましたが aws s3 cp でローカルに落とし、別バケットに再度アップロードしようとすると「まぁこのくらいの時間かかってしまうだろうな」とも思える時間なのでしょうがないのかな?という思いがあります。

実際に移行の運用する場合は

  1. S3とR2両方にアップロードするようにアプリ側を編集
  2. 時間はかかるがマイグレーションを実施
  3. 移行しきったタイミングでR2のみにアップロードするように再度修正

といった流れになるかな?と想定しています!

Discussion