Cloudflare R2(beta)を動作検証ーS3との比較やGUIの使い勝手も確認

R2とは?
Cloudflare(クラウドフレア)が提供する、クラウドオブジェクトストレージサービスのことです。
いわゆる[AWS S3]のCloudflare版になり、S3 APIと互換性がありますのでS3を既にお使いの方なら簡単に導入することができます。
S3との最大の違いは、R2はイグレス料金が発生しないところです。
つまりバケットからインターネットへのトラフィック料金が発生しないため、S3で静的コンテンツの配信などをしている場合は、R2を利用することにより費用を安くすることができます。
現在R2はベータ版になりますが、動作確認をしてみましたのでR2の利用を検討している方の参考になれば幸いです。
いわゆる[AWS S3]のCloudflare版になり、S3 APIと互換性がありますのでS3を既にお使いの方なら簡単に導入することができます。
S3との最大の違いは、R2はイグレス料金が発生しないところです。
つまりバケットからインターネットへのトラフィック料金が発生しないため、S3で静的コンテンツの配信などをしている場合は、R2を利用することにより費用を安くすることができます。
現在R2はベータ版になりますが、動作確認をしてみましたのでR2の利用を検討している方の参考になれば幸いです。
価格比較(R2とS3)
■R2の料金

■S3の料金

※S3の場合、上記にイグレス料金が追加でかかります。
[S3標準]を利用して配信している場合は、R2にすることによって価格を抑えられる可能性があります。
ただし現在は、R2でコンテンツをインターネットに公開する場合にはCloudflare Workersを使用しないと公開ができませんので、R2 + Workersの料金がかかることに注意が必要です。

■S3の料金

※S3の場合、上記にイグレス料金が追加でかかります。
[S3標準]を利用して配信している場合は、R2にすることによって価格を抑えられる可能性があります。
ただし現在は、R2でコンテンツをインターネットに公開する場合にはCloudflare Workersを使用しないと公開ができませんので、R2 + Workersの料金がかかることに注意が必要です。
R2 GUIの紹介
■R2オブジェクト画面
CloudflareのGUIから、現在のバケットの中身は下記のように確認することができます。

■R2メトリクス画面
現在使用しているバケットの容量や、クラスA操作、クラスB操作がどれだけ実行されたのかも画面から簡単に確認することが可能です。

CloudflareのGUIから、現在のバケットの中身は下記のように確認することができます。

■R2メトリクス画面
現在使用しているバケットの容量や、クラスA操作、クラスB操作がどれだけ実行されたのかも画面から簡単に確認することが可能です。

動作検証
■公式ドキュメント
https://developers.cloudflare.com/r2
■ wranglerコマンド操作
wranglerコマンドを使用することでR2の情報を操作することができます。
・R2バケットリスト取得コマンド例
-----
$ wrangler r2 bucket list
[
{
"name": "accelia-r2-bucket01",
"creation_date": "2022-05-13T02:40:45.552Z"
},
{
"name": "accelia-r2-bucket02",
"creation_date": "2022-05-13T01:01:37.197Z"
}
]
-----
・R2バケット作成コマンド例
-----
$ wrangler r2 bucket create accelia-r2-bucket03
Creating bucket accelia-r2-bucket03.
Created bucket accelia-r2-bucket03.
-----
■オブジェクトのアップロード
下記の3パターンでアップロードが可能です。
・CloudflareのGUIからドラッグ&ドロップ
・s3APIコマンドを使用してアップロード
・curlのPUTでコンテンツをアップロード(Workersで設定が必要)
■インターネットへの公開
R2バケットは、デフォルトでプライベートバケットになっています。
Workersを使用してR2バケットをバインドすることで、インターネットへ画像や動画を公開することができます
参考URL:https://developers.cloudflare.com/r2/get-started/#5-access-your-r2-bucket-from-your-worker
■限定公開、Basic認証
Workersを使用することでコンテンツの限定公開、Basic認証機能を使用することができます。
・限定公開
特定の「header: key」を指定することでコンテンツの公開を限定的にすることが可能
※wrangler secretを使用してkeyの値を隠すことも可能
・Basic認証
WorkersでBasic認証を設定することでコンテンツの公開を限定的にすることが可能
■制限
操作にリミットが設けられてますので、多くの処理を一気に実行する場合には注意が必要になります。

