03-5211-7750 平日|09:30~18:00

【R2へのデータ移行】クラウドストレージ(S3 etc)からの移行ツールを動作検証([Super Slurper]と[Sippy(beta)])

検討に役立つお役立ち資料を無料でご利用いただけます

お役立ち資料をダウンロードFREE

はじめに

2024年になってからGoogle Cloudや、AWS、Azureにて他社のクラウドへ移行する際にはインターネットへのデータ転送料金を無料にするとの発表がありました。

Cloudflare R2には他社のクラウドストレージのデータ移行に使用できるツールがあります。
今回は、[Super Slurper]と[Sippy(beta)]の動作検証をしてみました。

[Super Slurper]による移行 はこちらから
[Sippy(beta)]による移行 はこちらから

[Super Slurper]による移行

概要


1つめは「Super Slurper」になります。

Cloudflare公式URL:https://developers.cloudflare.com/r2/data-migration/super-slurper/

ドキュメント抜粋↓
他のクラウド プロバイダーから選択したR2バケットにオブジェクトを迅速かつ簡単にコピーできます。



対象クラウドストレージ


サポートされているソースバケットプロバイダは下記です。
AWS S3
Cloudflare R2
Google Cloud Storage (GCS)(beta)

使用に関しての注意点


・バケットのオブジェクトのサイズが50GB以下であること
 ※50GB以上のオブジェクトは処理がスキップされます。
  その場合は手動でコピーが必要です。

・Amazon S3の場合、移行するバケットがアーカイブ以外のストレージ クラスを
 使用して保存されたオブジェクトと、アーカイブストレージクラスを使用して
 保存されたオブジェクトで主に構成されている場合であること
 ※それ以外のオブジェクトは処理がスキップされます。
  その場合は手動でコピーが必要です。

アーカイブ:https://aws.amazon.com/jp/s3/storage-classes/#Archive

具体的例:
1: S3 Glacierを使用して保存されたファイル (Glacier Instant Retrieval は含まれません) はスキップされ、
 移行ログに記録されます。

2: S3 Intelligent Tiering を使用して保存され、Deep Archive 層に配置されたファイルはスキップされ、
 移行ログに記録されます。

アーカイブ系のストレージを使用していると手動でのコピー対応が必要になるので、使用する際には事前にストレージの確認をすることを忘れないで下さい。

[Super Slurper]による移行ー検証

検証用AWS S3バケット作成


検証用のAWS S3を作成します。

バケット名:[ test-super-slurper-s3-bucket ]

検証用S3バケットファイル構成


作成したバケットに検証用のファイルを下記のように配置しました。


Amazon S3 認証情報を作成


・IAM Policy作成

下記JSON内容でIAM Policyを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::test-super-slurper-s3-bucket",
"arn:aws:s3:::test-super-slurper-s3-bucket/*"
]
}
]
}

・IAM USER作成

新規でUSERを作成して、上記で作成したIAM Policyを紐つけます。

・Access key ID、Secret access key作成

上記で作成したUSERにて、アクセスキーを作成して保存しておきます。

R2バケット作成


検証用のCloudflare R2を作成します。

バケット名:[ test-super-slurper-r2-bucket ]

R2 API TOKEN作成


下記の内容で作成します。
TTLは検証用なので1週間で作成しています。


R2へのデータ移行


Cloudflareダッシュボードから、[R2] > [データ移行]> [ファイルを移行する]を選択


移行元のAWS S3の情報を入力します。

バケット名:作成したS3のバケット名
アクセスキーID:AWSで作成したもの
アクセスキー:AWSで作成したもの


移行先のCloudflare R2の情報を入力します。

バケット名:作成したR2のバケット名
アクセスキーID:Cloudflare R2で作成したもの
アクセスキー:Cloudflare R2で作成したもの


入力した内容の確認画面が表示されます。

「ファイルを移行する」ボタンを押すと移行が開始されます。


データ移行中のジョブが完了しないと、他のデータ移行はできないようです。


特にエラーもなく完了しました。


移行ログを確認したところ、S3バケットの合計サイズが10GB強だったのですが、16分くらいで移行が完了してました。

・移行ログ
[{"logType":"migrationComplete","msg":"the migration has been completed","createdAt":"2024-03-16T15:48:12.215208Z"},{"logType":"migrationStart","msg":"the migration started","createdAt":"2024-03-16T15:32:38.936686Z"}]

