Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

Integrar com o Google Cloud

Mantenha tudo organizado com as coleções Salve e categorize o conteúdo com base nas suas preferências.

O Cloud Storage para Firebase é totalmente integrado ao Google Cloud . Os SDKs do Firebase para Cloud Storage armazenam arquivos diretamente em buckets do Google Cloud Storage e, à medida que seu aplicativo cresce, você pode integrar facilmente outros serviços do Google Cloud, como computação gerenciada, como App Engine ou Cloud Functions, ou APIs de aprendizado de máquina, como Cloud Vision ou Google Traduzir.

O Firebase usa contas de serviço do Google Cloud para operar e gerenciar serviços sem compartilhar credenciais de usuário. Ao criar um projeto do Firebase que usa o Cloud Storage, você pode perceber que uma conta de serviço correspondente já está disponível em seu projeto: service-<project number>@gcp-sa-firebasestorage.iam.gserviceaccount.com . Consulte este guia de suporte do Firebase para mais informações.

Nos bastidores, os SDKs do Firebase para Cloud Storage usam o intervalo padrão no nível gratuito do App Engine . Isso permite que você comece a usar o Cloud Storage rapidamente, sem precisar inserir um cartão de crédito ou ativar uma conta de faturamento do Cloud. Ele também permite compartilhar dados facilmente entre o Firebase e um projeto do Google Cloud.

A integração com o Google Cloud, incluindo a importação de buckets existentes do Cloud Storage, requer um projeto do Firebase no plano Blaze. Saiba mais sobre os planos em nossa página de preços .

Armazenamento em nuvem do Google

Você pode usar as APIs do Google Cloud Storage para acessar arquivos enviados por meio dos SDKs do Firebase para Cloud Storage, especialmente para realizar operações mais complexas, como copiar ou mover um arquivo ou listar todos os arquivos disponíveis em uma referência.

É importante observar que essas solicitações usam as opções de controle de acesso do Google Cloud Storage , em vez das regras de segurança do Firebase Authentication e do Cloud Storage.

API

Além dos SDKs do Firebase para Cloud Storage, há várias outras maneiras de acessar dados armazenados em seu bucket do Cloud Storage, dependendo do que você deseja fazer. Se você estiver acessando dados em um servidor, oferecemos bibliotecas do lado do servidor, bem como uma API RESTful XML compatível com JSON e S3, ou se você precisar alterar scripts ou executar outras tarefas administrativas, temos uma ferramenta de linha de comando que virá a calhar.

SDKs do servidor do Google Cloud

O Google Cloud oferece SDKs de servidor de alta qualidade para vários produtos de nuvem, incluindo o Cloud Storage. Essas bibliotecas estão disponíveis em Node.js , Java , go , Python , PHP e Ruby .

Para obter mais informações, incluindo instruções de instalação, autenticação e solução de problemas, consulte a documentação específica da plataforma vinculada acima.

O exemplo de uso do SDK do Google Cloud Storage é mostrado abaixo:

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

Java

    // 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();
    

Vai

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

Pitão

    # 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');
    

Rubi

    # 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 REST

Se você estiver usando uma linguagem sem uma biblioteca de cliente, quiser fazer algo que as bibliotecas de cliente não fazem ou apenas tiver um cliente HTTP favorito que prefere usar, o Google Cloud Storage oferece APIs para JSON e XML .

Além dessas APIs de acesso a dados de armazenamento, para gerenciar buckets do Cloud Storage para uso em projetos do Firebase, você pode usar a API Cloud Storage for Firebase .

gsutil

gsutil é uma ferramenta de linha de comando que oferece acesso direto ao Cloud Storage. Você pode usar a gsutil para realizar uma ampla variedade de tarefas de gerenciamento de buckets e objetos, incluindo:

  • Upload, download e exclusão de objetos.
  • Listagem de buckets e objetos.
  • Mover, copiar e renomear objetos.
  • Edição de ACLs de objetos e buckets.

gsutil permite outras operações avançadas, como mover arquivos de um diretório para outro ou excluir todos os arquivos abaixo de um determinado local.

Mover todos os arquivos de uma referência para outra é tão fácil quanto:

gsutil mv gs://bucket/old/reference gs://bucket/new/reference

A exclusão em lote de todos os arquivos abaixo de uma referência é igualmente intuitiva:

# 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

Taxas de solicitação

O Google Cloud Storage é um serviço altamente escalonável que usa a tecnologia de escalonamento automático para atingir taxas de solicitação muito altas.

O Google Cloud Storage é um serviço multilocatário, o que significa que os usuários compartilham o mesmo conjunto de recursos subjacentes. Para fazer o melhor uso desses recursos compartilhados, os buckets têm uma capacidade inicial de E/S.

Conforme você planeja integrar o Cloud Storage para Firebase ao seu aplicativo, pense em uma taxa de solicitação mínima que seu aplicativo precisa para um bom desempenho e em como fazer solicitações com eficiência. Revise as diretrizes sobre as taxas de solicitação e, especialmente, sobre como aumentar as taxas de solicitação .

Controle de versão do objeto

