Criar assinaturas do Cloud Storage

Neste documento, descrevemos como criar uma assinatura do Cloud Storage. É possível usar o console do Google Cloud, a Google Cloud CLI, a biblioteca de cliente, ou a API Pub/Sub para criar uma assinatura do Cloud Storage.

Antes de começar

Antes de ler este documento, certifique-se de que você esteja familiarizado com o seguinte:

Papéis e permissões necessárias

Confira a seguir uma lista de diretrizes relacionadas a papéis e permissões:

  • Para criar uma assinatura, você precisa configurar o controle de acesso no projeto nível

  • Você também precisa de permissões no nível do recurso se suas assinaturas e tópicos estão em projetos diferentes, conforme discutido mais adiante nesta seção.

  • Para criar uma assinatura do Cloud Storage, A conta de serviço do Pub/Sub precisa ter permissão para gravar no um bucket específico do Cloud Storage e ler os metadados dele. Para mais sobre como conceder essas permissões, consulte os próximos deste documento.

Para receber as permissões necessárias para criar assinaturas do Cloud Storage, peça ao administrador para conceder a você Papel do IAM Editor do Pub/Sub (roles/pubsub.editor) no projeto. Para mais informações sobre como conceder papéis, consulte Gerenciar acesso.

Esse papel predefinido contém as permissões necessárias para criar assinaturas do Cloud Storage. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:

Permissões necessárias

As seguintes permissões são necessárias para criar assinaturas do Cloud Storage:

  • Crie uma assinatura: pubsub.subscriptions.create
  • Anexe uma assinatura a um tópico: pubsub.topics.attachSubscription
  • Extrair de uma assinatura: pubsub.subscriptions.consume
  • Assinar uma assinatura: pubsub.subscriptions.get
  • Para listar uma assinatura: pubsub.subscriptions.list
  • Atualizar uma assinatura: pubsub.subscriptions.update
  • Para excluir uma assinatura: pubsub.subscriptions.delete
  • Para receber a política do IAM de uma assinatura: pubsub.subscriptions.getIamPolicy
  • Configure a política do IAM para uma assinatura: pubsub.subscriptions.setIamPolicy

Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.

Se for preciso criar o Cloud Storage assinaturas de um projeto que estão associadas a um tópico em outro projeto, peça ao administrador do tópico para conceder a você o papel Editor do Pub/Sub (roles/pubsub.editor) no tópico.

Atribuir papéis do Cloud Storage à conta de serviço do Pub/Sub

Alguns serviços do Google Cloud têm contas de serviço gerenciado pelo Google Cloud que permite que eles acessem seus recursos. Essas contas são conhecidas como e agentes de serviço. O Pub/Sub cria e mantém um serviço de conta para cada projeto no formato service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com:

Para criar uma assinatura do Cloud Storage, o Pub/Sub conta de serviço precisa ter permissão para gravar um bucket específico do Cloud Storage e ler os metadados dele. Escolher um dos seguintes procedimentos:

  • Conceda permissões no nível do bucket. No Cloud Storage específico conceda o papel Criador de objetos do Storage (roles/storage.objectCreator) e o papel Leitor de bucket legado do Storage (roles/storage.legacyBucketReader) à conta de serviço do Pub/Sub.

  • Se for necessário conceder papéis no nível do projeto, você pode conceder o papel Administrador de armazenamento (roles/storage.admin) no projeto que contém do bucket do Cloud Storage. Conceda esse papel ao conta de serviço do Pub/Sub.

Permissões de bucket

Siga estas etapas para conceder ao Criador de objetos do Storage (roles/storage.objectCreator) e Leitor de bucket legado do Storage (roles/storage.legacyBucketReader) no nível do bucket:

  1. No Console do Google Cloud, acesse a página Cloud Storage.

    Acesse o Cloud Storage

  2. Clique no bucket do Cloud Storage em que você quer gravar mensagens.

    A página Detalhes do bucket é aberta.

  3. Na página Detalhes do bucket, clique na guia Permissões.

  4. Na seção Permissões > Visualizar por principais, clique em Conceder acesso.

    A página Conceder acesso será aberta.

  5. Na seção Adicionar principais, insira o nome do seu Pub/Sub conta de serviço.

    O formato da conta de serviço é service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com: Por exemplo, em um projeto com PROJECT_NUMBER=112233445566, a conta de serviço tem o formato service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  6. Em Atribuir funções > menu suspenso Selecionar um papel Insira Creator e selecione o papel Criador de objetos do Storage.

  7. Clique em Adicionar outro papel.

  8. No menu suspenso Selecionar papel, insira Bucket Reader. e selecione o papel Leitor de bucket legado do Storage.

  9. Clique em Salvar.

