Catch up on everthing we announced at this year's Firebase Summit. Learn more

Интегрируйте с Google Cloud

Облако хранения для Firebase тесно интегрирован с Google Cloud . Firebase SDKs для хранения файлов Облака хранения непосредственно в ковшах Google Cloud Storage , и как ваше приложение растет, вы можете легко интегрировать другие сервисы Google Cloud, такие как управляемые вычисления , как App Engine или облачные функции, или машинное обучение API , как Cloud Видение или Google Перевести.

Firebase использует учетные записи службы Google Cloud для работы и управления службами без предоставления учетных данных пользователей. При создании проекта Firebase , который использует Cloud Storage, вы можете заметить , что соответствующая учетная запись службы уже имеется в вашем проекте: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Смотрите эту инструкцию поддержки Firebase для получения дополнительной информации.

Под капотом Firebase SDKs для Cloud Storage использовать ведро по умолчанию в App Engine свободного уровня. Это позволяет быстро приступить к работе с облачным хранилищем без необходимости вводить кредитную карту или включать учетную запись Cloud Billing. Он также позволяет легко обмениваться данными между Firebase и проектом Google Cloud.

Для интеграции с Google Cloud, включая импорт существующих сегментов Cloud Storage, требуется проект Firebase в плане Blaze. Узнайте больше о планах на нашей ценовой странице .

Облачное хранилище Google

Вы можете использовать Google Cloud API - интерфейсы для хранения к файлам доступа загруженных через Firebase SDKs для Cloud Storage, особенно для выполнения более сложных операций, таких как копирование или перемещения файла или списка всех файлов , доступных в качестве ссылки.

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

API

Помимо пакетов SDK Firebase для облачного хранилища, существует ряд других способов доступа к данным, хранящимся в вашей корзине облачного хранилища, в зависимости от того, что вы хотите сделать. Если доступ к данным на сервере, мы предлагаем стороны сервер библиотеку, а также JSON и S3 совместимого XML RESTful API, или если вам нужно изменение сценария или выполнять другие административные задачи, мы получили инструмент командной строки, пригодится.

SDK для Google Cloud server

Google Cloud предлагает высококачественные серверные SDK для ряда облачных продуктов, включая Cloud Storage. Эти библиотеки доступны в Node.js , Java , идти , 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');
    

Рубин

    # 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, вы можете использовать облачное хранилище для 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 - это мультитенантная служба, что означает, что пользователи совместно используют один и тот же набор базовых ресурсов. Чтобы максимально использовать эти общие ресурсы, у сегментов есть начальная емкость ввода-вывода.

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

Управление версиями объектов

Вы когда-нибудь удаляли что-то случайно, и у вас не было резервной копии? Поддерживает Google Cloud Storage Object Versioning , который обеспечивает автоматический способ сохранить данные и восстановить из этих резервных копий. Вы можете включить объект 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 для облачного хранилища используется сегмент App Engine по умолчанию. Это означает, что если вы создаете приложение App Engine, вы можете использовать встроенные API-интерфейсы App Engine для обмена данными между Firebase и App Engine. Это полезно для выполнения кодирования звука, перекодирования видео и преобразования изображений, а также для другой фоновой обработки с интенсивными вычислениями.

В Java, Python, и идут стандартные среды для App Engine включают изображения API App Engine ( Java , Python , который может изменить размер, поворот, зеркальное отражение и обрезать изображения, а также возвращать выступающую URL изображения , который позволяет для клиентских преобразований , аналогично Cloudinary и Imgix.

При импорте существующего проекта Google Cloud в Firebase, если вы хотите , чтобы объекты доступны в Firebase любой существующий App Engine, вам необходимо установить контроль доступа по умолчанию на ваших объектах , чтобы 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 Master / Slave.
  2. Проект имеет домен приставки идентификатора проекта, например: domain.com:project-1234 .

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

Облачные функции Google (бета)

Google Облако функция представляет собой легкое, основанные на события, асинхронное вычисления решения , которое позволяет создавать небольшие, функции одного назначения , которые реагируют на события без необходимости управления сервером или среды выполнения. Эти функции можно использовать для перекодирования видео, классификации изображений с помощью машинного обучения или синхронизации метаданных с базой данных Firebase Realtime. Обладая даже меньшими накладными расходами, чем App Engine, Cloud Functions - самый быстрый способ реагировать на изменения в облачном хранилище.

API Google Cloud Vision

Google Cloud Зрение API позволяет разработчикам понять содержание изображения инкапсулируя мощные машинное обучение модели в удобном для использования API. Он быстро классифицирует изображения по тысячам категорий, обнаруживает отдельные объекты и лица в изображениях, находит и считывает напечатанные слова, содержащиеся в изображениях, идентифицирует оскорбительный контент и даже обеспечивает анализ тональности изображения.

Google Cloud Speech API

Подобно API видения, Google Cloud Speech API позволяет разработчикам извлекать текст из звукового файла , хранящегося в Cloud Storage. API распознает более 80 языков и вариантов для поддержки вашей глобальной пользовательской базы. В сочетании с API Google Cloud Natural Language , разработчики могут как экстракт сырой текст и делать вывод о том , что смысл текста. И если требуется глобальная аудитория, пара это с помощью Google Translate API для перевода текста на 90+ языках.