Catch up on everthing we announced at this year's Firebase Summit. Learn more

التكامل مع جوجل كلاود

تم دمج سحابة تخزين للFirebase بإحكام مع جوجل السحابية . وFirebase تطوير البرامج لسحابة التخزين تخزين الملفات مباشرة في دلاء جوجل سحابة التخزين ، وكما ينمو التطبيق الخاص بك، يمكنك بسهولة دمج خدمات Google Cloud أخرى، مثل حساب تدار مثل محرك التطبيقات أو السحب وظائف، أو واجهات برمجة التطبيقات تعلم الآلة مثل سحابة الرؤية أو Google ترجمة.

يستخدم Firebase حسابات خدمة Google Cloud لتشغيل الخدمات وإدارتها دون مشاركة بيانات اعتماد المستخدم. عند إنشاء مشروع Firebase يستخدم سحابة التخزين، قد تلاحظ أن حساب خدمة المقابلة هو متاح بالفعل في المشروع: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . انظر هذا دليل دعم Firebase لمزيد من المعلومات.

تحت غطاء محرك السيارة، Firebase تطوير البرامج لسحابة التخزين استخدام دلو الافتراضي في محرك التطبيقات الطبقة الحرة. يتيح لك ذلك الاستعداد والتشغيل بسرعة مع Cloud Storage ، دون الحاجة إلى وضع بطاقة ائتمان أو تمكين حساب Cloud Billing. كما يتيح لك مشاركة البيانات بسهولة بين Firebase ومشروع Google Cloud.

يتطلب التكامل مع Google Cloud ، بما في ذلك استيراد حاويات التخزين السحابي الحالية ، مشروع Firebase في خطة Blaze. تعرف على المزيد حول خطط على موقعنا على الصفحة التسعير .

جوجل كلاود التخزين

يمكنك استخدام جوجل سحابة التخزين API إلى الوصول إلى الملفات التي تم تحميلها من خلال تطوير البرامج Firebase لسحابة التخزين، وخاصة لتنفيذ عمليات أكثر تعقيدا، مثل نسخ أو نقل ملف، أو تسرد كل الملفات المتوفرة في إشارة.

من المهم أن نلاحظ أن هذه الطلبات تستخدم جوجل سحابة التخزين خيارات التحكم في الوصول ، بدلا من مصادقة Firebase وقواعد الأمن سحابة التخزين.

واجهات برمجة التطبيقات

بالإضافة إلى مجموعات Firebase SDK للتخزين السحابي ، هناك عدد من الطرق الأخرى للوصول إلى البيانات المخزنة في حاوية التخزين السحابي ، اعتمادًا على ما تريد القيام به. إذا كنت الوصول إلى البيانات في الخادم، ونحن نقدم المكتبات جانب الخادم، فضلا عن JSON متوافق وS3 XML API مريحة، أو إذا كنت بحاجة إلى تغيير السيناريو أو أداء مهام إدارية أخرى، لدينا أداة سطر الأوامر التي سيكون في متناول يدي.

حزم SDK لخادم Google Cloud

تقدم Google Cloud مجموعات SDK للخوادم عالية الجودة لعدد من المنتجات السحابية ، بما في ذلك التخزين السحابي. هي هذه المكتبات المتاحة في نود.جي إس ، جافا ، تذهب ، بيثون ، 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) {});
    

جافا

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

بي أتش بي

    // 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 المفضلة التي كنت تفضل استخدام جوجل سحابة التخزين العروض واجهات برمجة التطبيقات لكل من JSON و XML .

وبالإضافة إلى هذه واجهات برمجة التطبيقات الوصول إلى البيانات والتخزين، لإدارة دلاء سحابة التخزين لاستخدامها في مشاريع Firebase، يمكنك استخدام التخزين السحابية لFirebase API .

gsutil

gsutil هو أداة سطر الأوامر الذي يتيح لك الوصول مباشرة إلى سحابة التخزين. يمكنك استخدام gsutil للقيام مجموعة واسعة من دلو وإدارة الكائن المهام، بما في ذلك:

  • تحميل وتحميل وحذف الأشياء.
  • سرد الدلاء والأشياء.
  • نقل الكائنات ونسخها وإعادة تسميتها.
  • تحرير كائن ودلو ACLs.

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 هي خدمة متعددة المستأجرين ، مما يعني أن المستخدمين يشاركون نفس مجموعة الموارد الأساسية. من أجل تحقيق أقصى استفادة من هذه الموارد المشتركة ، تتمتع الحاويات بسعة إدخال / إخراج أولية.

أثناء التخطيط لدمج Cloud Storage for Firebase في تطبيقك ، فكر في الحد الأدنى لمعدل الطلب الذي يحتاجه تطبيقك للحصول على أداء جيد ، وفي تقديم الطلبات بكفاءة. استعراض المبادئ التوجيهية بشأن معدلات الطلب ، وخصوصا تكثف معدلات الطلب .