Permissões do projeto

Realize as etapas a seguir para conceder ao administrador do Storage (roles/storage.admin) no nível do projeto:

  1. No console do Google Cloud, abra a página IAM.

    Acessar IAM

  2. Na seção Permissões > Visualizar por principais, clique em Conceder acesso.

    A página Conceder acesso será aberta.

  3. Na seção Adicionar principais, insira o nome do seu Pub/Sub conta de serviço.

    O formato da conta de serviço é service-PROJECT_NUMBER@gcp-sa-pubsub.iam.gserviceaccount.com: Por exemplo, em um projeto com PROJECT_NUMBER=112233445566, a conta de serviço tem o formato service-112233445566@gcp-sa-pubsub.iam.gserviceaccount.com.

  4. Em Atribuir funções > menu suspenso Selecionar um papel Digite Storage Admin e selecione o papel Administrador do Storage.

  5. Clique em Salvar.

Para mais informações sobre o IAM do Cloud Storage, consulte Identity and Access Management do Cloud Storage.

Propriedades da assinatura do Cloud Storage

Ao configurar uma assinatura do Cloud Storage, você precisa especificar propriedades comuns a todos os tipos de assinatura e algumas Propriedades específicas da assinatura do Cloud Storage.

Propriedades comuns de assinaturas

Saiba mais sobre as propriedades comuns de assinaturas que você pode definir em todas as assinaturas.

Nome do bucket

É necessário que já exista um bucket do Cloud Storage antes da criação de um Assinatura do Cloud Storage.

As mensagens são enviadas como lotes e armazenadas no bucket do Cloud Storage. Um único lote ou arquivo é armazenado como um objeto. que estão nele.

O bucket do Cloud Storage precisa ter Pagamentos do solicitante desativado.

Para criar um bucket do Cloud Storage, consulte Crie buckets.

Prefixo, sufixo e data/hora do nome de arquivo

Os arquivos de saída gerados pelo Cloud Storage são armazenadas como objetos no bucket do Cloud Storage. O nome do objeto armazenado no bucket do Cloud Storage tem o seguinte formato: <file-prefix><UTC-date-time>_<uuid><file-suffix>.

A lista a seguir inclui detalhes do formato do arquivo e os campos que você podem personalizar:

  • <file-prefix> é o prefixo de nome de arquivo personalizado. Esse campo é opcional.

  • <UTC-date-time> é uma string personalizável gerada automaticamente com base no horário. o objeto é criado.

  • <uuid> é uma string aleatória gerada automaticamente para o objeto.

  • <file-suffix> é o sufixo do nome de arquivo personalizado. Esse campo é opcional. O O sufixo do nome do arquivo não pode terminar em "/".

  • É possível alterar o prefixo e o sufixo do nome de arquivo:

    • Por exemplo, se o valor do prefixo do nome do arquivo for prod_ e o valor do o sufixo do nome do arquivo for _archive, um nome de objeto de amostra será prod_2023-09-25T04:10:00+00:00_uN1QuE_archive

    • Se você não especificar o prefixo e o sufixo do nome do arquivo, o nome do objeto armazenado no bucket do Cloud Storage tem o formato: <UTC-date-time>_<uuid>:

    • Os requisitos de nomenclatura de objetos do Cloud Storage também se aplicam ao nome de arquivo e sufixo. Para mais informações, consulte Sobre os objetos do Cloud Storage.

  • Você pode alterar como a data e a hora são exibidas no nome do arquivo:

    • Correspondências de data e hora obrigatórias que podem ser usadas apenas uma vez: ano (YYYY ou YY), mês (MM), dia (DD), hora (hh), minuto (mm), segundo (ss). Por exemplo, YY-YYYY ou MMM é inválido.

    • Correspondências opcionais que podem ser usadas apenas uma vez: separador de data e hora (T) e e deslocamento de fuso horário (Z ou +00:00).

    • Elementos opcionais que você pode usar várias vezes: hífen (-), underline (_), dois-pontos (:) e barra (/).

    • Por exemplo, se o valor do formato de data e hora do nome do arquivo for YYYY-MM-DD/hh_mm_ssZ, um nome de objeto de amostra é prod_2023-09-25/04_10_00Z_uNiQuE_archive.

    • Se o formato de data e hora do nome do arquivo terminar em um caractere que não corresponde, esse caractere substituirá o separador entre <UTC-date-time> e <uuid>. Por exemplo, se o valor do formato de data e hora do nome do arquivo for YYYY-MM-DDThh_mm_ss-, um nome de objeto de amostra é prod_2023-09-25T04_10_00-uNiQuE_archive.

