שילוב עם Google Cloud

Cloud Storage for Firebase משולב באופן הדוק עם Google Cloud . ערכות ה-SDK של Firebase עבור Cloud Storage מאחסנות קבצים ישירות בדליים של Google Cloud Storage , וככל שהאפליקציה שלך גדלה, תוכל לשלב בקלות שירותי Google Cloud אחרים, כגון מחשוב מנוהל כמו App Engine או Cloud Functions, או ממשקי API של למידה חישובית כמו Cloud Vision או Google לתרגם.

Firebase משתמשת בחשבונות שירות Google Cloud כדי להפעיל ולנהל שירותים מבלי לשתף אישורי משתמש. כאשר אתה יוצר פרויקט Firebase שמשתמש ב-Cloud Storage, ייתכן שתבחין שחשבון שירות מתאים כבר זמין בפרויקט שלך: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . עיין במדריך התמיכה הזה של Firebase למידע נוסף.

מתחת למכסה המנוע, ערכות SDK של Firebase עבור Cloud Storage משתמשות בדלי ברירת המחדל בשכבת App Engine ללא עלות. זה מאפשר לך להתחיל לעבוד במהירות עם Cloud Storage, מבלי להכניס כרטיס אשראי או להפעיל חשבון Cloud Billing. זה גם מאפשר לך לשתף נתונים בקלות בין Firebase לפרויקט של Google Cloud.

שילוב עם Google Cloud, כולל ייבוא ​​דליים קיימים של Cloud Storage, דורש פרויקט Firebase בתוכנית Blaze. למידע נוסף על התוכניות בדף התמחור שלנו.

Google Cloud Storage

אתה יכול להשתמש בממשקי ה-API של Google Cloud Storage כדי לגשת לקבצים שהועלו דרך Firebase SDKs עבור Cloud Storage, במיוחד כדי לבצע פעולות מורכבות יותר, כגון העתקה או העברה של קובץ, או פירוט כל הקבצים הזמינים בהפניה.

חשוב לציין שבקשות אלו משתמשות באפשרויות בקרת גישה של Google Cloud Storage , במקום אימות Firebase ו-Cloud Storage אבטחה.

ממשקי API

בנוסף ל-Firebase SDKs עבור Cloud Storage, ישנן מספר דרכים אחרות לגשת לנתונים המאוחסנים בדלי Cloud Storage שלך, בהתאם למה שאתה רוצה לעשות. אם אתה ניגש לנתונים בשרת, אנו מציעים ספריות בצד השרת, כמו גם JSON ו-S3 XML RESTful API תואם, או אם אתה צריך לבצע שינויים בסקריפט או לבצע משימות ניהול אחרות, יש לנו כלי שורת פקודה יהיה שימושי.

ערכות SDK של שרתים של Google Cloud

Google Cloud מציע ערכות SDK לשרתים באיכות גבוהה עבור מספר מוצרי ענן, כולל Cloud Storage. ספריות אלו זמינות ב- Node.js , Java , go , Python , PHP ו- Ruby .

למידע נוסף, כולל הוראות התקנה, אימות ופתרון בעיות, עיין בתיעוד הספציפי לפלטפורמה המקושר לעיל.

שימוש לדוגמה עבור SDK של Google Cloud Storage מוצג להלן:

Node.js

    // Require gcloud
    var gcloud = require('google-cloud');

    // Enable Cloud Storage
    var gcs = gcloud.storage({
      projectId: 'grape-spaceship-123',
      keyFilename: '/path/to/keyfile.json'
    });

    // Reference an existing bucket.
    var bucket = gcs.bucket('my-existing-bucket');

    // Upload a local file to a new file to be created in your bucket.
    bucket.upload('/photos/zoo/zebra.jpg', function(err, file) {
      if (!err) {
        // "zebra.jpg" is now in your bucket.
      }
    });

    // Download a file from your bucket.
    bucket.file('giraffe.jpg').download({
      destination: '/photos/zoo/giraffe.jpg'
    }, function(err) {});
    

