はじめに
Cloudflare R2 はオブジェクトストレージのクラウドサービスです
ざっくり言うと、ファイルをクラウドに保管できます
10 GB までは無料で利用可能です
そして嬉しいのが Amazon S3 と互換性があると言うこと
AWS CLI はもちろん、 Cyberduck 等の S3 対応ツールであれば R2 でも同じように使えます
本記事では、 Cloudflare R2 の使い方を紹介します
Cloudflare Pages や CLoudflare Workers の場合、クレジットカード登録なしで使用できますが、 R2 はクレジットカードが必要です
Cloudflare Pages についてはこちら
Cloudflare Workers についてはこちら
R2 の利用開始
Cloudflare アカウントを持っていない場合、まずはアカウントを作成してください
アカウント作成後、ホーム画面の左メニュー「R2」をクリックします
R2 を初めて使う場合、クレジットカードの登録を求められます
必要な情報を登録してください
クレジットカード登録後、以下のような画面が表示されます
ブラウザからの操作
ブラウザからのバケット作成
まずはバケット(=バケツ=データの入れ物)を作ります
青い「バケットを作成する」ボタンをクリックしてください
バケット名を適当な名前(他と重複しない名前)に変更し、「バケットを作成する」をクリックします
空のバケットが作成されました
ブラウザからのオブジェクト操作
「ドラッグアンドドロップするか...」と書かれているエリアにファイルをドロップすると、アップロードできます
アップロードしたファイルが一覧表示され、個別にダウンロードや削除が可能です
AWS CLI からの操作
Cloudflare R2 は Amazon S3 互換なので、 AWS CLI からも操作可能です
AWS CLI 用の認証情報作成
AWS CLI から操作するため、認証情報(「アクセスキー ID」と「シークレットアクセスキー」)を作成します
R2 の概要ページ右メニューの「R2 API トークンの管理」をクリックしてください
API トークンの管理画面が表示されるので、「API トークンを作成する」をクリックします
適当なトークン名を入力し、権限は「管理者読み取りと書き込み」を選択します
「API トークンを作成する」をクリックしてください
R2 にアクセス可能な API トークンが作成されました
下段に表示されている「アクセスキー ID」と「シークレットアクセスキー」、エンドポイントの URL (デフォルト)を使うことになります
AWS CLI への認証情報の登録
以下のコマンドを実行し、取得した認証情報を AWS CLI に登録します
aws configure --profile <任意のプロファイル名>
プロファイル名を環境変数に設定しておきます
以下、 macOS 、 Linux の場合のコマンドになっています
export R2_PROFILE='<設定したプロファイル名>'
エンドポイントの URL を環境変数に設定しておきます
export R2_ENDPOINT='<エンドポイントの URL>'
AWS CLI からのバケット作成
バケット名を環境変数に設定しておきます
export R2_BUCKET='<バケット名>'
以下のコマンドを実行して空のバケットを作成します
aws s3 mb "s3://${R2_BUCKET}" \
--region auto \
--profile $R2_PROFILE \
--endpoint-url $R2_ENDPOINT
結果が make_bucket: <バケット名>
と返ってきます
ブラウザから R2 の概要ページを読み込むと、新しいバケットが作成できていることが分かります
AWS CLI からのファイルアップロード
適当なファイルを作成します
echo 'hello' > hello.txt
ファイルを R2 にアップロードします
aws s3 cp ./hello.txt "s3://${R2_BUCKET}/" \
--profile $R2_PROFILE \
--endpoint-url $R2_ENDPOINT
結果が upload: ./hello.txt to s3://<バケット名>/hello.txt
と返ってきます
ブラウザから当該バケットの内容を確認すると、 hello.txt が追加されています
AWS CLI からのファイル一覧取得
以下のコマンドで R2 のファイル一覧が取得できます
aws s3 ls "s3://${R2_BUCKET}/" \
--profile $R2_PROFILE \
--endpoint-url $R2_ENDPOINT
以下のように結果が返ってきます
2024-02-08 09:19:30 6 hello.txt
ダウンロードや削除についても AWS CLI と同様に操作可能です
S3 API との互換性について
以下のページに S3 API との互換性について詳細に説明されています
R2 API で実装していないものについては操作ができません
Cyberduck からの操作
AWS S3 の GUI ツールとしてよく使っている Cyberduck でも R2 に接続可能です
新しい接続を作る際、以下のように入力することで R2 バケットに接続できます
- 「Amazon S3」を選択
- 「サーバ」にエンドポイントのホスト名を入力
- 「アクセスキーID」と「シークレットアクセスキー」を入力
接続すると、 GUI からバケットの一覧、バケットの内容確認、ファイル操作ができます
まとめ
Cloudflare R2 にバケットを作成し、ファイル操作することができました
AWS CLI や Cyberduck から S3 と同じように操作でき、 AWS ユーザーなら違和感なくすぐ使い始められます
使い方いよっては S3 よりも安価に使えるため、マルチクラウドも検討してみましょう