新規投稿のお知らせを受信されたい方は、サブスクリプションをご登録ください:

R2の一般提供を開始しました

2022/09/21

4分で読了
R2 is now Generally Available

R2は開発者にオブジェクトストレージを提供しますが、エグレス料金は発生しません。R2以前、私たちがクラウドプロバイダーから言われていたことは、利用者が当社に保存したデータを実際に使用するたびに、データ転送料金を要求するというものでした。決して読み取らないことを前提にデータを保存する人などいるでしょうか?そんな人はいないでしょう。とはいえ、データを読み取るたびに「エグレス料金」は適用されます。R2では、開発者はデータに自由にアクセスできるようになり、アプリケーション開発者を長く縛ってきたエコシステムのロックインを解消します。

2022年5月、当社はR2のオープンベータ版をリリースしました。わずか4か月の短い期間で、12,000を超える開発者(急速に増加中)がR2を使い始めたことに圧倒されています。ポッドキャストアプリケーションからビデオプラットフォーム、Eコマースウェブサイトまで、幅広いユースケースを持った開発者、そしてVecteezyのような6桁(米ドル)ものエグレス料金を費やしているユーザーも当社を訪れました。私たちは学習を急速に進め、素晴らしいフィードバックを得て、本日R2の一般公開を発表できる運びとなったことを嬉しく思います。

当社はお客様に対して、自分たちが賭けることのできなかった技術に賭けてくださいとは言いません。オープンベータ期間中は、自社製品をR2に移行するために時間を費やしました。多数の顧客に本番環境でサービスを提供していることを誇りにしているCloudflare Imagesはその中の一例であり、現在R2で稼働しています。

R2に期待できることは?

S3との互換性

R2は開発者に、オブジェクトストレージのための使い慣れたインターフェースであるS3 APIを提供します。S3との互換性により、アプリケーションの移行が容易で、R2が提供する機能をすぐに利用することができます。

JavaScriptでの基本的なデータ操作を見てみましょう。これをお客様自身で試すには、アクセスキーを生成する必要があります。

// まず、通常通りにバインドをインポートします
import {
  S3Client,
  ListBucketsCommand,
} from "@aws-sdk/client-s3";

// 次に、新しいクライアントを作成します。R2にはS3互換性のためのリージョンが必要ですが、サポートされているのは「auto」のみであることに注意が必要です
const S3 = new S3Client({
  region: "auto",
  endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: ACCESS_KEY_ID, //  fill in your own
    secretAccessKey: SECRET_ACCESS_KEY, // fill in your own
  },
});

// これで、他のS3互換のオブジェクトストレージと同じように、クライアントを使用して関連付けられたバケットを一覧表示できるようになりました
console.log(
  await S3.send(
    new ListBucketsCommand('')
  )
);

S3 APIは、GoJavaPHPRubyなどを例にしても、言語を問わずに親和性があります。

リージョン:自動

私たちは、開発者が時間をかけて水晶玉を覗き、アプリケーションのトラフィックがどこから来るかを予言するような世界には住みたくありません。アプリケーション開発の最初のステップとしてリージョンを選択することにより、最初のユーザーがアクセスしてくるずっと前に最適化の判断が行われ、実施されます。

S3互換ではリージョンを指定する必要がありますが、私たちがサポートするリージョンは「auto」のみです。現在R2は、バケットの場所をバケット作成リクエストに最も近い利用可能なリージョンを自動的に選択します。仮に私がオースティンの自宅からバケットを作成した場合、そのバケットはオースティンに最も近い利用可能なR2リージョンに置かれることになります。  

将来的に、R2はデータアクセスのパターンを使用してデータの保存場所を自動的に最適化し、最適なユーザーエクスペリエンスを実現する予定です。

Cloudflare Workersの統合

Workersプラットホームは、Cloudflareのネットワーク全体で強力な計算能力を開発者に提供します。Workersにデプロイすると、コードはCloudflareの世界275以上の拠点に自動的にデプロイされます。WorkersとR2の組み合わせによって、開発者はパフォーマンスのオーバーヘッドなしで、データに関するカスタムロジックを追加することができます。Workersはコンテナではなく独立した環境で構築されるため、長時間のコールドスタートに悩まされることはありません。

R2バケット用の簡単なREST APIを作成してみましょう。まず、バケットを作成し、次にR2のバインドをワーカーに追加します。

export default {
  async fetch(request, env) {
    const url = new URL(request.url);
    const key = url.pathname.slice(1); // URLパスからキーを取得します

    switch (request.method) {
      // 書き込みの場合、リクエスト本文をキャプチャし、関連付けられたキーでバケットに書き込みます
      case 'PUT':
        await env.MY_BUCKET.put(key, request.body);
        return new Response(`Put ${key} successfully!`);

      // 読み取りの場合は、キーを使用して参照を実行します
      case 'GET':
        const object = await env.MY_BUCKET.get(key);

        // 指定されたキーが見つからない場合、404エラーを返します
        if (object === null) {
          return new Response('Object Not Found', { status: 404 });
        }

        const headers = new Headers();
        object.writeHttpMetadata(headers);
        headers.set('etag', object.httpEtag);

        return new Response(object.body, {
          headers,
        });
    }
  },
};

このWorkers APIを使用すると、R2要求のホットパスにあらゆる種類の便利なロジックを追加することができます。

Presigned URL(署名付きURL)

R2内の特定のオブジェクトに対する権限を、ユーザーに煩雑な操作をさせることなく付与したい場合があります。署名付きURLを使用して、あらゆるオブジェクトと操作の一意の組み合わせに対するお客様の権限をユーザーに委任することができます。バケット全体へのアクセスを許可することなく、ユーザーがファイルをアップロードまたは共有できるように、署名付きURLを作成します。

