Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

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

Cloud Storage for 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 Billing นอกจากนี้ยังช่วยให้คุณแชร์ข้อมูลระหว่าง Firebase และโปรเจ็กต์ Google Cloud ได้อย่างง่ายดาย

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

Google Cloud Storage

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

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

APIs

นอกจาก 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 แสดงอยู่ด้านล่าง:

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 มี API สำหรับทั้ง JSON และ XML .

นอกจาก API การเข้าถึงข้อมูลพื้นที่เก็บข้อมูลเหล่านี้แล้ว หากต้องการจัดการที่เก็บข้อมูล Cloud Storage สำหรับใช้ในโครงการ Firebase คุณสามารถใช้ Cloud Storage สำหรับ 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 ซึ่งให้วิธีอัตโนมัติในการสำรองข้อมูลและกู้คืนจากข้อมูลสำรองเหล่านั้น คุณสามารถเปิดใช้งาน Object Versioning โดยใช้คำสั่ง gsutil versioning set :

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

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

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

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

สภาพแวดล้อม 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 Vision API

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

Google Cloud Speech API

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