【R2へのデータ移行】クラウドストレージ(S3 etc)からの移行ツールを動作検証([Super Slurper]と[Sippy(beta)])
はじめに
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)]による移行ー検証
検証用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の使用は避けたほうが良いです。
最後に
他社のクラウドが、データを移行する際にはインターネットへのデータ転送料金を無料にするとのことで、移行を考えるお客様もいると思いますのでこちらの情報を参考にして頂ければ嬉しいです。
そしてCloudflareなら上記以外でも、
・パフォーマンスの向上
・サイトの信頼性の向上
・セキュリティの向上
が、一つのサービスで実現できますので非常におすすめです。
Cloudflareに、アクセリアの運用サポートをプラスしたCDNサービスを提供しています
移行支援によるスムーズな導入とともに、お客様の運用負担を最小限にとどめながら、WEBサイトのパフォーマンスとセキュリティを最大限に高めます。運用サポートはフルアウトソーシングからミニマムサポートまで、ご要望に合わせてご提供します。
Cloudflare(クラウドフレア)の導入や運用について、またそれ以外のことでもなにか気になることがございましたらお気軽にご相談下さい。
サービスにご興味をお持ちの方は
お気軽にお問い合わせください。
Webからお問い合わせ
お問い合わせお電話からお問い合わせ
平日09:30 〜 18:00
Free Service