פרק 12
Cloudflare R2 ואחסון אובייקטים
שירות Cloudflare R2 הוא אחסון אובייקטים מבוזר, תואם לממשק S3. היתרון המרכזי מול אחסון ענן רגיל הוא ביטול דמי תעבורה יוצאת (Zero Egress).
משלמים על נפח האחסון ועל פעולות הגישה (קריאה וכתיבה). לא משלמים על כל ג'יגה של הורדה לגולש.
| מודל | מה מחייבים |
|---|---|
אחסון S3 קלאסי | נפח, פעולות API, ותעבורה יוצאת לכל GB |
R2 | נפח ופעולות API בלבד. אין דמי תעבורה יוצאת |
#לפני שמתחילים
לפי התיעוד הרשמי (עודכן ב-21 באפריל 2026), צריך חשבון Cloudflare עם מנוי R2. בלי המנוי אי אפשר ליצור דלי או לשמור אובייקטים. אם אין לכם מנוי:
- נכנסים ל-Cloudflare Dashboard.
- בוחרים
Storage & databases > R2 > Overview. - משלימים את תהליך ה-
checkoutכדי להוסיף מנויR2לחשבון.
R2 חינמי להתחלה, עם שימוש חודשי כלול. החיוב הוא חודשי לפי השימוש בפועל. פרטים מדויקים מופיעים בעמוד Pricing הרשמי.
#איך ניגשים ל-R2
R2 תומך בכמה שיטות גישה, כך שאפשר לבחור את השיטה המתאימה ביותר:
| שיטה | מתי להשתמש |
|---|---|
Workers API | בונים אפליקציה על Cloudflare Workers שצריכה לקרוא או לכתוב מ-R2 |
S3 | רוצים להשתמש ב-SDK תואם S3 כדי לעבוד עם R2 באפליקציות קיימות |
כלי CLI | רוצים להעלות, להוריד או לנהל אובייקטים מהטרמינל |
Dashboard | רוצים לצפות ולנהל במהירות דליים ואובייקטים בדפדפן |
אם בונים על Workers, מתחילים מ-Workers API. אם יש כבר קוד S3, נשארים בנתיב S3 ומחליפים endpoint ומפתחות. אם צריך רק להעלות קובץ מהמחשב, משתמשים בכלי CLI או בלוח הבקרה.
#יכולות מרכזיות
- תאימות ל-
S3 API: אפשר לעבוד עם SDK מוכר (למשל AWS SDK ו-Boto3) ועם כלי שורת פקודה תואמים, כגון AWS CLI,rcloneו-Cyberduck. - דליים ציבוריים ודומיינים מותאמים: אפשר לחבר דלי לדומיין מותאם (למשל
cdn.example.com) עם תעודת SSL, הגנת WAF ומטמון CDN בקצה. - רמזי מיקום (
Location Hints): בחירת אזור מועדף (צפון אמריקה, אירופה, אסיה) כדי לקרב את האחסון למשתמשים. - כללי
CORS: מאפשרים העלאה ישירה מהדפדפן ל-R2בלי להעביר את הקובץ דרך שרת ה-Backend. - אסימונים מוגבלים לדלי (
Bucket-Scoped Tokens): מפתחות עם הרשאות קריאה או כתיבה לדלי אחד בלבד.
#מלכודות נפוצות
- בלי מנוי
R2אי אפשר להתחיל. גם כשיש שימוש חינמי כלול, צריך להשליםcheckoutבלוח הבקרה. - החיוב חודשי לפי שימוש. אחרי ההרשמה זה לא בהכרח בחינם.
- ב-Workers עדיף
Binding. לא שמים מפתחותS3בקוד אם אפשר לגשת לדלי דרךenv. - כלי
CLIו-SDK חיצוניים עובדים מול ממשקS3(עם endpoint ומפתחות). זה מנגנון נפרד מ-Workers API. - לוח הבקרה מתאים לצפייה ולניהול מהיר. לוגיקת אפליקציה שייכת ל-Workers או ל-SDK.
#עבודה עם R2 מתוך Cloudflare Workers
זו הדרך היעילה כשהקוד רץ על Workers. אין צורך בספריות צד שלישי או במפתחות סודיים בקוד.
#הגדרה בקובץ wrangler.jsonc
{
"r2_buckets": [
{
"binding": "STORAGE",
"bucket_name": "my-app-media"
}
]
}#קוד Worker לקריאה וכתיבה של קבצים
export default {
async fetch(request: Request, env: Env): Promise<Response> {
const url = new URL(request.url);
const key = url.pathname.slice(1);
// העלאת קובץ (PUT)
if (request.method === "PUT") {
await env.STORAGE.put(key, request.body, {
httpMetadata: { contentType: request.headers.get("content-type") || "application/octet-stream" },
});
return new Response(`הקובץ ${key} נשמר בהצלחה ב-R2`, { status: 201 });
}
// קריאת קובץ (GET)
if (request.method === "GET") {
const object = await env.STORAGE.get(key);
if (!object) return new Response("הקובץ לא נמצא", { status: 404 });
const headers = new Headers();
object.writeHttpMetadata(headers);
headers.set("etag", object.httpEtag);
return new Response(object.body, { headers });
}
return new Response("Method Not Allowed", { status: 405 });
},
};#עבודה עם AWS SDK v3 ב-Node.js
כשיש אפליקציה קיימת מחוץ ל-Workers, מתחברים ל-R2 עם SDK תואם S3:
import { S3Client, PutObjectCommand, GetObjectCommand } from "@aws-sdk/client-s3";
const s3 = new S3Client({
region: "auto",
endpoint: `https://${process.env.CLOUDFLARE_ACCOUNT_ID}.r2.cloudflarestorage.com`,
credentials: {
accessKeyId: process.env.R2_ACCESS_KEY_ID!,
secretAccessKey: process.env.R2_SECRET_ACCESS_KEY!,
},
});
// העלאת קובץ לדלי R2
await s3.send(
new PutObjectCommand({
Bucket: "my-app-media",
Key: "images/logo.png",
Body: fileBuffer,
ContentType: "image/png",
})
);#ניתוח נתונים ואגמי מידע (R2 Data Catalog)
לארכיטקטורות Data Lake ועיבוד נתונים בקנה מידה גדול, קלאודפלייר מציעה את R2 Data Catalog: קטלוג מנוהל בפורמט Apache Iceberg.
אפשר להריץ שאילתות SQL על קובצי Parquet ב-R2 דרך מנועים כמו DuckDB, Apache Spark, Snowflake ו-Trino, בלי להוציא את הנתונים ובלי לשלם על תעבורה יוצאת.
בפרק הבא נסקור את לוח הבקרה של קלאודפלייר, מנוע החוקים (Rules), מערכת הניטור והאנליטיקה וניהול אסימוני API.