Интеграция с Google Cloud

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

Проект Firebase на самом деле представляет собой просто проект Google Cloud , для которого включены дополнительные конфигурации и сервисы, специфичные для Firebase . Это означает, что каждый сегмент Cloud Storage , который вы используете с Cloud Storage for Firebase доступен в Google Cloud (включая его консоль и API).

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

Рекомендации по учетным записям служб

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

Google Cloud Storage

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

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

API

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

SDK сервера Google Cloud

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)
    }
    

Питон

    # 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}"
    

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

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

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

Вы когда-нибудь удаляли что-то случайно и не имели резервной копии? 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 или вашего собственного сервера.

Облачные функции Google (бета-версия)

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

API Google Cloud Vision

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

API облачной речи Google

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

Google App Engine

Google App Engine — это «платформа как услуга», которая автоматически масштабирует внутреннюю логику в зависимости от объема получаемого трафика. Просто загрузите свой серверный код, и Google будет управлять доступностью вашего приложения; у вас нет серверов, которые вы могли бы предоставлять или обслуживать. App Engine — это быстрый и простой способ добавить дополнительную вычислительную мощность или надежное выполнение к вашему приложению Firebase.

Если у вас есть сегмент Cloud Storage по умолчанию с форматом имени PROJECT_ID .appspot.com , он автоматически будет доступен приложению App Engine в вашем проекте. Это означает, что если вы создаете приложение App Engine , вы можете использовать встроенные API App Engine для обмена данными между этим сегментом и App Engine . Это полезно для кодирования звука, транскодирования видео и преобразования изображений, а также для другой фоновой обработки, требующей больших вычислений.

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

При импорте существующего проекта Google Cloud в Firebase, если вы хотите сделать какие-либо существующие объекты App Engine доступными в Firebase, вам необходимо установить контроль доступа по умолчанию для ваших объектов, чтобы Firebase мог получить к ним доступ, выполнив следующую команду с помощью gsutil :

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

Рекомендации по Firebase Security Rules и файлам App Engine

Если у вас есть сегмент Cloud Storage по умолчанию с форматом имени *.appspot.com , то в вашем проекте также есть приложение App Engine , которое использует этот сегмент.

Если вы настроите Firebase Security Rules для публичного (неаутентифицированного) доступа , вы также сделаете общедоступными вновь загруженные файлы App Engine .

Известные проблемы с Cloud Storage и App Engine

Известны два случая, когда вы не можете импортировать приложение App Engine :

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

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

,

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

Проект Firebase на самом деле представляет собой просто проект Google Cloud , для которого включены дополнительные конфигурации и сервисы, специфичные для Firebase . Это означает, что каждый сегмент Cloud Storage , который вы используете с Cloud Storage for Firebase доступен в Google Cloud (включая его консоль и API).

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

Рекомендации по учетным записям служб

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

Google Cloud Storage

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

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

API

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

SDK сервера Google Cloud

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)
    }
    

Питон

    # 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}"
    

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

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

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

Вы когда-нибудь удаляли что-то случайно и не имели резервной копии? 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 или вашего собственного сервера.

Облачные функции Google (бета-версия)

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

API Google Cloud Vision

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

API облачной речи Google

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

Google App Engine

Google App Engine — это «платформа как услуга», которая автоматически масштабирует внутреннюю логику в зависимости от объема получаемого трафика. Просто загрузите свой серверный код, и Google будет управлять доступностью вашего приложения; у вас нет серверов, которые вы могли бы предоставлять или обслуживать. App Engine — это быстрый и простой способ добавить дополнительную вычислительную мощность или надежное выполнение к вашему приложению Firebase.

Если у вас есть сегмент Cloud Storage по умолчанию с форматом имени PROJECT_ID .appspot.com , он автоматически будет доступен приложению App Engine в вашем проекте. Это означает, что если вы создаете приложение App Engine , вы можете использовать встроенные API App Engine для обмена данными между этим сегментом и App Engine . Это полезно для кодирования звука, транскодирования видео и преобразования изображений, а также для другой фоновой обработки с интенсивными вычислениями.

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

При импорте существующего проекта Google Cloud в Firebase, если вы хотите сделать какие-либо существующие объекты App Engine доступными в Firebase, вам необходимо установить контроль доступа по умолчанию для ваших объектов, чтобы Firebase мог получить к ним доступ, выполнив следующую команду с помощью gsutil :

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

Рекомендации по Firebase Security Rules и файлам App Engine

Если у вас есть сегмент Cloud Storage по умолчанию с форматом имени *.appspot.com , то в вашем проекте также есть приложение App Engine , которое использует этот сегмент.

Если вы настроите Firebase Security Rules для публичного (неаутентифицированного) доступа , вы также сделаете общедоступными вновь загруженные файлы App Engine .

Известные проблемы с Cloud Storage и App Engine

Известны два случая, когда вы не можете импортировать приложение App Engine :

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

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

,

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