Lote de arquivos

As assinaturas do Cloud Storage permitem que você decida quando criar um novo arquivo de saída armazenado como um objeto no Cloud Storage do Google Cloud. O Pub/Sub grava um arquivo de saída quando as condições de lote especificadas sejam atendidas. A seguir estão os Condições de lote do Cloud Storage:

  • Duração máxima do lote de armazenamento. Essa configuração é obrigatória. O A assinatura do Cloud Storage gravará um novo arquivo de saída se o valor especificado da duração máxima for excedido. Se você não especificar o valor, será aplicado um valor padrão de 5 minutos. Veja a seguir os valores aplicáveis para a duração máxima:

    • Valor mínimo = 1 minuto
    • Valor padrão = 5 minutos
    • Valor máximo = 10 minutos
  • Bytes máximos de lote de armazenamento. Essa configuração é opcional. O A assinatura do Cloud Storage grava um novo arquivo de saída se o o valor especificado do máximo de bytes for excedido. Os itens a seguir são os valores para o máximo de bytes:

    • Valor mínimo = 1 KB
    • Valor máximo = 10 GiB

Por exemplo, você pode configurar a duração máxima como 6 minutos e como 2 GB. Se, no 4o minuto, o arquivo de saída atingir uma tamanho de arquivo de 2 GB, o Pub/Sub finaliza o arquivo anterior e começa gravar em um novo arquivo.

Uma assinatura do Cloud Storage pode gravar em vários arquivos de um ao mesmo bucket do Cloud Storage. Se você configurou seu para criar um novo arquivo a cada 6 minutos, poderá observar a criação de vários arquivos do Cloud Storage a cada 6 minutos.

Em algumas situações, o Pub/Sub pode começar a gravar em um novo do arquivo anterior ao horário configurado pelas condições de lote do arquivo. Um arquivo também poderá exceder o valor máximo de bytes se a assinatura recebe mensagens maiores que o valor máximo de bytes.

Formato do arquivo

Ao criar uma assinatura do Cloud Storage, o formato dos arquivos de saída que serão armazenados em um Bucket do Cloud Storage como Text ou Avro.

  • Texto: as mensagens são armazenadas como texto simples. Um caractere de nova linha separa uma mensagem da mensagem anterior no arquivo. Apenas mensagem payloads são armazenados, não atributos ou outros metadados.

  • Avro: as mensagens são armazenadas em Formato do binário Apache Avro (link em inglês). Ao selecionar Avro, você pode ativar as seguintes propriedades adicionais:

    • Gravar metadados: permite armazenar os metadados da mensagem com a mensagem. Metadados, como os campos subscription_name, message_id, publish_time e attributes, são gravados em campos de nível superior no objeto Avro de saída, enquanto todas as outras propriedades da mensagem, exceto dados, (por exemplo, uma chave de ordenação, se presente) são adicionadas como entradas no mapa attributes.

      Se a opção write metadata estiver desativada, apenas o payload da mensagem será gravado no objeto Avro de saída. Este é o esquema Avro para as mensagens de saída com metadados de gravação desativados:

      {
        "type": "record",
        "namespace": "com.google.pubsub",
        "name": "PubsubMessage",
        "fields": [
          { "name": "data", "type": "bytes" }
        ]
      }
      

      Este é o esquema Avro para as mensagens de saída com metadados de gravação ativados:

      {
        "type": "record",
        "namespace": "com.google.pubsub",
        "name": "PubsubMessageWithMetadata",
        "fields": [
          { "name": "subscription_name", "type": "string" },
          { "name": "message_id", "type": "string"  },
          { "name": "publish_time", "type": {
              "type": "long",
              "logicalType": "timestamp-micros"
            }
          },
          { "name": "attributes", "type": { "type": "map", "values": "string" } },
          { "name": "data", "type": "bytes" }
        ]
      }
      
    • Use topic schema: essa opção permite que o Pub/Sub use o esquema do tópico do Pub/Sub ao qual a assinatura é anexada ao gravar arquivos Avro.

      Ao usar essa opção, lembre-se de verificar os seguintes requisitos adicionais:

      • O esquema do tópico precisa estar no formato Apache Avro.

      • Se usar esquema de tópicos e gravar metadados estiverem ativados, o esquema de tópicos precisará ter um objeto Record na raiz. O Pub/Sub vai expandir a lista de campos do registro para incluir os campos de metadados. Como resultado, o registro não pode conter nenhum campo com o mesmo nome que os campos de metadados (subscription_name, message_id, publish_time ou attributes).