※1: クラスA操作
ListBuckets, PutBucket, ListObjects, PutObject, CopyObject, CompleteMultipartUpload, CreateMultipartUpload, UploadPart, and UploadPartCopy
※2: クラスB操作
HeadBucket, HeadObject, and GetObject
制限の上限を増やしたい場合は、Cloudflareアカウントチームに連絡すれば増やすことも可能ですので、その場合はご相談ください。
■S3互換性API
S3 APIコマンドを利用してR2バケットの操作をすることが可能です。
バケット一覧を取得する場合は下記のようになります。
-----
$ aws s3api list-buckets --endpoint-url https://<account id>.r2.cloudflarestorage.com
{
"Buckets": [
{
"Name": "accelia-r2-bucket01",
"CreationDate": "2022-05-13T02:40:45.552000+00:00"
},
{
"Name": "accelia-r2-bucket02",
"CreationDate": "2022-05-13T01:01:37.197000+00:00"
}
],
"Owner": {
"DisplayName": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
-----
ただし、まだ実装されていない機能もあり実際に使用できるかは事前に確認が必要になります。
下記に現状の対応状況がありますので参考にしてみてください。
参考URL:https://developers.cloudflare.com/r2/platform/s3-compatibility/api/
■プログラムからR2操作(SDK)
golang、ruby、phpなどのSDKが用意されており、プログラムからR2を操作する場合も対応が可能です。
■セキュリティ
R2をインターネットに公開し、もし悪意のあるユーザから攻撃があった場合でも、CloudflareのWAFがしっかり防御をしてくれます。
また、CloudflareならDDoS防御機能もついてますので、安心してサイトの運用が可能です。
https://developers.cloudflare.com/r2
■ wranglerコマンド操作
wranglerコマンドを使用することでR2の情報を操作することができます。
・R2バケットリスト取得コマンド例
-----
$ wrangler r2 bucket list
[
{
"name": "accelia-r2-bucket01",
"creation_date": "2022-05-13T02:40:45.552Z"
},
{
"name": "accelia-r2-bucket02",
"creation_date": "2022-05-13T01:01:37.197Z"
}
]
-----
・R2バケット作成コマンド例
-----
$ wrangler r2 bucket create accelia-r2-bucket03
Creating bucket accelia-r2-bucket03.
Created bucket accelia-r2-bucket03.
-----
■オブジェクトのアップロード
下記の3パターンでアップロードが可能です。
・CloudflareのGUIからドラッグ&ドロップ
・s3APIコマンドを使用してアップロード
・curlのPUTでコンテンツをアップロード(Workersで設定が必要)
■インターネットへの公開
R2バケットは、デフォルトでプライベートバケットになっています。
Workersを使用してR2バケットをバインドすることで、インターネットへ画像や動画を公開することができます
参考URL:https://developers.cloudflare.com/r2/get-started/#5-access-your-r2-bucket-from-your-worker
■限定公開、Basic認証
Workersを使用することでコンテンツの限定公開、Basic認証機能を使用することができます。
・限定公開
特定の「header: key」を指定することでコンテンツの公開を限定的にすることが可能
※wrangler secretを使用してkeyの値を隠すことも可能
・Basic認証
WorkersでBasic認証を設定することでコンテンツの公開を限定的にすることが可能
■制限
操作にリミットが設けられてますので、多くの処理を一気に実行する場合には注意が必要になります。

※1: クラスA操作
ListBuckets, PutBucket, ListObjects, PutObject, CopyObject, CompleteMultipartUpload, CreateMultipartUpload, UploadPart, and UploadPartCopy
※2: クラスB操作
HeadBucket, HeadObject, and GetObject
制限の上限を増やしたい場合は、Cloudflareアカウントチームに連絡すれば増やすことも可能ですので、その場合はご相談ください。
■S3互換性API
S3 APIコマンドを利用してR2バケットの操作をすることが可能です。
バケット一覧を取得する場合は下記のようになります。
-----
$ aws s3api list-buckets --endpoint-url https://<account id>.r2.cloudflarestorage.com
{
"Buckets": [
{
"Name": "accelia-r2-bucket01",
"CreationDate": "2022-05-13T02:40:45.552000+00:00"
},
{
"Name": "accelia-r2-bucket02",
"CreationDate": "2022-05-13T01:01:37.197000+00:00"
}
],
"Owner": {
"DisplayName": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"ID": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
-----
ただし、まだ実装されていない機能もあり実際に使用できるかは事前に確認が必要になります。
下記に現状の対応状況がありますので参考にしてみてください。
参考URL:https://developers.cloudflare.com/r2/platform/s3-compatibility/api/
■プログラムからR2操作(SDK)
golang、ruby、phpなどのSDKが用意されており、プログラムからR2を操作する場合も対応が可能です。
■セキュリティ
R2をインターネットに公開し、もし悪意のあるユーザから攻撃があった場合でも、CloudflareのWAFがしっかり防御をしてくれます。
また、CloudflareならDDoS防御機能もついてますので、安心してサイトの運用が可能です。
今後アップデートされる予定の機能
・TTLのサポート
指定した時間が経過すると、バケットからデータを自動的に削除する
・パブリックバケット
Workersを使わなくてもバケットをインターネットに公開することができる
これ以外の機能についても開発中とのことなので、今後のR2のニュースが楽しみです。
指定した時間が経過すると、バケットからデータを自動的に削除する
・パブリックバケット
Workersを使わなくてもバケットをインターネットに公開することができる
これ以外の機能についても開発中とのことなので、今後のR2のニュースが楽しみです。
最後に
今回は簡単にしか動作検証しませんでしたが、コンテンツの公開についてはWorkersありきなところや、S3にはある機能が無かったりなど、もう少し機能がほしいなというのが正直な感想です。
ただ、R2はまだベータ版で現在も開発が進められています。
今後のアップデートで、もっと素晴らしいサービスになる可能性があると思っています。
個人的にR2には期待しているので、新機能がリリースされたらすぐ検証してまたブログでご報告出来たらと考えております。
そしてCloudflareならR2以外でも、
・パフォーマンスの向上
・サイトの信頼性の向上
・セキュリティの向上
が、一つのサービスで実現できますので非常におすすめです。
ただ、R2はまだベータ版で現在も開発が進められています。
今後のアップデートで、もっと素晴らしいサービスになる可能性があると思っています。
個人的にR2には期待しているので、新機能がリリースされたらすぐ検証してまたブログでご報告出来たらと考えております。
そしてCloudflareならR2以外でも、
・パフォーマンスの向上
・サイトの信頼性の向上
・セキュリティの向上
が、一つのサービスで実現できますので非常におすすめです。
Cloudflareに、アクセリアの運用サポートをプラスしたCDNサービスを提供しています
アクセリア自社CDNの開発と運用は、20年以上にわたります。それらの経験とノウハウを駆使したプロフェッショナルサポートをパッケージしたサービスが、[Solution CDN]です。
移行支援によるスムーズな導入とともに、お客様の運用負担を最小限にとどめながら、WEBサイトのパフォーマンスとセキュリティを最大限に高めます。運用サポートはフルアウトソーシングからミニマムサポートまで、ご要望に合わせてご提供します。
Cloudflare(クラウドフレア)の導入や運用について、またそれ以外のことでもなにか気になることがございましたらお気軽にご相談下さい。

◆Solution CDNについて
◆資料DL
■関連コラム
・Cloudflareの「待合室(Waiting Room)」とは?
・Cloudflare Imagesを利用した画像変換の手順を解説【画像アップロードで完了】
・Cloudflareが提供する高精度のボット対策ー機能や設定方法をご紹介
移行支援によるスムーズな導入とともに、お客様の運用負担を最小限にとどめながら、WEBサイトのパフォーマンスとセキュリティを最大限に高めます。運用サポートはフルアウトソーシングからミニマムサポートまで、ご要望に合わせてご提供します。
Cloudflare(クラウドフレア)の導入や運用について、またそれ以外のことでもなにか気になることがございましたらお気軽にご相談下さい。

◆Solution CDNについて
◆資料DL
■関連コラム
・Cloudflareの「待合室(Waiting Room)」とは?
・Cloudflare Imagesを利用した画像変換の手順を解説【画像アップロードで完了】
・Cloudflareが提供する高精度のボット対策ー機能や設定方法をご紹介
Contact usお問い合わせ
サービスにご興味をお持ちの方は
お気軽にお問い合わせください。
Webからお問い合わせ
お問い合わせお電話からお問い合わせ
03-5211-7750
平日09:30 〜 18:00
Free Service