Java

    // Enable Cloud Storage
    Storage storage = StorageOptions.builder()
      .authCredentials(AuthCredentials.createForJson(new FileInputStream("/path/to/my/key.json"))
      .build()
      .service();

    // Upload a local file to a new file to be created in your bucket.
    InputStream uploadContent = ...
    BlobId blobId = BlobId.of("my-existing-bucket", "zebra.jpg");
    BlobInfo blobInfo = BlobInfo.builder(blobId).contentType("text/plain").build();
    Blob zebraBlob = storage.create(blobInfo, content);

    // Download a file from your bucket.
    Blob giraffeBlob = storage.get("my-existing-bucket", "giraffe.jpg", null);
    InputStream downloadContent = giraffeBlob.getInputStream();
    

ללכת

    // Enable Cloud Storage
    client, err := storage.NewClient(ctx, option.WithServiceAccountFile("path/to/keyfile.json"))
    if err != nil {
        log.Fatal(err)
    }

    // Download a file from your bucket.
    rc, err := client.Bucket("my-existing-bucket").Object("giraffe.jpg").NewReader(ctx)
    if err != nil {
        log.Fatal(err)
    }
    defer rc.Close()
    body, err := ioutil.ReadAll(rc)
    if err != nil {
        log.Fatal(err)
    }
    

פִּיתוֹן

    # Import gcloud
    from google.cloud import storage

    # Enable Cloud Storage
    client = storage.Client()

    # Reference an existing bucket.
    bucket = client.get_bucket('my-existing-bucket')

    # Upload a local file to a new file to be created in your bucket.
    zebraBlob = bucket.get_blob('zebra.jpg')
    zebraBlob.upload_from_filename(filename='/photos/zoo/zebra.jpg')

    # Download a file from your bucket.
    giraffeBlob = bucket.get_blob('giraffe.jpg')
    giraffeBlob.download_as_string()
    

PHP

    // Require gcloud
    require 'vendor/autoload.php';
    use Google\Cloud\Storage\StorageClient;

    // Enable Cloud Storage
    $storage = new StorageClient([
        'projectId' => 'grape-spaceship-123'
    ]);

    // Reference an existing bucket.
    $bucket = $storage->bucket('my-existing-bucket');

    // Upload a file to the bucket.
    $bucket->upload(
        fopen('/photos/zoo/zebra.jpg', 'r')
    );

    // Download a file from your bucket.
    $object = $bucket->object('giraffe.jpg');
    $object->downloadToFile('/photos/zoo/giraffe.jpg');
    

אוֹדֶם

    # Require gcloud
    require "google/cloud"

    # Enable Cloud Storage
    gcloud = Google::Cloud.new "grape-spaceship-123", "/path/to/keyfile.json"
    storage = gcloud.storage

    # Reference an existing bucket.
    bucket = storage.bucket "my-existing-bucket"

    # Upload a file to the bucket.
    bucket.create_file "/photos/zoo/zebra.jpg", "zebra.jpg"

    # Download a file from your bucket.
    file = bucket.file "giraffe.jpg"
    file.download "/photos/zoo/#{file.name}"
    

REST API

אם אתה משתמש בשפה ללא ספריית לקוח, רוצה לעשות משהו שספריות הלקוח לא עושות, או פשוט יש לך לקוח HTTP מועדף שאתה מעדיף להשתמש בו, Google Cloud Storage מציע ממשקי API ל- JSON וגם ל-XML .

בנוסף לממשקי ה-API של גישה לנתוני אחסון, כדי לנהל דליים של Cloud Storage לשימוש בפרויקטים של Firebase, אתה יכול להשתמש ב- Cloud Storage for Firebase API .

gsutil

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

  • העלאה, הורדה ומחיקה של אובייקטים.
  • רישום דליים וחפצים.
  • הזזה, העתקה ושינוי שמות של אובייקטים.
  • עריכת ACL של אובייקטים ודליים.

gsutil מאפשרים פעולות מתקדמות אחרות, כגון העברת קבצים מספריה אחת לאחרת, או מחיקת כל הקבצים מתחת למיקום מסוים.

העברת כל הקבצים מהפניה אחת לאחרת היא קלה כמו:

gsutil mv gs://bucket/old/reference gs://bucket/new/reference

מחיקת אצווה של כל הקבצים מתחת להפניה היא אינטואיטיבית באופן דומה:

# Delete all files under a path
gsutil rm -r gs://bucket/reference/to/delete

# Delete all the files in a bucket but not the bucket gsutil rm -r gs://bucket/**

# Delete all the files AND the bucket # Removing the default bucket will break the Firebase SDKs for Cloud Storage and is strongly discouraged gsutil rm -r gs://bucket

בקש תעריפים

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

Google Cloud Storage הוא שירות מרובה דיירים, כלומר משתמשים חולקים את אותה קבוצה של משאבים בסיסיים. על מנת לנצל בצורה הטובה ביותר את המשאבים המשותפים הללו, לדליים יש קיבולת IO ראשונית.

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

גרסת אובייקטים

האם אי פעם מחקתם משהו בטעות ולא היה לכם גיבוי? Google Cloud Storage תומך ב- Object Versioning , המספק דרך אוטומטית לגבות את הנתונים שלך ולשחזר מגיבויים אלה. אתה יכול להפעיל גירסאות אובייקטים באמצעות הפקודה gsutil versioning set :

gsutil versioning set on gs://<your-cloud-storage-bucket>

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

ניהול מחזור חיים של אובייקטים

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

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

// lifecycle.json
{
  "lifecycle": {
    "rule":
    [
      {
        "action": {"type": "Delete"},
        "condition": {"age": 1}
      }
    ]
  }
}

ופרוס אותו באמצעות הפקודה gsutil lifecycle set :

gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>

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

App Engine

App Engine הוא "פלטפורמה כשירות" שמרחיבה אוטומטית את הלוגיקה האחורית בתגובה לכמות התעבורה שהיא מקבלת. פשוט העלה את קוד הקצה שלך ו-Google תנהל את זמינות האפליקציה שלך; אין שרתים שתוכל לספק או לתחזק. App Engine הוא דרך מהירה וקלה להוסיף כוח עיבוד נוסף או ביצוע מהימן ליישום Firebase שלך.

ערכות ה-SDK של Firebase עבור Cloud Storage משתמשות בדלי ברירת המחדל של App Engine, מה שאומר שאם אתה בונה אפליקציית App Engine, אתה יכול להשתמש בממשקי ה-API המובנים של App Engine כדי לשתף נתונים בין Firebase ל-App Engine. זה שימושי לביצוע קידוד אודיו, המרת קידוד וידאו ותמורות תמונה, כמו גם עיבוד רקע אינטנסיבי אחר בחישוב.

סביבות ה-Java, Python ו-go Standard עבור App Engine כוללות את ה-API של App Engine Images ( Java , Python , שיכול לשנות גודל, לסובב, להפוך ולחתוך תמונה, כמו גם להחזיר כתובת URL להגשת תמונה המאפשרת טרנספורמציות בצד הלקוח , בדומה לCloudinary ו-Imgix.

בעת ייבוא ​​פרויקט Google Cloud קיים ל-Firebase, אם ברצונך להפוך אובייקטים קיימים של App Engine לזמינים ב-Firebase, תצטרך להגדיר את בקרת הגישה המוגדרת כברירת מחדל באובייקטים שלך כדי לאפשר ל-Firebase לגשת אליהם על ידי הפעלת הפקודה הבאה באמצעות gsutil :

gsutil -m acl ch -r -u service-<project number;gt@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

בעיות ידועות

ישנם שני מקרים ידועים שבהם אינך יכול לייבא את אפליקציית App Engine שלך:

  1. הפרויקט מכיל אפליקציה לשעבר של App Engine Datastore Master/Slave.
  2. לפרויקט יש קידומת של מזהה פרויקט של דומיין, לדוגמה: domain.com:project-1234 .

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

Google Cloud Functions (ביטא)

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

Google Cloud Vision API

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

Google Cloud Speech API

בדומה ל-Vision API, Google Cloud Speech API מאפשר למפתחים לחלץ טקסט מקובץ שמע המאוחסן ב-Cloud Storage. ה-API מזהה למעלה מ-80 שפות וגרסאות, כדי לתמוך בבסיס המשתמשים הגלובלי שלך. בשילוב עם Google Cloud Natural Language API , מפתחים יכולים גם לחלץ את הטקסט הגולמי וגם להסיק משמעות לגבי הטקסט הזה. ואם נדרש קהל גלובלי, חבר את זה עם Google Translate API כדי לתרגם את הטקסט ל-90+ שפות.