一度R2バケットのオブジェクトをすべて削除してから再度実行したところ今度は3分以内で終了しました。このパターンはあまりやることはないとは思いますが、一度移行したものは一定期間キャッシュみたいなものが残るのかもしれません。
・移行ログ
[{"logType":"migrationComplete","msg":"the migration has been completed","createdAt":"2024-03-17T01:09:47.545206Z"},{"logType":"migrationStart","msg":"the migration started","createdAt":"2024-03-17T01:07:33.766817Z"}]

簡単にS3のデータ移行が出来ました。
S3のデータをR2に一括で移行したい場合にはおすすめの機能です。

注意事項(Etag)


Super Slurperを使用してオブジェクトが移行される場合、ETagが等しいことは保証されません。

との記載があるので、もしS3からR2へ移行した後もEtagが一致しなければいけない条件がある場合はSuper Slurperの使用は避けたほうが良いです。

[Sippy(beta)]による移行

概要


2つめは[Sippy(beta)]です。
Cloudflare公式URL:https://developers.cloudflare.com/r2/data-migration/sippy/

ドキュメント抜粋↓
データの要求に応じて他のクラウドプロバイダーからR2にデータをコピーできるデータ移行サービスです。
オブジェクトがリクエストされると、見つかった場合は R2 バケットから提供されます。
オブジェクトが R2 で見つからない場合、オブジェクトはソース ストレージ バケットから返され、同時に R2 にコピーされます。
put や delete を含む他のすべての操作は、引き続き通常どおりに動作します。

※この機能は現在ベータ版です。ベータ版の間は実稼働トラフィックに Sippy を使用することはお勧めしません。

まだbeta版なので本番での使用は推奨できないことに注意が必要です。



対象クラウドストレージ


サポートされているソースバケットプロバイダは下記です。
AWS S3
Google Cloud Storage

使用に適している状況


・データ移行に時間を費やすことなく、頻繁にアクセスされるオブジェクトをR2から提供したい場合。
・データが頻繁に変更されるため、ダウンタイムを回避しながら移行を実行したい場合。
※Sippyはリクエストされたデータのみ移行します。全データを移行したい場合にはsuper slurperを使用します。

[Sippy(beta)]による移行ー検証

今回はS3からデータを移行する検証をします。

検証用AWS S3バケット作成


検証用のAWS S3を作成します。

バケット名:[ test-sippy-s3-bucket ]

検証用S3バケットファイル構成


作成したバケットに検証用のファイルを下記のように配置しました。


Amazon S3 認証情報を作成


・IAM Policy作成

下記JSON内容でIAM Policyを作成します。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::test-super-slurper-s3-bucket",
"arn:aws:s3:::test-super-slurper-s3-bucket/*"
]
}
]
}

・IAM USER作成

新規でUSERを作成して、上記で作成したIAM Policyを紐つけます。

・Access key ID、Secret access key作成

上記で作成したUSERにて、アクセスキーを作成して保存しておきます。

バケット公開設定


インターネットからS3のコンテンツにアクセスできるように、アクセス許可設定を行います。

R2バケット作成


検証用のCloudflare R2を作成します。

バケット名:[ test-sippy-r2-bucket ]

パブリック アクセス設定


インターネットからR2のコンテンツにアクセスできるように、カスタムドメイン設定を行います。
Cloudflareがpartial setupの場合は、権威DNSにてCNAMEの設定もしておきます。
※設定したFQDNがdigコマンドなどでCloudflareのIPが返ってくるようになるまで待ちます。

R2 API TOKEN作成


下記の内容で作成します。
TTLは検証用なので1週間で作成しています。


Sippy設定


Cloudflareダッシュボードから、[R2] > [対象のバケット] > [設定] > [インクリメンタル マイグレーション] > [有効にする]を選択


移行元のAWS S3の情報を入力します。

プロパイダ:Amazon Web Services S3
リージョン:S3バケットのリージョン
バケット名:作成したS3のバケット名
アクセスキーID:AWSで作成したもの
アクセスキー:AWSで作成したもの



有効にすると下記の表示に変わります。



[Sippy(beta)]による移行の実動作確認


下準備が完了しましたので動作を確認してみましょう。
現時点ではR2バケット内は空状態です。


