Catch up on everthing we announced at this year's Firebase Summit. Learn more

השתלב עם Google Cloud

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

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

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

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

אחסון ענן של Google

אתה יכול להשתמש Google Cloud Storage APIs לקבצים גישה המועלים באמצעות ערכות SDK Firebase עבור אחסון בענן במיוחד כדי לבצע פעולות מורכבות יותר, כגון העתקת או העברת קובץ או לרשום את כל הקבצים זמינים בכל התייחסות.

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

ממשקי API

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

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

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

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

שימוש לדוגמא ב- SDK אחסון בענן של Google מוצג להלן:

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) {});
    

ג'אווה

    // 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 הצעות APIs עבור שניהם JSON ו- XML .

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

gsutil

gsutil הוא כלי שורת פקודה שנותן לכם גישה ישירה לאחסון בענן. אתה יכול להשתמש 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 הוא שירות מדרגי במיוחד המשתמש בטכנולוגיה של קנה מידה אוטומטי כדי להשיג שיעורי בקשות גבוהים מאוד.

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

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

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

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

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

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

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

היכולת לאחסן או למחוק קבצים מיושנים באופן אוטומטי היא תכונה שימושית ליישומים רבים. למרבה המזל, 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 היא "פלטפורמה כשירות" שמגדילה באופן אוטומטי את ההיגיון של הגב כתגובה לכמות התעבורה שהיא מקבלת. פשוט העלה את קוד ה- backend שלך ו- Google תנהל את זמינות האפליקציה שלך; אין שרתים שתוכל לספק או לתחזק. App Engine היא דרך מהירה וקלה להוסיף כוח עיבוד נוסף או ביצוע אמין ליישום Firebase שלך.

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

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

בעת ייבוא פרויקט ענן Google הקיים לתוך Firebase, אם אתה רוצה לעשות שום מנוע היישומים הקיימים אובייקטים זמין 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.
  2. לפרויקט יש מזהה פרויקט ולפניה תחום, למשל: domain.com:project-1234 .

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

פונקציות ענן של Google (ביטא)

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

ממשק API של Google Cloud Vision

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

ממשק API של Google Cloud Speech

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