1. Cloudflare R2 Storage là gì?
Cloudflare R2 là dịch vụ object storage do Cloudflare phát triển, được thiết kế như một giải pháp thay thế cho Amazon S3, nhưng không tính phí egress (băng thông tải dữ liệu ra).
R2 được xây dựng trên Workers và Durable Objects, giúp các developer truy cập và lưu trữ dữ liệu quy mô lớn với độ trễ thấp, bảo mật cao và chi phí cực kỳ cạnh tranh.

Điểm khác biệt chính:
Không phí egress: Tải dữ liệu ra (ra khỏi R2) hoàn toàn miễn phí.
Chi phí lưu trữ thấp
Tích hợp mượt với Cloudflare Workers: Có thể xử lý dữ liệu ngay tại edge mà không cần server trung gian.
API tương thích với S3: Dễ dàng chuyển đổi ứng dụng đang dùng S3 sang R2 mà không phải viết lại code.
Bản free cho chúng ta tới tận 10GB lưu trữ mỗi tháng, thay vì tính phí egress, họ tính dựa theo số lượng đọc (Class B Operations) và ghi (Class A Operations) mỗi tháng. Xem chi tiết tại đây

2. Kiến trúc tổng quan của R2

R2 được xây dựng trên nền tảng Cloudflare Edge Network – một trong những mạng phân phối dữ liệu lớn nhất thế giới, với hơn 300+ data centers toàn cầu.
Khi bạn lưu trữ dữ liệu lên R2, Cloudflare sẽ:
Phân bổ dữ liệu lên hệ thống lưu trữ phân tán.
Sao chép (replicate) dữ liệu giữa nhiều vùng để đảm bảo độ bền.
Cung cấp truy cập trực tiếp thông qua API tương thích với AWS S3 SDK.
Vì nằm trong cùng hệ sinh thái với Workers và Pages, R2 có thể kết hợp trực tiếp để xử lý file, resize ảnh, hoặc tạo CDN động ngay tại edge mà không cần gọi API từ bên thứ ba.
3. Cách sử dụng Cloudflare R2
3.1. Sử dụng bằng API
Cloudflare R2 cung cấp giao diện S3-compatible API, nghĩa là bạn có thể dùng bất kỳ SDK nào hỗ trợ Amazon S3 để kết nối với R2.
Ví dụ: Kết nối R2 bằng Node.js (AWS SDK v3)
Trước hết, tạo Access Key từ Cloudflare Dashboard → R2 → Manage API Tokens.
npm install @aws-sdk/client-s3
Sau đó cấu hình SDK:
import { S3Client, PutObjectCommand } from "@aws-sdk/client-s3";
const client = new S3Client({
region: "auto",
endpoint: "https://<your-account-id>.r2.cloudflarestorage.com",
credentials: {
accessKeyId: "R2_ACCESS_KEY",
secretAccessKey: "R2_SECRET_KEY"
}
});
const upload = async () => {
const command = new PutObjectCommand({
Bucket: "my-r2-bucket",
Key: "hello.txt",
Body: "Hello Cloudflare R2!"
});
await client.send(command);
console.log("File uploaded successfully!");
};
upload();
Tương tự, bạn có thể dùng GetObjectCommand, ListObjectsCommand, hoặc DeleteObjectCommand y hệt như khi làm việc với Amazon S3.
👉 Toàn bộ tài liệu hướng dẫn bạn có thể tham khảo tại Cloudflare R2
3.2. Sử dụng bằng giao diện trên dashboard
Truy cập vào dashboard của Cloudlfare và vào mục Storage & databases → R2 để tiến hành tạo bucket cũng như upload.

4. Kết hợp R2 với Cloudflare Workers
Điểm mạnh nhất của R2 là khả năng tích hợp trực tiếp với Cloudflare Workers – giúp bạn xử lý dữ liệu tại edge mà không cần backend truyền thống.
Ví dụ dưới đây minh họa cách đọc file từ R2 trong Worker:
export default {
async fetch(request, env) {
const object = await env.MY_BUCKET.get("hello.txt");
if (!object) {
return new Response("File not found!", { status: 404 });
}
return new Response(object.body);
},
};
Ở đây, env.MY_BUCKET được cấu hình trong wrangler.toml như sau:
[[r2_buckets]]
binding = "MY_BUCKET"
bucket_name = "my-r2-bucket"
Khi deploy, Worker sẽ có quyền truy cập trực tiếp vào bucket mà không cần gọi API qua mạng – giúp tốc độ đọc/ghi nhanh hơn rất nhiều.
5. So sánh Cloudflare R2 với Amazon S3
| Tiêu chí | Cloudflare R2 | Amazon S3 |
| Phí egress | Miễn phí | Tính phí (khá cao) |
| API | Tương thích S3 | Native |
| Tích hợp Edge | Có (Workers) | Không trực tiếp |
| Tốc độ truy cập | Cực nhanh tại Edge | Phụ thuộc region |
| Dễ dàng di chuyển dữ liệu | Có | Có |
| Mục tiêu chính | Giảm chi phí, tăng hiệu năng | Lưu trữ đám mây truyền thống |
R2 lý tưởng cho developer muốn tối ưu chi phí phân phối file tĩnh (ảnh, video, dữ liệu JSON…) hoặc làm backend lưu trữ cho ứng dụng chạy trên Cloudflare Workers / Pages.
6. Một số trường hợp sử dụng thực tế
Static file hosting: Lưu ảnh, video, script cho web hoặc ứng dụng di động.
Backup & archival: Lưu trữ dữ liệu lâu dài với chi phí thấp.
Serverless backend: Kết hợp với Workers để tạo REST API cho file upload/download.
AI & ML storage: Lưu dataset cho các ứng dụng AI inferencing chạy ở edge.
7. Giám sát và bảo mật
Cloudflare cung cấp các tính năng quản lý truy cập chi tiết cho R2 thông qua Access Policies và API Tokens.
Bạn có thể:
Giới hạn quyền
read/writetheo bucket hoặc theo prefix.Theo dõi log truy cập qua Cloudflare Analytics.
Dễ dàng tích hợp với Zero Trust Access để bảo vệ endpoint nội bộ.
Tóm lại
Cloudflare R2 Storage là cách giúp dev giảm chi phí, loại bỏ egress, và tăng tốc phân phối nội dung toàn cầu. Đây là giải pháp tuyệt vời để xây dựng backend serverless, hệ thống phân phối file, hoặc nền tảng dữ liệu lớn với chi phí tối ưu và hiệu năng vượt trội.
