Firebase از حسابهای سرویس Google Cloud برای کار و مدیریت سرویسها بدون اشتراکگذاری اطلاعات کاربری استفاده میکند. وقتی یک پروژه Firebase ایجاد میکنید که از فضای ذخیرهسازی ابری استفاده میکند، ممکن است متوجه شوید که یک حساب سرویس مربوطه از قبل در پروژه شما موجود است: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com
. برای اطلاعات بیشتر به این راهنمای پشتیبانی Firebase مراجعه کنید.
زیر کاپوت، SDKهای Firebase برای فضای ذخیرهسازی ابری از سطل پیشفرض در ردیف بدون هزینه App Engine استفاده میکنند. این به شما امکان می دهد بدون نیاز به قرار دادن کارت اعتباری یا فعال کردن حساب Cloud Billing، به سرعت با Cloud Storage راه اندازی کنید. همچنین به شما امکان می دهد به راحتی داده ها را بین Firebase و پروژه Google Cloud به اشتراک بگذارید.
ادغام با Google Cloud، از جمله وارد کردن سطلهای ذخیرهسازی ابری موجود، به یک پروژه Firebase در طرح Blaze نیاز دارد. در صفحه قیمت ما درباره طرح ها بیشتر بدانید.
Google Cloud Storage
میتوانید از APIهای Google Cloud Storage برای دسترسی به فایلهای آپلود شده از طریق Firebase SDK برای فضای ذخیرهسازی ابری استفاده کنید، بهویژه برای انجام عملیات پیچیدهتر، مانند کپی کردن یا انتقال یک فایل، یا فهرست کردن همه فایلهای موجود در یک مرجع.
توجه به این نکته مهم است که این درخواستها از گزینههای کنترل دسترسی Google Cloud Storage به جای احراز هویت Firebase و قوانین امنیتی Cloud Storage استفاده میکنند.
API ها
علاوه بر SDK های Firebase برای فضای ذخیره سازی ابری، بسته به کاری که می خواهید انجام دهید، چندین راه دیگر برای دسترسی به داده های ذخیره شده در سطل فضای ذخیره سازی ابری شما وجود دارد. اگر به دادهها روی سرور دسترسی دارید، کتابخانههای سمت سرور و همچنین یک API 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()
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 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 برای 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 مدیریت چرخه زندگی اشیاء را ارائه می دهد که به شما امکان می دهد اشیاء را پس از مدت زمان مشخصی حذف یا بایگانی کنید.
یک برنامه به اشتراک گذاری عکس را در نظر بگیرید که می خواهید همه عکس ها ظرف یک روز حذف شوند. شما می توانید یک خط مشی چرخه حیات شی را به صورت زیر تنظیم کنید:
// 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 بسازید، میتوانید از APIهای App Engine داخلی برای اشتراکگذاری دادهها بین Firebase و App Engine استفاده کنید. این برای انجام رمزگذاری صدا، رمزگذاری ویدئو، و تبدیل تصویر، و همچنین سایر پردازش های پس زمینه فشرده محاسباتی مفید است.
محیطهای استاندارد Java، Python و go برای App Engine شامل App Engine Images API ( جاوا ، پایتون است که میتواند یک تصویر را تغییر اندازه، بچرخاند، بچرخاند، و برش دهد، و همچنین URL سرویس دهنده تصویر را برگرداند که امکان تبدیل سمت مشتری را فراهم میکند. ، شبیه به کلودیناری و ایمجیکس است.
هنگام وارد کردن یک پروژه Google Cloud موجود به Firebase، اگر میخواهید هر شیء App Engine موجود را در Firebase در دسترس قرار دهید، باید کنترل دسترسی پیشفرض را روی اشیاء خود تنظیم کنید تا با اجرای دستور زیر با استفاده از gsutil
به Firebase اجازه دسترسی به آنها را بدهد. :
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 برای Firebase پشتیبانی نمیکند و برای استفاده از Cloud Storage باید یک پروژه Firebase جدید ایجاد کنید. با پشتیبانی تماس بگیرید تا بتوانیم به شما کمک کنیم.
توابع Google Cloud (بتا)
Google Cloud Functions یک راه حل محاسباتی ناهمزمان و سبک وزن مبتنی بر رویداد است که به شما امکان می دهد عملکردهای کوچک و تک منظوره ای ایجاد کنید که بدون نیاز به مدیریت سرور یا محیط زمان اجرا به رویدادها پاسخ می دهند. این توابع را می توان برای رمزگذاری ویدیو، طبقه بندی تصاویر با استفاده از یادگیری ماشینی، یا همگام سازی ابرداده با پایگاه داده بیدرنگ Firebase استفاده کرد. با سربار حتی کمتر از App Engine، Cloud Functions سریعترین راه برای واکنش به تغییرات در فضای ذخیرهسازی ابری است.
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 Translate API همراه کنید تا متن را به بیش از 90 زبان ترجمه کنید.