2023年の初めに、Super Slurperを発表しました。これは他のクラウドオブジェクトストレージプロバイダーからR2への大容量データのコピーを容易にするデータ移行ツールです。この発表以来、開発者はSuper Slurperを使って何千ものR2への移行を成功させてきました!
Super Slurperは、すべてのデータを一度にR2に移行したい場合に最適ですが、時間をかけて少しずつデータを移行したいシナリオもあります。AWSのデータ転送にかかる初期費用を避けたい場合もあるでしょう。あるいは、アクセスされることのないレガシーデータがあり、必要なものだけを移行したいかもしれません。
本日、Sippyのオープンベータを発表します。Sippyは、大量のデータを移行する際に一般的に発生する不要なクラウドエグレス料金を支払うことなく、リクエストに応じてS3(他のクラウドプロバイダーも近日サポート予定!)からR2へデータをコピーする段階的移行サービスです。ベンダーロックインに対処するだけでなく、Sippyはストレスと時間のかかる移行を過去のものにします。アプリのS3エンドポイントを置き換えるか、ドメインを新しいR2バケットにアタッチするだけで、データのコピーが開始されます。
その仕組みは?
Sippyは、R2バケットに直接組み込まれた段階的移行サービスです。移行特有のエグレス料金は、既にエグレス料金を支払っているアプリのフロー内のリクエストを活用し、同時にオブジェクトをR2にコピーすることで削減されます。その仕組みは以下の通りです。
Workers、S3 API、またはパブリックバケットからオブジェクトがリクエストされた場合、それが見つかればお客様のR2バケットから提供されます。
オブジェクトがR2に見つからない場合は、同時にS3バケットから返され、R2にコピーされます。
注意:大きなオブジェクトの中には、コピーに複数のリクエストを要するものがあります。
つまり、オブジェクトがコピーされた後、後続のリクエストはR2から提供され、すぐにエグレス料金の節約を開始できます。
S3からR2への段階的データ移行開始
R2バケットを作成
段階的移行を始めるには、まずR2バケットを作成する必要があります。Cloudflareダッシュボードから新しいR2バケットを以下の方法で作成します。
Cloudflareダッシュボードにログインし、R2を選択します。
[バケットの作成]を選択します。
バケットに名前を付け、バケットの作成を選択します。
R2バケットの他の作成方法については、バケットの作成に関するドキュメントを参照してください。
R2バケットでSippyを有効化
次に、作成したR2バケット用にSippyを有効にします。ベータ期間中は、APIを使用してこれを行うことができます。R2バケットでcURLを使用してSippyを有効にする方法の例です。
開始するための詳細についてはドキュメントを参照してください。有効化すると、R2バケットにまだデータが存在しない場合、バケットへのリクエストはS3からデータをコピーし始めるようになります。
curl -X PUT https://api.cloudflare.com/client/v4/accounts/{account_id}/r2/buckets/{bucket_name}/sippy \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"provider": "AWS", "bucket": "<AWS_BUCKET_NAME>", "zone": "<AWS_REGION>","key_id": "<AWS_ACCESS_KEY_ID>", "access_key":"<AWS_SECRET_ACCESS_KEY>", "r2_key_id": "<R2_ACCESS_KEY_ID>", "r2_access_key": "<R2_SECRET_ACCESS_KEY>"}'
Super Slurperで移行を終了
段階的移行は好きなだけ実行できますが、最終的にはR2への移行を完了させたいと思うかもしれません。そのためには、SippyをSuper Slurperと組み合わせることで、まだアクセスされていない残りのデータを簡単にR2に移行することができます。
今後の展開は?
オープンベータにわくわくしていますが、まだスタート地点に立ったばかりです。次に、Cloudflareのダッシュボードから段階的移行を設定できるようにし、移行の進捗状況や、これまでにコピーされたオブジェクトのエグレス料金を支払わなくて済むことで節約できている金額を表示する分析情報を完備しました。
R2への段階的なデータ移行をお考えの方で、次に当社が何を構築すべきかについてご質問やご意見がある方は、ぜひDiscordコミュニティにご参加ください!