Criar uma assinatura do Cloud Storage

Console

  1. No console do Google Cloud, acesse Assinaturas página.

    Acessar "Assinaturas"

  2. Clique em Criar assinatura.

  3. Insira um nome no campo ID da assinatura.

    Para obter informações sobre como nomear uma assinatura, consulte Diretrizes para nomear um tópico ou uma assinatura.

  4. Escolha ou crie um tópico no menu suspenso.

    A assinatura recebe mensagens do tópico.

    Para mais informações sobre como criar um tópico, consulte Criar e gerenciar tópicos.

  5. Selecione o Tipo de entrega como Gravar em Cloud Storage.

  6. Para o bucket do Cloud Storage, clique em Procurar.

    • É possível selecionar um bucket atual de qualquer projeto apropriado.

    • Você também pode clicar no ícone "Criar" e seguir as instruções para criar um novo bucket.

      Depois de criar o bucket, selecione o bucket para o Assinatura do Cloud Storage.

      Para mais informações sobre como criar um bucket, consulte Criar buckets.

    Quando você especifica o bucket, o Pub/Sub verifica as permissões apropriadas no bucket para o Pub/Sub conta de serviço. Se houver problemas de permissões, vai aparecer uma mensagem semelhante ao seguinte: Unable to verify if the Pub/Sub service agent has write permissions on this bucket. You may be lacking permissions to view or set permissions.

  7. Se você tiver problemas de permissão, clique em Definir permissão e siga as instruções na tela.

    Como alternativa, siga as instruções em Atribuir papéis do Cloud Storage à conta de serviço do Pub/Sub.

  8. Em Formato do arquivo, selecione Texto ou Avro (link em inglês).

    Se você selecionar Avro, também poderá especificar se você quer armazenar os metadados da mensagem na saída.

    Para mais informações sobre as duas opções, incluindo a mensagem opção de metadados para o formato Avro, consulte Arquivo formato.

  9. Opcional: é possível especificar os valores de prefixo, sufixo e datetime para todos os arquivos que serão gravados no do bucket do Cloud Storage. Um arquivo é armazenado como um objeto no bucket.

    Para mais informações sobre como definir os prefixos, sufixos e datetime, consulte Prefixo, sufixo e datetime.

  10. Em Lote de arquivos, especifique o tempo máximo decorrido. antes de criar um novo arquivo.

    Também é possível definir o tamanho máximo dos arquivos.

    Para saber mais sobre as duas opções de loteamento de arquivos, consulte Lote de arquivos.

  11. É altamente recomendável ativar as mensagens inativas. para lidar com falhas de mensagens.

    Para mais informações, consulte Cartas mortas tópico.

  12. Mantenha as outras configurações como padrão e clique em Criar.