Você já apagou algo por acidente e não teve um backup? O Google Cloud Storage é compatível com o controle de versão de objetos , que oferece uma maneira automática de fazer backup de seus dados e restaurar a partir desses backups. Você pode ativar o controle de versão de objetos usando o comando gsutil versioning set :

gsutil versioning set on gs://<your-cloud-storage-bucket>

O Cloud Storage sempre pega a versão mais recente, portanto, se você quiser restaurar um objeto, precisará usar uma das outras APIs ou ferramentas acima para definir o objeto desejado como o mais recente.

Gerenciamento do ciclo de vida do objeto

Ter a capacidade de arquivar ou excluir automaticamente arquivos obsoletos é um recurso útil para muitos aplicativos. Felizmente, o Google Cloud Storage oferece gerenciamento de ciclo de vida de objetos , que permite excluir ou arquivar objetos após um determinado período de tempo.

Considere um aplicativo de compartilhamento de fotos que você deseja que todas as fotos sejam excluídas em um dia. Você pode configurar uma política de ciclo de vida do objeto da seguinte maneira:

// lifecycle.json
{
  "lifecycle": {
    "rule":
    [
      {
        "action": {"type": "Delete"},
        "condition": {"age": 1}
      }
    ]
  }
}

E implante-o usando o comando gsutil lifecycle set :

gsutil lifecycle set lifecycle.json gs://<your-cloud-storage-bucket>

Observe que isso se aplica a todos os arquivos no bucket, portanto, se você estiver armazenando backups de usuários importantes que deseja armazenar por um longo tempo ao lado de fotos que deseja excluir diariamente, convém usar dois buckets separados ou executar exclusões manualmente com gsutil ou seu próprio servidor.

App Engine

O App Engine é uma "Plataforma como Serviço" que dimensiona automaticamente a lógica de back-end em resposta à quantidade de tráfego que recebe. Basta fazer o upload do seu código de back-end e o Google gerenciará a disponibilidade do seu aplicativo; não há servidores para você provisionar ou manter. O App Engine é uma maneira rápida e fácil de adicionar poder de processamento adicional ou execução confiável ao seu aplicativo Firebase.

Os SDKs do Firebase para Cloud Storage usam o intervalo padrão do App Engine, o que significa que, se você criar um aplicativo do App Engine, poderá usar as APIs integradas do App Engine para compartilhar dados entre o Firebase e o App Engine. Isso é útil para realizar codificação de áudio, transcodificação de vídeo e transformações de imagem, bem como outros processamentos em segundo plano intensivos em computação.

Os ambientes Java, Python e go Standard para o App Engine incluem a API de imagens do App Engine ( Java , Python , que pode redimensionar, girar, inverter e cortar uma imagem, bem como retornar um URL de veiculação de imagem que permite transformações no lado do cliente , semelhante ao Cloudinary e Imgix.

Ao importar um projeto existente do Google Cloud para o Firebase, se você quiser disponibilizar objetos existentes do App Engine no Firebase, será necessário definir o controle de acesso padrão em seus objetos para permitir que o Firebase os acesse executando o seguinte comando usando gsutil :

gsutil -m acl ch -r -u service-<project number;gt@gcp-sa-firebasestorage.iam.gserviceaccount.com gs://<your-cloud-storage-bucket>

Problemas conhecidos

Há dois casos conhecidos em que você não pode importar seu aplicativo do App Engine:

  1. O projeto contém um antigo aplicativo mestre/escravo do App Engine Datastore.
  2. O projeto tem um ID de projeto com prefixo de domínio, por exemplo: domain.com:project-1234 .

Em qualquer um desses casos, o projeto não será compatível com o Cloud Storage para Firebase, e você deve criar um novo projeto do Firebase para usar o Cloud Storage. Entre em contato com o suporte para que possamos ajudá-lo.

Funções do Google Cloud (Beta)

O Google Cloud Functions é uma solução de computação assíncrona, leve e baseada em eventos que permite criar funções pequenas e de finalidade única que respondem a eventos sem a necessidade de gerenciar um servidor ou um ambiente de tempo de execução. Essas funções podem ser usadas para transcodificação de vídeo, classificação de imagens usando aprendizado de máquina ou sincronização de metadados com o Firebase Realtime Database. Com uma sobrecarga ainda menor do que o App Engine, o Cloud Functions é a maneira mais rápida de reagir a mudanças no Cloud Storage.

API do Google Cloud Vision

A API do Google Cloud Vision permite que os desenvolvedores entendam o conteúdo de uma imagem encapsulando modelos avançados de aprendizado de máquina em uma API fácil de usar. Ele classifica rapidamente as imagens em milhares de categorias, detecta objetos e rostos individuais nas imagens, encontra e lê palavras impressas contidas nas imagens, identifica conteúdo ofensivo e até fornece análise de sentimento da imagem.

API de fala do Google Cloud

Semelhante à API Vision, a API Google Cloud Speech permite que os desenvolvedores extraiam texto de um arquivo de áudio armazenado no Cloud Storage. A API reconhece mais de 80 idiomas e variantes para dar suporte à sua base global de usuários. Quando combinado com a API Google Cloud Natural Language , os desenvolvedores podem extrair o texto bruto e inferir o significado desse texto. E se for necessário um público global, combine isso com a API do Google Tradutor para traduzir o texto para mais de 90 idiomas.