תחילת העבודה עם Cloud Storage באינטרנט

בעזרת Cloud Storage for Firebase אתם יכולים להעלות ולשתף תוכן כמו תמונות, אודיו, וידאו וקבצים אחרים (כולל תוכן שנוצר על ידי משתמשים), וכך ליצור תוכן מדיה עשירה באפליקציות שלכם. הנתונים שלכם מאוחסנים בקטגוריה של Google Cloud Storage – פתרון לאחסון אובייקטים בקנה מידה של אקסה-בייט, עם זמינות גבוהה ויתירות גלובלית. Cloud Storage for Firebase מאפשר להעלות את הקבצים האלה בצורה מאובטחת ישירות ממכשירים ניידים ומדפדפני אינטרנט, ומתמודד בקלות עם רשתות לא יציבות.

לפני שמתחילים

  1. אם עדיין לא עשיתם זאת, הקפידו להשלים את המדריך לתחילת העבודה עם אפליקציות אינטרנט. זה כולל:

    • יצירת פרויקט ב-Firebase.

    • רושמים את אפליקציית האינטרנט בפרויקט ומחברים אותה ל-Firebase על ידי הוספת Firebase JS SDK ואובייקט ההגדרות האישיות של Firebase לאפליקציה.

  2. מוודאים שפרויקט Firebase נמצא בתוכנית התמחור Blaze בתשלום לפי שימוש, שנדרשת כדי להשתמש ב-Cloud Storage for Firebase. אם אתם משתמשים חדשים ב-Firebase וב-Google Cloud, בדקו אם אתם זכאים לקרדיט בשווי 300$ לתקופת ניסיון בחינם.

יצירת קטגוריית ברירת מחדל של Cloud Storage

  1. במסוף Firebase, נכנסים אל Databases & Storage‏ > Storage.

    אם הפרויקט שלכם עדיין לא בתוכנית התמחור Blaze בתשלום לפי שימוש, תתבקשו לשדרג את הפרויקט.

  2. לוחצים על שנתחיל?.

  3. בוחרים מיקום לקטגוריית ברירת המחדל.

  4. מגדירים את Firebase Security Rules לקטגוריית ברירת המחדל. במהלך הפיתוח, כדאי להגדיר את הכללים לגישה ציבורית.

  5. לוחצים על סיום.

עכשיו אפשר לראות את הקטגוריה במסוף Firebase (עוברים אל הכרטיסייה Databases & Storage > Storage > Files). הפורמט של שם הקטגוריה שמוגדר כברירת מחדל הוא PROJECT_ID.firebasestorage.app.

הגדרת גישה ציבורית

ב-Cloud Storage for Firebase יש שפת כללים הצהרתית שמאפשרת להגדיר את המבנה של הנתונים, את אופן ההוספה שלהם לאינדקס ואת המועדים שבהם אפשר לקרוא את הנתונים ולכתוב אותם. כברירת מחדל, הגישה לקריאה ולכתיבה ב-Cloud Storage מוגבלת, כך שרק משתמשים מאומתים יכולים לקרוא או לכתוב נתונים. כדי להתחיל בלי להגדיר את Authentication, אתם יכולים להגדיר את הכללים לגישה ציבורית.

הפעולה הזו פותחת את Cloud Storage לכולם, גם לאנשים שלא משתמשים באפליקציה שלך, אז חשוב להגביל שוב את Cloud Storage כשמגדירים אימות.

מוסיפים את ה-JS SDK של Cloud Storage ומפעילים את Cloud Storage

כשמפעילים את JavaScript SDK, צריך לציין את שם הקטגוריה של Cloud Storage.

אפשר למצוא את שם הקטגוריה של Cloud Storage במסוף Firebase (עוברים אל Databases & Storage > Storage > הכרטיסייה Files). בהתאם למועד שבו יצרתם את קטגוריית ברירת המחדל, שם הקטגוריה יהיה באחד מהפורמטים הבאים:

  • PROJECT_ID.firebasestorage.app (קטגוריית ברירת המחדל נוצרה בספטמבר 2024 או אחריו)
  • PROJECT_ID.appspot.com (קטגוריית ברירת מחדל מדור קודם שנוצרה לפני ספטמבר 2024)

