Firebase از حسابهای سرویس Google Cloud برای کار و مدیریت سرویسها بدون اشتراکگذاری اطلاعات کاربری استفاده میکند. وقتی یک پروژه Firebase ایجاد میکنید که از Cloud Storage استفاده میکند، ممکن است متوجه شوید که یک حساب سرویس مربوطه از قبل در پروژه شما موجود است: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com
. برای اطلاعات بیشتر به این راهنمای پشتیبانی Firebase مراجعه کنید.
زیر کاپوت، SDKهای Firebase برای Cloud Storage از سطل پیشفرض در ردیف بدون هزینه App Engine استفاده میکنند. این به شما امکان میدهد بدون نیاز به قرار دادن کارت اعتباری یا فعال کردن حساب Cloud Billing به سرعت با Cloud Storage راهاندازی کنید. همچنین به شما امکان می دهد به راحتی داده ها را بین Firebase و پروژه Google Cloud به اشتراک بگذارید.
ادغام با Google Cloud ، از جمله وارد کردن سطلهای Cloud Storage موجود، به یک پروژه Firebase در طرح Blaze نیاز دارد. در صفحه قیمت ما درباره طرح ها بیشتر بدانید.
Google Cloud Storage
میتوانید از Google Cloud Storage API برای دسترسی به فایلهای آپلود شده از طریق Firebase SDKs برای Cloud Storage استفاده کنید، بهویژه برای انجام عملیات پیچیدهتر، مانند کپی کردن یا انتقال یک فایل، یا فهرست کردن همه فایلهای موجود در یک مرجع.
توجه به این نکته مهم است که این درخواستها از گزینههای کنترل دسترسی Google Cloud Storage به جای Firebase Authentication و Cloud Storage Security Rules استفاده میکنند.
API ها
علاوه بر SDK های Firebase برای Cloud Storage ، بسته به کاری که می خواهید انجام دهید، روش های دیگری نیز برای دسترسی به داده های ذخیره شده در سطل Cloud Storage شما وجود دارد. اگر به دادهها روی سرور دسترسی دارید، کتابخانههای سمت سرور و همچنین یک API XML
RESTful سازگار با JSON
و S3 را ارائه میدهیم، یا اگر نیاز به تغییرات اسکریپت یا انجام سایر وظایف اداری دارید، یک ابزار خط فرمان داریم که به کار خواهد آمد.
SDK سرور Google Cloud
Google Cloud SDKهای سرور با کیفیت بالا را برای تعدادی از محصولات ابری از جمله Cloud Storage ارائه میکند. این کتابخانه ها در 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 for 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
App Engine یک "پلتفرم به عنوان سرویس" است که به طور خودکار منطق باطن را در پاسخ به میزان ترافیکی که دریافت می کند، مقیاس می کند. فقط کد پشتیبان خود را آپلود کنید و Google در دسترس بودن برنامه شما را مدیریت خواهد کرد. هیچ سروری برای تهیه یا نگهداری شما وجود ندارد. App Engine یک راه سریع و آسان برای افزودن قدرت پردازش اضافی یا اجرای قابل اعتماد به برنامه Firebase شما است.
SDKهای Firebase برای Cloud Storage از سطل پیشفرض 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 for Firebase پشتیبانی نمیکند، و برای استفاده از Cloud Storage باید یک پروژه Firebase جدید ایجاد کنید. با پشتیبانی تماس بگیرید تا بتوانیم به شما کمک کنیم.
توابع Google Cloud (بتا)
Google Cloud Functions یک راه حل محاسباتی ناهمزمان و سبک وزن مبتنی بر رویداد است که به شما امکان می دهد عملکردهای کوچک و تک منظوره ای ایجاد کنید که بدون نیاز به مدیریت سرور یا محیط زمان اجرا به رویدادها پاسخ می دهند. این توابع را می توان برای رمزگذاری ویدیو، طبقه بندی تصاویر با استفاده از یادگیری ماشینی، یا همگام سازی ابرداده با Firebase Realtime Database استفاده کرد. با سربار حتی کمتر از App Engine ، توابع ابری سریعترین راه برای واکنش به تغییرات در 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 Translate API همراه کنید تا متن را به بیش از 90 زبان ترجمه کنید.