Начало работы с Cloud Storage в веб-приложениях

Cloud Storage for Firebase позволяет загружать и публиковать контент, например изображения, аудио, видео и другие файлы (в том числе пользовательский контент), чтобы вы могли добавлять в свои приложения мультимедийные материалы. Ваши данные хранятся в сегменте Google Cloud Storage – решении для хранения объектов в масштабе эксабайта с высокой доступностью и глобальным резервированием. Cloud Storage for Firebase позволяет безопасно загружать эти файлы непосредственно с мобильных устройств и веб-браузеров, легко справляясь с нестабильными сетями.

Подготовка

  1. Если вы ещё этого не сделали, ознакомьтесь с руководством по началу работы с веб-приложениями. например:

    • Как создать проект Firebase.

    • Зарегистрируйте веб-приложение в проекте и подключите его к Firebase, добавив Firebase JS SDK и объект конфигурации Firebase в приложение.

  2. Убедитесь, что для проекта Firebase выбран тарифный план Blaze с оплатой по мере использования. Это необходимо для работы с Cloud Storage for Firebase. Если вы раньше не работали с Firebase и Google Cloud, проверьте, можете ли вы получить бонус в размере 300 долларов США на бесплатную пробную версию.

Создать сегмент Cloud Storage по умолчанию

  1. В консоли Firebase выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище).

    Если в вашем проекте не используется тарифный план Blaze с оплатой по мере использования, вам будет предложено перейти на него.

  2. Нажмите Начать.

  3. Выберите местоположение для сегмента по умолчанию.

  4. Настройте Firebase Security Rules для сегмента по умолчанию. На этапе разработки рекомендуем настроить правила для общего доступа.

  5. Нажмите Готово.

Теперь вы можете посмотреть сегмент в консоли Firebase (выберите Databases & Storage (Базы данных и хранилище) > Storage (Хранилище) > вкладка Files (Файлы)). Формат названия сегмента по умолчанию: PROJECT_ID.firebasestorage.app.

Как настроить общий доступ

Cloud Storage for Firebase предоставляет декларативный язык правил, который позволяет определить, как должны быть структурированы и проиндексированы ваши данные, а также когда их можно читать и записывать. По умолчанию доступ на чтение и запись в Cloud Storage ограничен, поэтому читать и записывать данные могут только аутентифицированные пользователи. Чтобы начать работу без настройки Authentication, вы можете настроить правила для общего доступа.

В этом случае Cloud Storage будет доступен всем, даже тем, кто не пользуется вашим приложением. Поэтому не забудьте снова ограничить доступ к Cloud Storage, когда настроите аутентификацию.

Добавьте Cloud Storage JS SDK и инициализируйте Cloud Storage

При инициализации JavaScript SDK необходимо указать название сегмента Cloud Storage.

Название сегмента Cloud Storage можно найти в консоли Firebase (перейдите в раздел Databases & Storage (Базы данных и хранилище) > Storage (Хранилище) > вкладка Files (Файлы)). В зависимости от того, когда вы создали сегмент по умолчанию, его название будет иметь один из следующих форматов:

  • PROJECT_ID.firebasestorage.app (сегмент по умолчанию создан не ранее сентября 2024 г.)
  • PROJECT_ID.appspot.com (устаревший сегмент по умолчанию, созданный до сентября 2024 г.)

Инициализируйте SDK с помощью следующего фрагмента кода:

Web

import { initializeApp } from "firebase/app";
import { getStorage } from "firebase/storage";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
  storageBucket: 'BUCKET_NAME'
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Cloud Storage and get a reference to the service
const storage = getStorage(app);

Web

import firebase from "firebase/app";
import "firebase/compat/storage";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://firebase.google.com/docs/web/learn-more#config-object
const firebaseConfig = {
  // ...
  storageBucket: 'BUCKET_NAME'
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Cloud Storage and get a reference to the service
const storage = firebase.storage();

Теперь вы можете использовать Cloud Storage.

Что дальше? Подробнее о том, как создать цифровой отпечаток для Cloud Storage…

Расширенная настройка

В некоторых случаях требуется дополнительная настройка:

Первый вариант идеально подходит, если у вас есть пользователи по всему миру и вы хотите хранить их данные рядом с ними. Например, вы можете создать сегменты в США, Европе и Азии для хранения данных пользователей в этих регионах, чтобы сократить задержку.

Второй вариант использования полезен, если у вас есть данные с разными шаблонами доступа. Например, вы можете настроить мультирегиональный или региональный сегмент для хранения изображений или другого часто используемого контента, а также сегмент Nearline или Coldline для хранения резервных копий пользователей или другого редко используемого контента.

В обоих случаях вам потребуется использовать несколько сегментов Cloud Storage.

Третий вариант подходит, если вы создаете приложение, например Google Диск, в котором пользователи могут входить в несколько аккаунтов (например, личный и рабочий). Для аутентификации каждого дополнительного аккаунта можно использовать собственный экземпляр приложения Firebase.

Использование нескольких сегментов Cloud Storage

Если вы хотите использовать сегмент Cloud Storage, отличный от сегмента по умолчанию, описанного ранее в этом руководстве, или использовать несколько сегментов Cloud Storage в одном приложении, вы можете создать экземпляр firebase.storage, который ссылается на ваш собственный сегмент:

Web

import { getApp } from "firebase/app";
import { getStorage } from "firebase/storage";

// Get a non-default Storage bucket
const firebaseApp = getApp();
const storage = getStorage(firebaseApp, "gs://my-custom-bucket");

Web

// Get a non-default Storage bucket
var storage = firebase.app().storage("gs://my-custom-bucket");

Работа с импортированными сегментами

При импорте существующего сегмента Cloud Storage в Firebase вам нужно будет предоставить Firebase доступ к этим файлам с помощью инструмента gsutil, включенного в Google Cloud SDK:

gsutil -m acl ch -r -u service-PROJECT_NUMBER@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://BUCKET_NAME

Номер проекта можно найти, как описано в статье о проектах Firebase.

Это не влияет на новые сегменты, так как для них по умолчанию разрешен доступ Firebase. Это временная мера. В будущем все будет выполняться автоматически.

Использовать собственное приложение Firebase

Если вы создаете более сложное приложение с помощью пользовательского firebase.app.App, вы можете создать экземпляр firebase.storage.Storage, инициализированный с этим приложением:

Web

import { getStorage } from "firebase/storage";

// Get the default bucket from a custom firebase.app.App
const storage1 = getStorage(customApp);

// Get a non-default bucket from a custom firebase.app.App
const storage2 = getStorage(customApp, "gs://my-custom-bucket");

Web

// Get the default bucket from a custom firebase.app.App
var storage = customApp.storage();

// Get a non-default bucket from a custom firebase.app.App
var storage = customApp.storage("gs://my-custom-bucket");

Дальнейшие действия