gcloud

  1. No Console do Google Cloud, ative o Cloud Shell.

    Ativar o Cloud Shell

    Na parte inferior do Console do Google Cloud, uma sessão do Cloud Shell é iniciada e exibe um prompt de linha de comando. O Cloud Shell é um ambiente shell com a CLI do Google Cloud já instalada e com valores já definidos para o projeto atual. A inicialização da sessão pode levar alguns segundos.

  2. Para criar um assinatura do Cloud Storage, execute o comando gcloud pubsub subscriptions create.
    gcloud pubsub subscriptions create SUBSCRIPTION_ID \
        --topic=TOPIC_ID \
        --cloud-storage-bucket=BUCKET_NAME \
        --cloud-storage-file-prefix=CLOUD_STORAGE_FILE_PREFIX \
        --cloud-storage-file-suffix=CLOUD_STORAGE_FILE_SUFFIX \
        --cloud-storage-file-datetime-format=CLOUD_STORAGE_FILE_DATETIME_FORMAT \
        --cloud-storage-max-bytes=CLOUD_STORAGE_MAX_BYTES \
        --cloud-storage-max-duration=CLOUD_STORAGE_MAX_DURATION \
        --cloud-storage-output-format=CLOUD_STORAGE_OUTPUT_FORMAT \
        --cloud-storage-write-metadata

    No comando, apenas SUBSCRIPTION_ID, o as sinalizações --topic e --cloud-storage-bucket são obrigatórios. As outras sinalizações são opcionais e podem ser omitidas.

    Substitua:

    • SUBSCRIPTION_ID: o nome ou o ID do novo Assinatura do Cloud Storage.
    • TOPIC_ID: o nome ou o ID do tópico.
    • BUCKET_NAME: especifica o nome de um em um bucket que já existe. Por exemplo, prod_bucket. O bucket não pode incluir o ID do projeto. Para criar um bucket, consulte Criar buckets.
    • CLOUD_STORAGE_FILE_PREFIX: especifica o Prefixo do nome do arquivo do Cloud Storage. Por exemplo, log_events_.
    • CLOUD_STORAGE_FILE_SUFFIX: especifica o sufixo do nome do arquivo do Cloud Storage. Por exemplo, .txt.
    • CLOUD_STORAGE_FILE_DATETIME_FORMAT: Especifica o formato de data e hora do nome de arquivo do Cloud Storage. Por exemplo, YYYY-MM-DD/hh_mm_ssZ.
    • CLOUD_STORAGE_MAX_BYTES: o máximo de bytes que podem ser gravados em um arquivo do Cloud Storage antes que um novo é criada. O valor precisa estar entre 1 KB e 10 GB. Por exemplo, 20MB.
    • CLOUD_STORAGE_MAX_DURATION: o máximo que pode decorrer antes de um novo arquivo do Cloud Storage ser criados. O valor precisa estar entre 1 m e 10 m. Por exemplo, 5m.
    • CLOUD_STORAGE_OUTPUT_FORMAT: a saída para dados gravados no Cloud Storage. Os valores são como da seguinte forma:
      • text: as mensagens são escritas como texto bruto e são separadas por uma nova linha.
      • avro: as mensagens são escritas como um binário Avro. --cloud-storage-write-metadata tem efeito apenas para assinaturas com o formato de saída avro.

C++

Antes de testar este exemplo, siga as instruções de configuração do C++ na Guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a API C++ do Pub/Sub documentação de referência.

Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

namespace pubsub = ::google::cloud::pubsub;
namespace pubsub_admin = ::google::cloud::pubsub_admin;
[](pubsub_admin::SubscriptionAdminClient client,
   std::string const& project_id, std::string const& topic_id,
   std::string const& subscription_id, std::string const& bucket) {
  google::pubsub::v1::Subscription request;
  request.set_name(
      pubsub::Subscription(project_id, subscription_id).FullName());
  request.set_topic(pubsub::Topic(project_id, topic_id).FullName());
  request.mutable_cloud_storage_config()->set_bucket(bucket);
  auto sub = client.CreateSubscription(request);
  if (!sub) {
    if (sub.status().code() == google::cloud::StatusCode::kAlreadyExists) {
      std::cout << "The subscription already exists\n";
      return;
    }
    throw std::move(sub).status();
  }

  std::cout << "The subscription was successfully created: "
            << sub->DebugString() << "\n";
}