إصدار الكائن

هل سبق لك أن حذفت شيئًا عن طريق الصدفة ولم يكن لديك نسخة احتياطية؟ يدعم جوجل سحابة التخزين كائن الإصدار ، الذي يوفر طريقة تلقائية لإجراء نسخ البيانات الخاصة بك، واستعادة من تلك النسخ الاحتياطي. يمكنك تمكين كائن الإصدار باستخدام gsutil versioning set الأوامر:

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

يختار Cloud Storage دائمًا أحدث إصدار ، لذلك إذا كنت ترغب في استعادة كائن ، فأنت بحاجة إلى استخدام إحدى واجهات برمجة التطبيقات أو الأدوات الأخرى أعلاه لتعيين الكائن المطلوب باعتباره الأحدث.

إدارة دورة حياة الكائن

تعد القدرة على أرشفة الملفات القديمة أو حذفها تلقائيًا ميزة مفيدة للعديد من التطبيقات. لحسن الحظ، توفر Google سحابة التخزين كائن إدارة دورة حياة ، والذي يسمح لك لحذف أو الأشياء أرشيف بعد فترة معينة من الزمن.

ضع في اعتبارك تطبيق مشاركة الصور الذي تريد حذف جميع الصور في غضون يوم واحد. يمكنك إعداد سياسة دورة حياة الكائن على النحو التالي:

// 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 للتخزين السحابي مجموعة التطبيقات الافتراضية App Engine ، مما يعني أنه إذا قمت بإنشاء تطبيق App Engine ، يمكنك استخدام واجهات برمجة تطبيقات App Engine المضمنة لمشاركة البيانات بين Firebase و App Engine. هذا مفيد لإجراء تشفير الصوت وتحويل ترميز الفيديو وتحويلات الصور ، بالإضافة إلى معالجة الخلفية المكثفة للحسابات الأخرى.

جافا، بيثون، وتذهب البيئات النموذجية تشمل لمحرك التطبيقات التطبيق محرك الصور API ( جافا ، بيثون ، والتي يمكن تغيير الحجم، تدوير، والوجه، واقتصاص صورة، وكذلك إرجاع URL تخدم الصورة التي تسمح للتحولات جانب العميل ، على غرار Cloudinary و Imgix.

عند استيراد مشروع جوجل الغيمة الموجودة في 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 Engine Datastore Master / Slave سابق.
  2. ويتكون المشروع من نطاق مسبوقة هوية المشروع، على سبيل المثال: domain.com:project-1234 .

في أي من هاتين الحالتين ، لن يدعم المشروع Cloud Storage for Firebase ، ويجب عليك إنشاء مشروع Firebase جديد من أجل استخدام Cloud Storage. دعم الاتصال حتى نتمكن من مساعدتك.

وظائف Google Cloud (تجريبي)

وظائف جوجل الغيمة هي خفيفة الوزن، والحدث القائم، غير متزامن حل حساب الذي يسمح لك لخلق صغيرة، ذات الغرض الواحد الوظائف التي تستجيب للأحداث دون الحاجة إلى إدارة الخادم أو بيئة وقت التشغيل. يمكن استخدام هذه الوظائف لتحويل ترميز الفيديو أو تصنيف الصور باستخدام التعلم الآلي أو مزامنة البيانات الوصفية مع قاعدة بيانات Firebase Realtime. مع وجود عبء أقل من App Engine ، فإن وظائف السحابة هي أسرع طريقة للتفاعل مع التغييرات في التخزين السحابي.

واجهة برمجة تطبيقات Google Cloud Vision

و جوجل الغيمة الرؤية API يتيح للمطورين لفهم المحتوى من صورة عن طريق التغليف آلة قوية نماذج التعلم في وسيلة سهلة لاستخدام API. يقوم بتصنيف الصور بسرعة إلى آلاف الفئات ، ويكشف عن الأشياء والوجوه الفردية داخل الصور ، ويعثر على الكلمات المطبوعة الموجودة في الصور ويقرأها ، ويحدد المحتوى المسيء ، بل ويوفر أيضًا تحليلًا لمشاعر الصور.

واجهة برمجة تطبيقات Google Cloud Speech

على غرار API الرؤية، و جوجل الغيمة الكلام API يتيح للمطورين لاستخراج النص من ملف صوتي المخزنة في سحابة التخزين. تتعرف واجهة برمجة التطبيقات على أكثر من 80 لغة ومتغيرًا ، لدعم قاعدة المستخدمين العالمية الخاصة بك. عندما يقترن API جوجل الغيمة اللغة الطبيعية ، يمكن للمطورين على حد سواء استخراج النص الخام ومعنى يستنتج من ذلك النص. وإذا كنت بحاجة لجمهور عالمي، زوجان هذا مع جوجل ترجمة API لترجمة النص إلى 90+ اللغات.