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

Cloud Storage สำหรับ Firebase ได้รับการผสานรวมอย่างแน่นหนากับ Google Cloud Firebase SDK สำหรับ 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 นี้สำหรับข้อมูลเพิ่มเติม

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

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

ที่เก็บข้อมูลคลาวด์ของ Google

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

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

API

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

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

Google Cloud นำเสนอ SDK เซิร์ฟเวอร์คุณภาพสูงสำหรับผลิตภัณฑ์ระบบคลาวด์จำนวนหนึ่ง รวมถึง Cloud Storage ไลบรารีเหล่านี้มีอยู่ใน Node.js , Java , go , Python , PHP และ Ruby

สำหรับข้อมูลเพิ่มเติม รวมถึงคำแนะนำในการติดตั้ง การตรวจสอบสิทธิ์ และการแก้ปัญหา โปรดดูเอกสารประกอบเฉพาะแพลตฟอร์มที่ลิงก์ด้านบน

ตัวอย่างการใช้งานสำหรับ Google Cloud Storage SDK แสดงอยู่ด้านล่าง:

โหนด 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

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

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

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

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 คือ "แพลตฟอร์มในรูปแบบบริการ" ที่ปรับขนาดตรรกะแบ็กเอนด์โดยอัตโนมัติตามปริมาณการรับส่งข้อมูลที่ได้รับ เพียงอัปโหลดโค้ดแบ็กเอนด์ของคุณแล้ว Google จะจัดการความพร้อมใช้งานของแอปของคุณ ไม่มีเซิร์ฟเวอร์ให้คุณจัดเตรียมหรือบำรุงรักษา App Engine เป็นวิธีที่รวดเร็วและง่ายดายในการเพิ่มพลังการประมวลผลเพิ่มเติมหรือการดำเนินการที่เชื่อถือได้ให้กับแอปพลิเคชัน Firebase ของคุณ

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

สภาพแวดล้อม Java, Python และ go Standard สำหรับ App Engine ประกอบด้วย App Engine Images 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 Functions เป็นโซลูชันการประมวลผลแบบอะซิงโครนัสน้ำหนักเบาตามเหตุการณ์ ซึ่งช่วยให้คุณสร้างฟังก์ชันขนาดเล็กที่มีจุดประสงค์เดียวซึ่งตอบสนองต่อเหตุการณ์โดยไม่จำเป็นต้องจัดการเซิร์ฟเวอร์หรือสภาพแวดล้อมรันไทม์ ฟังก์ชันเหล่านี้ใช้สำหรับการแปลงรหัสวิดีโอ การจัดประเภทรูปภาพโดยใช้การเรียนรู้ของเครื่อง หรือการซิงค์ข้อมูลเมตากับฐานข้อมูลเรียลไทม์ของ Firebase ด้วยค่าใช้จ่ายที่น้อยกว่า App Engine ทำให้ Cloud Functions เป็นวิธีที่เร็วที่สุดในการตอบสนองต่อการเปลี่ยนแปลงใน Cloud Storage

Google Cloud วิสัยทัศน์ API

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

API คำพูดของ Google Cloud

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