Google 致力于为黑人社区推动种族平等。查看具体举措
Эта страница переведена с помощью Cloud Translation API.
Switch to English

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

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

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

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

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

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

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

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

API

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

SDK для Google Cloud server

Google Cloud предлагает высококачественные серверные SDK для ряда облачных продуктов, включая Cloud Storage. Эти библиотеки доступны в Node.js , Java , go , 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 доступа к данным хранилища, чтобы управлять сегментами облачного хранилища для использования в проектах Firebase, вы можете использовать Cloud Storage for Firebase API .

gsutil

gsutil - это инструмент командной строки, который дает вам прямой доступ к облачному хранилищу. Вы можете использовать gsutil для выполнения широкого круга задач по управлению 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 поддерживает управление версиями объектов , что обеспечивает автоматический способ резервного копирования данных и восстановления из этих резервных копий. Вы можете включить управление версиями объектов с помощью команды 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 и go для App Engine включают API изображений App Engine ( 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:

  1. Проект содержит бывшее приложение App Engine Datastore Master / Slave.
  2. У проекта есть идентификатор проекта с префиксом домена, например: domain.com:project-1234 .

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

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

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

API Google Cloud Vision

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

Google Cloud Speech API

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