下記コマンドを実行してR2の[/human/001.png]にアクセスします。
$ curl -v https://[R2のFQDN]/human/001.png -o /dev/null


< HTTP/2 200


HTTP STATUSで200が返ってきました。
R2バケットを確認してみます。


R2にオブジェクトがコピーされたことが確認できました。
複数オブジェクトでも問題ないか下記htmlを作成してブラウザからアクセスしました。

<html>
<head><title>cloudstorage</title></head>
<body>
<h3>cloudstorage</h3>
<img src="https://[R2のFQDN]/human/001.png">

<img src="https://[R2のFQDN]/human/010.png">
<img src="https://[R2のFQDN]/logo/001.png">

<img src="https://[R2のFQDN]/logo/010.png">
<img src="https://[R2のFQDN]/seo/001.jpg">

<img src="https://[R2のFQDN]/seo/010.jpg">

</body>
</html>

R2バケットを確認してみます。




問題なくアクセスした全てのオブジェクトがコピーされたことが確認できました。

Sippyを設定する際に、「大きなオブジェクトの移行には複数のリクエストが必要になる場合があります。」とのことだったのでmp4の動画ファイルでコピーがどうなるか確認します。

先程のhtmlに下記を追加します。
<video controls src="https://[R2のFQDN]/mp4/001.mp4"></video>
<video controls src="https://[R2のFQDN]/mp4/002.mp4"></video>
<video controls src="https://[R2のFQDN]/mp4/003.mp4"></video>
<video controls src="https://[R2のFQDN]/mp4/004.mp4"></video>
<video controls src="https://[R2のFQDN]/mp4/005.mp4"></video>

ブラウザからhtmlに1回アクセスしてR2バケットを確認します。


先程の画像系と比べるとコピーされるのに時間がかかりましたが、
5つとも10秒以内でファイルがコピーされたことを確認しました。
※1ファイル約356MB

もっと大きなファイルサイズになると何回かアクセスが必要になるかと思いますが、今回のファイルサイズくらいですと一回のアクセスで問題なくコピーが出来ました。

データ移行する際には一度に全部のデータを別ストレージにコピーすることが多いと思いますが、
Sippyですと必要なファイルだけをコピーするという面白い機能だと思います。

注意事項(Etag)


Sippyを使用してオブジェクトが移行される場合、ETagが等しいことは保証されません。

Super Slurperと同じく、もしS3からR2へ移行した後もEtagが一致しなければいけない条件がある場合はSippyの使用は避けたほうが良いです。

最後に

今回は2つのCloudflare R2への移行ツールの検証をしてみました。

他社のクラウドが、データを移行する際にはインターネットへのデータ転送料金を無料にするとのことで、移行を考えるお客様もいると思いますのでこちらの情報を参考にして頂ければ嬉しいです。

そしてCloudflareなら上記以外でも、

 ・パフォーマンスの向上
 ・サイトの信頼性の向上
 ・セキュリティの向上

が、一つのサービスで実現できますので非常におすすめです。

Cloudflareに、アクセリアの運用サポートをプラスしたCDNサービスを提供しています

アクセリア自社CDNの開発と運用は、20年以上にわたります。それらの経験とノウハウを駆使したプロフェッショナルサポートをパッケージしたサービスが、[Solution CDN]です。
移行支援によるスムーズな導入とともに、お客様の運用負担を最小限に​とどめながら、WEBサイトのパフォーマンスとセキュリティを最大限に高めます。運用サポートはフルアウトソーシングからミニマムサポートまで、ご要望に合わせてご提供します。

Cloudflare(クラウドフレア)の導入や運用について、またそれ以外のことでもなにか気になることがございましたらお気軽にご相談下さい。
Solution CDNサービスバナー

杉木 俊文

アクセリア株式会社 サービス事業本部プラットフォーム部 所属
Contact usお問い合わせ

サービスにご興味をお持ちの方は
お気軽にお問い合わせください。

Webからお問い合わせ

お問い合わせ

お電話からお問い合わせ

03-5211-7750

平日09:30 〜 18:00

Download資料ダウンロード

製品紹介やお役立ち資料を無料でご活用いただけます。

Magazineメルマガ登録

最新の製品情報などタイムリーな情報を配信しています。

Free Service

PageSpeed Insights シミュレータ

CDNによるコンテンツの最適化を行った場合のPageSpeed Insightsのスコアをシミュレートしてレポートします。