Проект Firebase на самом деле представляет собой просто проект Google Cloud , для которого включены дополнительные конфигурации и сервисы, специфичные для Firebase . Это означает, что каждый сегмент Cloud Storage , который вы используете с Cloud Storage for Firebase доступен в Google Cloud (включая его консоль и API).

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

Рекомендации по учетным записям служб

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

Google Cloud Storage

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

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

API

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

SDK сервера Google Cloud

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)
    }
    

Питон

    # 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}"
    

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

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

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

Вы когда-нибудь удаляли что-то случайно и не имели резервной копии? 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 или вашего собственного сервера.

Облачные функции Google (бета-версия)

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

API Google Cloud Vision

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

API облачной речи Google

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

Google App Engine

Google App Engine — это «платформа как услуга», которая автоматически масштабирует внутреннюю логику в зависимости от объема получаемого трафика. Просто загрузите свой серверный код, и Google будет управлять доступностью вашего приложения; у вас нет серверов, которые вы могли бы предоставлять или обслуживать. App Engine — это быстрый и простой способ добавить дополнительную вычислительную мощность или надежное выполнение к вашему приложению Firebase.

Если у вас есть сегмент Cloud Storage по умолчанию с форматом имени PROJECT_ID .appspot.com , он автоматически будет доступен приложению App Engine в вашем проекте. Это означает, что если вы создаете приложение App Engine , вы можете использовать встроенные API App Engine для обмена данными между этим сегментом и App Engine . Это полезно для кодирования звука, транскодирования видео и преобразования изображений, а также для другой фоновой обработки с интенсивными вычислениями.

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

При импорте существующего проекта Google Cloud в Firebase, если вы хотите сделать какие-либо существующие объекты App Engine доступными в Firebase, вам необходимо установить контроль доступа по умолчанию для ваших объектов, чтобы Firebase мог получить к ним доступ, выполнив следующую команду с помощью gsutil :

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

Рекомендации по Firebase Security Rules и файлам App Engine

Если у вас есть сегмент Cloud Storage по умолчанию с форматом имени *.appspot.com , то в вашем проекте также есть приложение App Engine , которое использует этот сегмент.

Если вы настроите Firebase Security Rules для публичного (неаутентифицированного) доступа , вы также сделаете общедоступными вновь загруженные файлы App Engine .

Известные проблемы с Cloud Storage и App Engine

Известны два случая, когда вы не можете импортировать приложение App Engine :

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

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

,

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

Проект Firebase на самом деле представляет собой просто проект Google Cloud , для которого включены дополнительные конфигурации и сервисы, специфичные для Firebase . Это означает, что каждый сегмент Cloud Storage , который вы используете с Cloud Storage for Firebase доступен в Google Cloud (включая его консоль и API).

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

Рекомендации по учетным записям служб

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

Google Cloud Storage

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

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

API

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

Google Cloud Server SDK

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

gsutil

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

  • Загрузка, загрузка и удаление объектов.
  • Список ведер и объектов.
  • Перемещение, копирование и переименование объектов.
  • Редактирование объекта и ковша ACLS.

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

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

Объектная версия

Вы когда -нибудь что -то удаляли что -то случайно и не имели резервной копии? Google Cloud Storage поддерживает версии объектов , которое обеспечивает автоматический способ поддержать ваши данные и восстановить из этих резервных копий. Вы можете включить использование версий объекта, используя команду Set 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 или вашего собственного сервера.

Google Cloud Functions (бета)

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

Google Cloud Vision API

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

Google Cloud Speech API

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

Google App Engine

Google App Engine - это «платформа как сервис», которая автоматически масштабирует логику бэкэнд в ответ на сумму трафика, который он получает. Просто загрузите свой бэкэнд -код, и Google будет управлять доступностью вашего приложения; У вас нет серверов, чтобы вы могли обеспечить или поддерживать. App Engine - быстрый и простой способ добавления дополнительной мощности обработки или доверенного выполнения в ваше приложение Firebase.

Если у вас есть Cloud Storage по умолчанию с форматом имени PROJECT_ID .appspot.com , затем автоматически обменивается приложением App Engine в вашем проекте. Это означает, что если вы создаете приложение App Engine , вы можете использовать встроенные API App Engine API для обмена данными между этим ведром и App Engine . Это полезно для выполнения кодирования аудио, транскодирования видео и преобразований изображений, а также для других вычислений.

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

При импорте существующего проекта Google Cloud Project в Firebase, если вы хотите сделать какие -либо существующие объекты App Engine доступных в Firebase, вам нужно установить контроль доступа по умолчанию на ваших объектах, чтобы Firebase доступ к ним, выполнив следующую команду, используя gsutil :

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

Соображения по Firebase Security Rules и файлам App Engine

Если у вас есть Cloud Storage по умолчанию с форматом имени *.appspot.com , тогда у вашего проекта также есть приложение App Engine , которое делится этим ведром.

Если вы настраиваете свои Firebase Security Rules для общественного (несанкционированного) доступа , вы также сделаете недавно загруженные файлы App Engine общедоступными.

Известные проблемы для Cloud Storage и App Engine

Есть два известных случая, когда вы не можете импортировать приложение App Engine :

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

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