يستخدم Firebase حسابات خدمة Google Cloud لتشغيل الخدمات وإدارتها دون مشاركة بيانات اعتماد المستخدم. عند إنشاء مشروع Firebase يستخدم Cloud Storage ، قد تلاحظ أن حساب الخدمة المقابل متاح بالفعل في مشروعك: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com
. راجع دليل دعم Firebase للحصول على مزيد من المعلومات.
تحت الغطاء ، تستخدم حزم Firebase SDK للتخزين السحابي الحاوية الافتراضية في الطبقة بدون تكلفة في App Engine . يتيح لك ذلك الاستعداد والتشغيل بسرعة مع Cloud Storage ، دون الحاجة إلى وضع بطاقة ائتمان أو تمكين حساب Cloud Billing. كما يتيح لك مشاركة البيانات بسهولة بين Firebase ومشروع Google Cloud.
يتطلب التكامل مع Google Cloud ، بما في ذلك استيراد حاويات التخزين السحابي الحالية ، مشروع Firebase في خطة Blaze. تعرف على المزيد حول الخطط على صفحة التسعير الخاصة بنا.
جوجل كلاود التخزين
يمكنك استخدام Google Cloud Storage APIs للوصول إلى الملفات التي تم تحميلها عبر Firebase SDKs للتخزين السحابي ، خاصة لأداء عمليات أكثر تعقيدًا ، مثل نسخ ملف أو نقله ، أو سرد جميع الملفات المتاحة في مرجع.
من المهم ملاحظة أن هذه الطلبات تستخدم خيارات التحكم في الوصول إلى Google Cloud Storage ، بدلاً من مصادقة Firebase وقواعد أمان التخزين السحابي.
واجهات برمجة التطبيقات
بالإضافة إلى مجموعات Firebase SDK للتخزين السحابي ، هناك عدد من الطرق الأخرى للوصول إلى البيانات المخزنة في حاوية التخزين السحابي ، اعتمادًا على ما تريد القيام به. إذا كنت تقوم بالوصول إلى البيانات على خادم ، فنحن نقدم مكتبات على جانب الخادم ، بالإضافة إلى واجهة برمجة تطبيقات XML
RESTful متوافقة مع JSON
و S3 ، أو إذا كنت بحاجة إلى إجراء تغييرات نصية أو تنفيذ مهام إدارية أخرى ، فلدينا أداة سطر أوامر سيكون في متناول يدي.
حزم SDK لخادم Google Cloud
تقدم Google Cloud مجموعات SDK للخوادم عالية الجودة لعدد من المنتجات السحابية ، بما في ذلك التخزين السحابي. هذه المكتبات متاحة في 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) {});
جافا
// 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 مفضل تفضل استخدامه ، فإن Google Cloud Storage يقدم واجهات برمجة تطبيقات لكل من JSON و XML .
بالإضافة إلى واجهات برمجة التطبيقات للوصول إلى بيانات التخزين ، لإدارة حاويات التخزين السحابي للاستخدام في مشاريع Firebase ، يمكنك استخدام Cloud Storage for 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 في تطبيقك ، فكر في الحد الأدنى لمعدل الطلب الذي يحتاجه تطبيقك للحصول على أداء جيد ، وفي تقديم الطلبات بكفاءة. راجع الإرشادات حول معدلات الطلب ، وخاصة زيادة معدلات الطلب .
إصدار الكائن
هل سبق لك أن حذفت شيئًا عن طريق الصدفة ولم يكن لديك نسخة احتياطية؟ يدعم Google Cloud Storage ميزة Object Versioning ، والتي توفر طريقة تلقائية لنسخ بياناتك احتياطيًا واستعادتها من تلك النسخ الاحتياطية. يمكنك تمكين تعيين إصدار الكائن باستخدام الأمر 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 عبارة عن "نظام أساسي كخدمة" يعمل تلقائيًا على توسيع نطاق منطق الواجهة الخلفية استجابةً لكمية حركة المرور التي يتلقاها. ما عليك سوى تحميل رمز الواجهة الخلفية وسيتولى Google إدارة مدى توفر التطبيق الخاص بك ؛ لا توجد خوادم يمكنك توفيرها أو صيانتها. يعد App Engine طريقة سريعة وسهلة لإضافة قوة معالجة إضافية أو تنفيذ موثوق إلى تطبيق Firebase.
تستخدم حزم Firebase SDK للتخزين السحابي مجموعة التطبيقات الافتراضية App Engine ، مما يعني أنه إذا قمت بإنشاء تطبيق App Engine ، يمكنك استخدام واجهات برمجة تطبيقات App Engine المضمنة لمشاركة البيانات بين Firebase و App Engine. هذا مفيد لإجراء تشفير الصوت وتحويل ترميز الفيديو وتحويلات الصور ، بالإضافة إلى معالجة الخلفية المكثفة للحسابات الأخرى.
تتضمن بيئات Java و Python و Go Standard لـ App Engine واجهة برمجة تطبيقات App Engine Images ( 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:
- يحتوي المشروع على تطبيق App Engine Datastore Master / Slave سابق.
- يحتوي المشروع على مجال معرف مشروع مسبوق ، على سبيل المثال:
domain.com:project-1234
.
في أي من هاتين الحالتين ، لن يدعم المشروع Cloud Storage for Firebase ، ويجب عليك إنشاء مشروع Firebase جديد من أجل استخدام Cloud Storage. اتصل بالدعم حتى نتمكن من مساعدتك.
وظائف Google Cloud (تجريبي)
Google Cloud Functions هو حل حسابي خفيف الوزن قائم على الأحداث وغير متزامن يسمح لك بإنشاء وظائف صغيرة ذات غرض واحد تستجيب للأحداث دون الحاجة إلى إدارة خادم أو بيئة وقت تشغيل. يمكن استخدام هذه الوظائف لتحويل ترميز الفيديو أو تصنيف الصور باستخدام التعلم الآلي أو مزامنة البيانات الوصفية مع قاعدة بيانات Firebase Realtime. مع وجود عبء أقل من App Engine ، فإن وظائف السحابة هي أسرع طريقة للتفاعل مع التغييرات في التخزين السحابي.
واجهة برمجة تطبيقات Google Cloud Vision
تُمكِّن Google Cloud Vision API المطورين من فهم محتوى الصورة عن طريق تغليف نماذج التعلم الآلي القوية في واجهة برمجة تطبيقات سهلة الاستخدام. يقوم بتصنيف الصور بسرعة إلى آلاف الفئات ، ويكشف عن الأشياء والوجوه الفردية داخل الصور ، ويعثر على الكلمات المطبوعة الموجودة في الصور ويقرأها ، ويحدد المحتوى المسيء ، بل ويوفر أيضًا تحليلًا لمشاعر الصور.
واجهة برمجة تطبيقات Google Cloud Speech
على غرار Vision API ، تتيح Google Cloud Speech API للمطورين استخراج نص من ملف صوتي مخزن في Cloud Storage. تتعرف واجهة برمجة التطبيقات على أكثر من 80 لغة ومتغيرًا ، لدعم قاعدة المستخدمين العالمية الخاصة بك. عند دمجها مع Google Cloud Natural Language API ، يمكن للمطورين استخراج النص الخام واستنتاج المعنى الخاص بهذا النص. وإذا كان الجمهور العالمي مطلوبًا ، فقم بإقران ذلك بواجهة برمجة تطبيقات Google للترجمة لترجمة النص إلى أكثر من 90 لغة.