ผสานรวมกับ Google Cloud

การจัดเก็บข้อมูลแบบคลาวด์สำหรับ Firebase จะผสานรวมกับ Google Cloud Firebase SDKs สำหรับเก็บไฟล์ Cloud Storage โดยตรงใน บุ้งกี๋ข้อมูล Google Cloud Storage และเป็น app ของคุณเติบโตขึ้นคุณสามารถรวมบริการ Google Cloud อื่น ๆ เช่นการคำนวณการจัดการเช่น App Engine หรือเมฆฟังก์ชั่นหรือ API สำหรับการเรียนรู้เครื่องเหมือนเมฆวิสัยทัศน์หรือ Google แปลภาษา.

Firebase ใช้บัญชีบริการ Google Cloud เพื่อดำเนินการและจัดการบริการโดยไม่ต้องแชร์ข้อมูลรับรองผู้ใช้ เมื่อคุณสร้างโครงการ Firebase ที่ใช้การจัดเก็บเมฆคุณอาจสังเกตเห็นว่าบัญชีผู้ใช้บริการที่สอดคล้องกันอยู่แล้วในโครงการของคุณ: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com เห็นนี้ คู่มือการสนับสนุน Firebase สำหรับข้อมูลเพิ่มเติม

ภายใต้ประทุน, Firebase SDKs สำหรับการจัดเก็บเมฆใช้ถังเริ่มต้นใน App Engine ชั้นฟรี ซึ่งช่วยให้คุณเริ่มต้นใช้งาน Cloud Storage ได้อย่างรวดเร็ว โดยไม่ต้องใส่บัตรเครดิตหรือเปิดใช้งานบัญชี Cloud Billing นอกจากนี้ยังช่วยให้คุณแชร์ข้อมูลระหว่าง Firebase และโปรเจ็กต์ Google Cloud ได้อย่างง่ายดาย

การผสานรวมกับ Google Cloud รวมถึงการนำเข้าที่เก็บข้อมูล Cloud Storage ที่มีอยู่ ต้องใช้โปรเจ็กต์ Firebase ในแผน Blaze เรียนรู้เพิ่มเติมเกี่ยวกับแผนการในของเรา หน้าการกำหนดราคา

Google Cloud Storage

คุณสามารถใช้ APIs ข้อมูล Google Cloud Storage เข้าถึงไฟล์ที่อัปโหลดผ่าน Firebase SDKs สำหรับการจัดเก็บข้อมูลแบบคลาวด์โดยเฉพาะอย่างยิ่งในการดำเนินการที่ซับซ้อนมากขึ้นเช่นการคัดลอกหรือย้ายไฟล์หรือชื่อไฟล์ทั้งหมดที่มีอยู่ในการอ้างอิง

มันเป็นสิ่งสำคัญที่จะต้องทราบว่าคำขอเหล่านี้ใช้ข้อมูล Google Cloud Storage ตัวเลือกการควบคุมการเข้าถึง มากกว่า Firebase ตรวจสอบและจัดเก็บเมฆกฎการรักษาความปลอดภัย

APIs

นอกจาก Firebase SDK สำหรับ Cloud Storage แล้ว ยังมีวิธีอื่นๆ อีกหลายวิธีในการเข้าถึงข้อมูลที่จัดเก็บไว้ในที่เก็บข้อมูล Cloud Storage ขึ้นอยู่กับสิ่งที่คุณต้องการทำ หากคุณกำลังเข้าถึงข้อมูลบนเซิร์ฟเวอร์ที่เรานำเสนอห้องสมุดฝั่งเซิร์ฟเวอร์เช่นเดียวกับ JSON และ S3 ที่รองรับ XML สงบ API หรือถ้าคุณจำเป็นต้องเปลี่ยนแปลงสคริปต์หรือดำเนินการบริหารงานอื่น ๆ ที่เราได้มีเครื่องมือบรรทัดคำสั่งว่า จะมีประโยชน์