import {
  S3Client,
  PutObjectCommand
} from "@aws-sdk/client-s3";

import { getSignedUrl } from "@aws-sdk/s3-request-presigner";

const S3 = new S3Client({
  region: "auto",
  endpoint: `https://${ACCOUNT_ID}.r2.cloudflarestorage.com`,
  credentials: {
    accessKeyId: ACCESS_KEY_ID,
    secretAccessKey: SECRET_ACCESS_KEY,
  },
});

// getSignedUrlを使用すると、エンドユーザーが自分の犬の写真をアップロードできる、1時間の有効期限付きのカスタムURLを作成することができます
console.log(
  await getSignedUrl(S3, new PutObjectCommand({Bucket: 'my-bucket-name', Key: 'dog.png'}), { expiresIn: 3600 })
)

署名付きURLを使用すると、開発者はエンドユーザーが安全にR2に直接アクセスできるアプリケーションを簡単に構築することができるようになります。

公開バケット

R2バケットの公開アクセスを有効にすると、そのバケットを認証されていないリクエストに対しても公開することができます。これだけでは用途が限られますが、これらのバケットがCloudflareのお客様のアカウントのドメインにリンクされている場合、R2のデータの上でAccess、Cache、ボット管理などのCloudflareの他の機能をシームレスに有効にすることが可能です。

結論として、公開バケットは、ドメイン指向のCloudflare機能とR2のバケットとの間にあるギャップを埋めるのに役立ちます。

透明性のある価格設定

R2がエグレスに課金することはありません。価格モデルは、ストレージ容量、クラスA操作(書き込み、リスト)、クラスB操作(読み取り)の3つの要因のみで決定されます。

  • ストレージ 月額 $0.015 / GB
  • クラスA操作 $4.50/ 100万回。
  • クラスB操作 $0.36/ 100万回

ただし、R2への支払いを開始する前に、まったくコストをかけずに立ち上げて運用することができます。含まれる使用方法は次のとおりです:

  • データ保存 10GB / 月
  • クラスA操作 100万回 / 月
  • クラスB操作 1000万回 / 月

今後の展開は?

R2の一般リリースは、オブジェクトストレージの旅の始まりに過ぎません。今後の当社の構築計画をお知らせします。

オブジェクトのライフサイクル

将来的には、R2によって開発者はオブジェクトにポリシーを設定できるようになります。たとえば、最後にアクセスされてから60日後にオブジェクトを削除するポリシーを設定します。オブジェクトのライフサイクルを使用すると、オブジェクト管理をオブジェクトストアにまで引き下げます。

法域の制限

リージョンを明示的にサポートする計画はありませんが、多くのコンプライアンスのユースケースにおいて、データの局所性が重要であることは認識しています。法域の制限により、開発者が「EU」のような法域を設定することで、データが法域を離れることを防ぐことができます。

ダウンタイムのないライブマイグレーション

大規模なデータセットの場合、データの移動に時間がかかるため、移行はライブで継続的に行われます。キャッシュリザーブは、ボタン1つでお客様のアセットをマネージドR2インスタンスに素早く移行してエグレスコストを削減する簡単な方法です。今後、既存のS3オブジェクトストレージバケットをすべてR2に移行できるように、このメカニズムを拡張する予定です。
今すぐR2にサインアップして、使用を開始してください。Cloudflareを基盤とする成長を続ける開発者コミュニティに参加してください。ご意見やご質問がございましたらこちらからDiscord serverをご覧ください。あなたが構築なさるものを見ることを楽しみにしています。

Cloudflare TVで視聴する

Cloudflareは企業ネットワーク全体を保護し、お客様がインターネット規模のアプリケーションを効率的に構築し、あらゆるWebサイトやインターネットアプリケーションを高速化し、DDoS攻撃を退けハッカーの侵入を防ぎゼロトラスト導入を推進できるようお手伝いしています。

ご使用のデバイスから1.1.1.1 にアクセスし、インターネットを高速化し安全性を高めるCloudflareの無料アプリをご利用ください。

より良いインターネットの構築支援という当社の使命について、詳しくはこちらをご覧ください。新たなキャリアの方向性を模索中の方は、当社の求人情報をご覧ください。
GA Week (JP)General Availability (JP)Cloudflare Workers (JP)R2 Storage日本語

Xでフォロー

Aly Cabral|@Aly_Cabral
Cloudflare|@cloudflare

関連ブログ投稿

2022年9月22日 1:00

インド、日本、オーストラリアでリージョナルサービスを開始

Cloudflareネットワークの中でトラフィックの検査を必要とするWAFやボット管理などの高度な機能を実行できる場所を正確に制御できるようにすることで、より多くのお客様がCloudflareを使用できるように、このようなアジア太平洋地域の国々に当社の対象範囲を拡大できることを嬉しく思います...

2022年9月20日 13:30

Cloudflare Area 1 - 最高のメールセキュリティはどのように改善を続けているか

Cloudflareは2020年にArea 1の使用を開始し、2022年に同社の買収の道を進めました。最も印象的だったのは、Area 1をデプロイした際、サイバー攻撃の90%以上を占めるフィッシングの問題が一夜にして解決されたことです。しかし、当社のビジョンはフィッシング攻撃を防ぐことよりも遥かに大きなところにあります...

2022年9月20日 13:00

Cloudflare CASBを使用して、SaaSアプリケーション内のセキュリティの問題を検出する

サードパーティ製SaaSアプリケーションの接続、スキャンにより、ファイルリーク、不適切な設定、シャドーITをわずか数クリックで確認できます。Cloudflare CASBが一般にご利用いただけるようになりました...