מאתחלים את ה-SDK באמצעות קטע הקוד הבא:

Web

import { initializeApp } from "firebase/app";
import { getStorage } from "firebase/storage";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
  storageBucket: 'BUCKET_NAME'
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Cloud Storage and get a reference to the service
const storage = getStorage(app);

Web

import firebase from "firebase/app";
import "firebase/compat/storage";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
  storageBucket: 'BUCKET_NAME'
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Cloud Storage and get a reference to the service
const storage = firebase.storage();

עכשיו אפשר להתחיל להשתמש ב-Cloud Storage!

מה השלב הבא? איך יוצרים קובץ עזר של Cloud Storage

הגדרה מתקדמת

יש כמה תרחישים לדוגמה שבהם נדרשת הגדרה נוספת:

התרחיש הראשון מתאים אם יש לכם משתמשים ברחבי העולם ואתם רוצים לאחסן את הנתונים שלהם קרוב אליהם. לדוגמה, אתם יכולים ליצור קטגוריות בארה"ב, באירופה ובאסיה כדי לאחסן נתונים של משתמשים באזורים האלה, וכך לצמצם את זמן האחזור.

התרחיש השני שימושי אם יש לכם נתונים עם דפוסי גישה שונים. לדוגמה: אתם יכולים להגדיר קטגוריה אזורית או בכמה אזורים לאחסון תמונות או תוכן אחר שניגשים אליו לעיתים קרובות, וקטגוריה מסוג Nearline או Coldline לאחסון גיבויים של משתמשים או תוכן אחר שניגשים אליו לעיתים רחוקות.

בשני התרחישים האלה, כדאי להשתמש בכמה קטגוריות של Cloud Storage.

התרחיש השלישי שימושי אם אתם מפתחים אפליקציה, כמו Google Drive, שמאפשרת למשתמשים להתחבר לכמה חשבונות (למשל, חשבון אישי וחשבון לצורכי עבודה). אתם יכולים להשתמש במופע מותאם אישית של אפליקציית Firebase כדי לאמת כל חשבון נוסף.

שימוש בכמה קטגוריות של Cloud Storage

אם אתם רוצים להשתמש בקטגוריית Cloud Storage שונה מקטגוריית ברירת המחדל שמתוארת למעלה במדריך הזה, או להשתמש בכמה קטגוריות Cloud Storage באפליקציה אחת, אתם יכולים ליצור מכונה של firebase.storage שמפנה לקטגוריה בהתאמה אישית:

Web

import { getApp } from "firebase/app";
import { getStorage } from "firebase/storage";

// Get a non-default Storage bucket
const firebaseApp = getApp();
const storage = getStorage(firebaseApp, "gs://my-custom-bucket");

Web

// Get a non-default Storage bucket
var storage = firebase.app().storage("gs://my-custom-bucket");

עבודה עם קטגוריות מיובאות

כשמייבאים קטגוריית Cloud Storage קיימת ל-Firebase, צריך לתת ל-Firebase גישה לקבצים האלה באמצעות הכלי gsutil, שכלול ב-SDK של Google Cloud:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

מספר הפרויקט מופיע במבוא לפרויקטים ב-Firebase.

הפעולה הזו לא משפיעה על קטגוריות חדשות שנוצרו, כי בקרת הגישה שמוגדרת להן כברירת מחדל מאפשרת גישה ל-Firebase. זהו אמצעי זמני, ובעתיד הפעולה תתבצע באופן אוטומטי.

שימוש באפליקציית Firebase בהתאמה אישית

אם אתם מפתחים אפליקציה מורכבת יותר באמצעות firebase.app.App בהתאמה אישית, אתם יכולים ליצור מכונה של firebase.storage.Storage שמאותחלת עם האפליקציה הזו:

Web

import { getStorage } from "firebase/storage";

// Get the default bucket from a custom firebase.app.App
const storage1 = getStorage(customApp);

// Get a non-default bucket from a custom firebase.app.App
const storage2 = getStorage(customApp, "gs://my-custom-bucket");

Web

// Get the default bucket from a custom firebase.app.App
var storage = customApp.storage();

// Get a non-default bucket from a custom firebase.app.App
var storage = customApp.storage("gs://my-custom-bucket");

השלבים הבאים