SDK เซิร์ฟเวอร์ Google Cloud

Google Cloud นำเสนอ SDK เซิร์ฟเวอร์คุณภาพสูงสำหรับผลิตภัณฑ์ระบบคลาวด์จำนวนมาก รวมถึง Cloud Storage ห้องสมุดเหล่านี้มีอยู่ใน Node.js , Java , ไป , งูหลาม , 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)
    }
    

Python

    # 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 .

นอกจากนี้ API สำหรับการเข้าถึงข้อมูลการจัดเก็บข้อมูลในการจัดการบุ้งกี๋ Cloud Storage สำหรับการใช้งานในโครงการ Firebase คุณสามารถใช้ การจัดเก็บเมฆสำหรับ Firebase API

gsutil

gsutil เป็นเครื่องมือบรรทัดคำสั่งที่ช่วยให้คุณเข้าถึงโดยตรงกับการจัดเก็บเมฆ คุณสามารถใช้ gsutil จะทำช่วงกว้างของถังและการจัดการวัตถุงานรวมไปถึง:

  • การอัปโหลด ดาวน์โหลด และลบออบเจ็กต์
  • รายการถังและวัตถุ
  • การย้าย คัดลอก และเปลี่ยนชื่อวัตถุ
  • การแก้ไขอ็อบเจ็กต์และ ACL ของบัคเก็ต

gsutil อนุญาตให้มีการดำเนินงานขั้นสูงอื่น ๆ เช่นการย้ายไฟล์จากไดเรกทอรีหนึ่งไปยังอีกหรือลบไฟล์ทั้งหมดที่อยู่ด้านล่างบางตำแหน่ง

ย้ายไฟล์ทั้งหมดจากการอ้างอิงหนึ่งไปยังอีกเป็นเรื่องง่ายเหมือนกับ:

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

Batch ลบไฟล์ทั้งหมดที่อยู่ด้านล่างอ้างอิงใช้งานง่ายในทำนองเดียวกัน:

# 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 สำหรับ Firebase เข้ากับแอปของคุณ ให้คำนึงถึงอัตราคำขอขั้นต่ำที่แอปของคุณต้องการเพื่อประสิทธิภาพที่ดี และเกี่ยวกับการสร้างคำขออย่างมีประสิทธิภาพ แนวทางความคิดเห็นเกี่ยวกับ อัตราการร้องขอ และโดยเฉพาะอย่างยิ่ง การกระโจนขึ้นอัตราคำขอ

การกำหนดเวอร์ชันอ็อบเจ็กต์

คุณเคยลบบางสิ่งโดยไม่ได้ตั้งใจและไม่ได้มีข้อมูลสำรองหรือไม่? พื้นที่เก็บข้อมูล Google Cloud สนับสนุน วัตถุรุ่น ซึ่งมีวิธีการโดยอัตโนมัติเพื่อสำรองข้อมูลของคุณขึ้นและเรียกคืนจากการสำรองข้อมูลเหล่านั้น คุณสามารถเปิดใช้วัตถุเวอร์ชันใช้ gsutil versioning set คำสั่ง:

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

Cloud Storage จะเลือกเวอร์ชันล่าสุดเสมอ ดังนั้นหากคุณต้องการกู้คืนอ็อบเจ็กต์ คุณต้องใช้ API หรือเครื่องมืออื่นๆ ด้านบนเพื่อตั้งค่าออบเจ็กต์ที่ต้องการให้เป็นเวอร์ชันล่าสุด

การจัดการวัฏจักรอ็อบเจ็กต์

ความสามารถในการเก็บถาวรหรือลบไฟล์เก่าโดยอัตโนมัติเป็นคุณลักษณะที่มีประโยชน์สำหรับแอปพลิเคชันจำนวนมาก โชคดีที่ Google จัดเก็บเมฆให้ วัตถุ Lifecycle Management ซึ่งจะช่วยให้คุณสามารถลบหรือเก็บวัตถุหลังจากที่จำนวนหนึ่งของเวลา

