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

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

Google Cloud Storage

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

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

ממשקי API

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

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

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

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

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

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

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

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

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

האם אי פעם מחקתם משהו בטעות ולא היה לכם גיבוי? תומך Google Cloud Storage אובייקט גרסאות , אשר מספק דרך אוטומטית כדי לגבות את הנתונים שלך, ולשחזר מגיבויים אלה. ניתן להפעיל אובייקט גרסאות באמצעות 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, וללכת הסביבות הרגילות ל- 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 Master/Slave.
  2. לפרויקט יש מזהה פרויקט ולפניה תחום, למשל: domain.com:project-1234 .

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

Google Cloud Functions (ביטא)

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

Google Cloud Vision API

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

Google Cloud Speech API

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