Go

Antes de testar este exemplo, siga as instruções de configuração do Go na Guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a API Go do Pub/Sub documentação de referência.

Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import (
	"context"
	"fmt"
	"io"
	"time"

	"cloud.google.com/go/pubsub"
)

// createCloudStorageSubscription creates a Pub/Sub subscription that exports messages to Cloud Storage.
func createCloudStorageSubscription(w io.Writer, projectID, subID string, topic *pubsub.Topic, bucket string) error {
	// projectID := "my-project-id"
	// subID := "my-sub"
	// topic of type https://godoc.org/cloud.google.com/go/pubsub#Topic
	// note bucket should not have the gs:// prefix
	// bucket := "my-bucket"
	ctx := context.Background()
	client, err := pubsub.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("pubsub.NewClient: %w", err)
	}
	defer client.Close()

	sub, err := client.CreateSubscription(ctx, subID, pubsub.SubscriptionConfig{
		Topic: topic,
		CloudStorageConfig: pubsub.CloudStorageConfig{
			Bucket:         bucket,
			FilenamePrefix: "log_events_",
			FilenameSuffix: ".avro",
			OutputFormat:   &pubsub.CloudStorageOutputFormatAvroConfig{WriteMetadata: true},
			MaxDuration:    1 * time.Minute,
			MaxBytes:       1e8,
		},
	})
	if err != nil {
		return fmt.Errorf("client.CreateSubscription: %w", err)
	}
	fmt.Fprintf(w, "Created Cloud Storage subscription: %v\n", sub)

	return nil
}

Java

Antes de testar este exemplo, siga as instruções de configuração do Java na Guia de início rápido do Pub/Sub usando bibliotecas de cliente. Para mais informações, consulte a API Java do Pub/Sub documentação de referência.

Para autenticar no Pub/Sub, configure o Application Default Credentials. Para mais informações, acesse Configurar a autenticação para bibliotecas de cliente.

import com.google.cloud.pubsub.v1.SubscriptionAdminClient;
import com.google.protobuf.Duration;
import com.google.pubsub.v1.CloudStorageConfig;
import com.google.pubsub.v1.ProjectSubscriptionName;
import com.google.pubsub.v1.ProjectTopicName;
import com.google.pubsub.v1.Subscription;
import java.io.IOException;

public class CreateCloudStorageSubscriptionExample {
  public static void main(String... args) throws Exception {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-project-id";
    String topicId = "your-topic-id";
    String subscriptionId = "your-subscription-id";
    String bucket = "your-bucket";
    String filenamePrefix = "log_events_";
    String filenameSuffix = ".text";
    Duration maxDuration = Duration.newBuilder().setSeconds(300).build();

    createCloudStorageSubscription(
        projectId, topicId, subscriptionId, bucket, filenamePrefix, filenameSuffix, maxDuration);
  }

  public static void createCloudStorageSubscription(
      String projectId,
      String topicId,
      String subscriptionId,
      String bucket,
      String filenamePrefix,
      String filenameSuffix,
      Duration maxDuration)
      throws IOException {
    try (SubscriptionAdminClient subscriptionAdminClient = SubscriptionAdminClient.create()) {

      ProjectTopicName topicName = ProjectTopicName.of(projectId, topicId);
      ProjectSubscriptionName subscriptionName =
          ProjectSubscriptionName.of(projectId, subscriptionId);

      CloudStorageConfig cloudStorageConfig =
          CloudStorageConfig.newBuilder()
              .setBucket(bucket)
              .setFilenamePrefix(filenamePrefix)
              .setFilenameSuffix(filenameSuffix)
              .setMaxDuration(maxDuration)
              .build();

      Subscription subscription =
          subscriptionAdminClient.createSubscription(
              Subscription.newBuilder()
                  .setName(subscriptionName.toString())
                  .setTopic(topicName.toString())
                  .setCloudStorageConfig(cloudStorageConfig)
                  .build());

      System.out.println("Created a CloudStorage subscription: " + subscription.getAllFields());
    }
  }
}

Monitorar assinaturas

O Cloud Monitoring fornece várias métricas para monitorar assinaturas.

Também é possível monitorar as assinaturas no Pub/Sub.

A seguir