พิจารณาแอปพลิเคชั่นแชร์รูปภาพที่คุณต้องการลบรูปภาพทั้งหมดภายในหนึ่งวัน คุณสามารถตั้งค่านโยบายวงจรอายุของอ็อบเจ็กต์ได้ดังนี้:

// 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 ของคุณ

Firebase SDK สำหรับ Cloud Storage ใช้ที่เก็บข้อมูลเริ่มต้นของ App Engine ซึ่งหมายความว่าหากคุณสร้างแอป App Engine คุณสามารถใช้ App Engine API ในตัวเพื่อแชร์ข้อมูลระหว่าง Firebase และ App Engine ซึ่งมีประโยชน์สำหรับการเข้ารหัสเสียง การแปลงรหัสวิดีโอ และการแปลงภาพ ตลอดจนการประมวลผลพื้นหลังที่เน้นการคำนวณอื่นๆ

ชวา, Python และไป สภาพแวดล้อมมาตรฐาน สำหรับ App Engine รวม App Engine รูปภาพ API ( 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 (เบต้า)

ฟังก์ชั่น Google Cloud เป็นเบาเหตุการณ์ตามวิธีการแก้ปัญหาการคำนวณตรงกันที่ช่วยให้คุณสามารถสร้างขนาดเล็กฟังก์ชั่นเดียววัตถุประสงค์ที่ตอบสนองต่อเหตุการณ์ที่เกิดขึ้นโดยไม่จำเป็นต้องจัดการเซิร์ฟเวอร์หรือสภาพแวดล้อมรันไทม์ ฟังก์ชันเหล่านี้ใช้สำหรับแปลงรหัสวิดีโอ จำแนกรูปภาพโดยใช้การเรียนรู้ของเครื่อง หรือซิงค์ข้อมูลเมตากับฐานข้อมูลเรียลไทม์ของ Firebase ด้วยค่าใช้จ่ายที่น้อยกว่า App Engine ทำให้ Cloud Functions เป็นวิธีที่เร็วที่สุดในการตอบสนองต่อการเปลี่ยนแปลงใน Cloud Storage

Google Cloud Vision API

Google Cloud วิสัยทัศน์ API ช่วยให้นักพัฒนาที่จะเข้าใจเนื้อหาของภาพโดยการห่อหุ้มเครื่องที่มีประสิทธิภาพการเรียนรู้ในรูปแบบที่ง่ายต่อการใช้ API โดยจะจำแนกรูปภาพออกเป็นหลายพันหมวดหมู่อย่างรวดเร็ว ตรวจจับวัตถุและใบหน้าแต่ละชิ้นภายในรูปภาพ ค้นหาและอ่านคำที่พิมพ์อยู่ภายในรูปภาพ ระบุเนื้อหาที่ไม่เหมาะสม และแม้กระทั่งให้การวิเคราะห์ความรู้สึกของรูปภาพ

Google Cloud Speech API

คล้ายกับวิสัยทัศน์ของ API ที่ Google Cloud Speech API ช่วยให้นักพัฒนาข้อความสารสกัดจากไฟล์เสียงที่เก็บไว้ในการจัดเก็บเมฆ API รู้จักกว่า 80 ภาษาและรูปแบบต่างๆ เพื่อรองรับฐานผู้ใช้ทั่วโลกของคุณ เมื่อรวมกับ Google Cloud ภาษาธรรมชาติ API นักพัฒนาสามารถทั้งสารสกัดจากข้อความที่ดิบและสรุปความหมายเกี่ยวกับข้อความที่ว่า และหากผู้ชมทั่วโลกจะต้องคู่นี้ด้วย Google Translate API ในการแปลข้อความที่ 90 + ภาษา