השתלב עם Google Cloud

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

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

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

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

אחסון בענן של גוגל

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

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

ממשקי API

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

שרת SDK של שרת ענן

גוגל ענן מציעה SDK באיכות גבוהה של שרתים למספר מוצרי ענן, כולל אחסון בענן. ספריות אלו זמינים 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}"
    

ממשק API של REST

אם אתה משתמש בשפה בלי הספרייה הלקוח, רוצה לעשות משהו כי ספריות הלקוח לא עושים, או סתם יש לקוח 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

שיעורי בקשה

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

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

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

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

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

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

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

ה- SDK של 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 / Slave של App Engine לשעבר.
  2. לפרויקט יש מזהה פרויקט ולפניה תחום, למשל: domain.com:project-1234 .

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

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

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

ממשק ה- API של Google Vision Cloud

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

ממשק API של Google Cloud Speech

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