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

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

SDK ขั้นสูง Firebase รายการสําหรับ 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 Authentication และ Cloud Storage Security Rules

API

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

SDK ของเซิร์ฟเวอร์ Google Cloud รายการ

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

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

ตัวอย่างการใช้ SDK ของ Google Cloud Storage มีดังนี้

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();
    

Go

    // 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');
    

Ruby

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

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

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

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

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

การจัดการอายุการใช้งานของออบเจ็กต์

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

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

// lifecycle.json
{
  "lifecycle": {
    "rule":
    [
      {
        "action": {"type": "Delete"},
        "condition": {"age": 1}
      }
    ]
  }
}

และทำให้ใช้งานได้โดยใช้คำสั่ง gsutil lifecycle set:

gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>

โปรดทราบว่าการตั้งค่านี้มีผลกับไฟล์ทั้งหมดในที่เก็บข้อมูล ดังนั้นหาก คุณกำลังจัดเก็บข้อมูลสำรองที่สำคัญของผู้ใช้ซึ่งต้องการเก็บไว้เป็นเวลานาน รูปภาพข้างเคียงที่ต้องการลบทุกวัน คุณอาจจะใช้รูปภาพ 2 รูปแยกกัน หรือดำเนินการลบด้วยตนเองโดยใช้ gsutil หรือเซิร์ฟเวอร์ของคุณเอง

App Engine

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

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

Java, Python และ go สภาพแวดล้อมมาตรฐาน สำหรับ App Engine รวมถึง App Engine Images API (Java, Python ซึ่งสามารถ ปรับขนาด หมุน พลิกและครอบตัดรูปภาพ รวมทั้งส่งคืน URL แสดงรูปภาพ ซึ่งทําให้สามารถเปลี่ยนรูปแบบฝั่งไคลเอ็นต์ได้ ซึ่งคล้ายกับ Cloudใช้สำหรับ Cloud และ 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>

ปัญหาที่ทราบ

มี 2 กรณีที่ทราบแล้วซึ่งคุณนำเข้าแอป App Engine ไม่ได้ ได้แก่

  1. โปรเจ็กต์นี้มีเจ้าของ App Engine Datastore มาสเตอร์/ทาสเก่า แอป
  2. โปรเจ็กต์มีรหัสโปรเจ็กต์นำหน้าโดเมน เช่น domain.com:project-1234

โปรเจ็กต์จะไม่รองรับ Cloud Storage for Firebase ไม่ว่าจะเป็นกรณีใด และคุณควรสร้างโปรเจ็กต์ Firebase ใหม่เพื่อใช้ Cloud Storage ติดต่อทีมสนับสนุน เพื่อให้เราช่วยเหลือคุณได้

ฟังก์ชัน Google Cloud (เบต้า)

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

Google Cloud Vision API

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

Google Cloud Speech API

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