الدمج مع Google Cloud

تم دمج Cloud Storage for Firebase بإحكام مع Google Cloud حِزم تطوير البرامج (SDK) التي يبلغ عددها Firebase للنطاق Cloud Storage تخزين الملفات مباشرة في Google Cloud Storage مجموعات بيانات ومع نمو تطبيقك، يمكنك بسهولة دمج خدمات Google Cloud الأخرى، مثل عملية حوسبة مُدارة مثل App Engine أو Cloud Functions أو التعليمية مثل 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 للوصول إلى الملفات التي تم تحميلها من خلال حِزم تطوير البرامج (SDK) Firebase الخاصة بـ Cloud Storage، خاصةً إذا كنت لإجراء عمليات أكثر تعقيدًا، مثل نسخ ملف أو نقله أو إدراج كل الملفات المتوفرة كمرجع.

من المهم الإشارة إلى أنّ هذه الطلبات تستخدم السمة Google Cloud Storage خيارات التحكم في الوصول، بدلاً من Firebase Authentication وCloud Storage Security Rules.

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

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

Google Cloud حزمة SDK للخادم

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

جافا

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

لغة 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

وإذا كنت تستخدم لغة بدون مكتبة برامج، تريد أن تفعل شيئًا لا تقوم به مكتبات العميل، أو يكون لديك عميل HTTP مفضل لديك أفضّل استخدامهما، يقدّم Google Cloud Storage واجهات برمجة تطبيقات لكليهما JSON XML.

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

إدارة مراحل نشاط العناصر

إمكانية أرشفة الملفات القديمة أو حذفها تلقائيًا الميزة للعديد من التطبيقات. لحسن الحظ، يوفر 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

"App Engine" هي "منصة كخدمة" يعمل على توسيع نطاق الخلفية تلقائيًا استجابة لحجم حركة البيانات التي يتلقاها. ما عليك سوى تحميل الخلفية الرمز وستتولّى Google إدارة مدى توفُّر تطبيقك لا توجد خوادم توفيره أو الحفاظ عليه App Engine هي طريقة سريعة وسهلة لإضافة قوة معالجة إضافية أو تنفيذ موثوق به لتطبيقك في Firebase.

تستخدِم حِزم تطوير البرامج (SDK) "Firebase" للنطاق Cloud Storage الحزمة التلقائية "App Engine"، ما يعني أنّه إذا أنشأت تطبيق App Engine، يمكنك استخدام تطبيق App Engine المدمَج واجهات برمجة التطبيقات المستخدمة لمشاركة البيانات بين Firebase وApp Engine. هذا مفيد وإجراء ترميز الصوت وتحويل ترميز الفيديو وتحويل الصور كأي معالجة حوسبة مكثفة أخرى في الخلفية.

لغة Java وPython وGo البيئات العادية لـ 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 التطبيق.
  2. يحتوي المشروع على رقم تعريف مشروع يبدأ ببادئة النطاق، مثل: domain.com:project-1234

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

Google Cloud Functions (إصدار تجريبي)

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

Google Cloud Vision API

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

Google Cloud Speech API

وعلى غرار Vision API، Google Cloud Speech API على المطوّرين استخراج نص من ملف صوتي مخزَّن في Cloud Storage. تتعرّف واجهة برمجة التطبيقات على أكثر من 80 لغة ومتغيرًا، وذلك لدعم المستخدمين على مستوى العالم. الأساسية. عند الدمج مع Google Cloud Natural Language API، حيث يستطيع المطوّرون استخراج النص الأولي واستنتاج معانيه. وإذا كانت هناك حاجة إلى جمهور عالمي، يمكنك إقران ذلك Google Translate API لترجمة البيانات النص إلى أكثر من 90 لغة.