Como integrar o back-end do aplicativo

Nesta seção, descrevemos as etapas para integrar o back-end do app ao Cloud Marketplace. Com essa integração, é possível gerenciar as contas e os direitos dos usuários, o que indica que os usuários compraram seu produto no Cloud Marketplace. Se você escolheu um modelo de preços com base no uso, integre seu back-end também para informar o uso ao Google.

Para ver um exemplo de integração de um app básico com o Cloud Marketplace e um tutorial do exemplo de código, consulte o codelab para integrar um serviço gerenciado.

Para ver o código de amostra usado no codelab, consulte o repositório do GitHub.

Antes de começar

Crie uma conta de serviço

Para integrar sua solução ao Google Cloud, você precisa criar uma conta de serviço no projeto que está usando para sua solução. O app usa essa conta de serviço para interagir com as APIs Cloud Marketplace Partner e receber informações sobre as compras dos usuários.

Use o Portal do Produtor para criar e vincular suas contas de serviço. Para etapas detalhadas de como criar uma conta de serviço, consulte Como criar e gerenciar contas de serviço.

Usar o Portal do Produtor para integrar o back-end do app

Para acessar todas as informações necessárias para integrar o back-end do seu app ao Cloud Marketplace em um local, como suas contas de serviço e identificadores no nível do plano, use a seção Integração de faturamento do Portal do Produtor.

O link direto para o Portal do Produtor é:

https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID

Para acessar a seção Integração de faturamento:

  1. Na lista de produtos, clique no nome do seu produto.

  2. Na página Visão geral do produto, acesse a seção Integração técnica e clique em Integração de faturamento.

Como criar e vincular contas de serviço no Portal do Produtor

Use a seção Integração de faturamento do Portal do Produtor para criar e vincular as contas de serviço usadas para interagir com as APIs de parceiros e receber informações sobre as compras dos usuários.

O link direto para o Portal do Produtor é:

https://console.cloud.google.com/producer-portal?project=YOUR_PROJECT_ID

Nas etapas a seguir, use contas de serviço atuais ou crie novas contas de serviço. Se você criar uma nova conta de serviço, especifique o nome dela no campo Nome da conta de serviço e o ID da conta no campo ID da conta de serviço e clique em Criar e vincular.

Para vincular suas contas de serviço:

  1. Na lista de produtos, clique no nome do seu produto.

  2. Na página Visão geral do produto, acesse a seção Integração técnica e clique em Integração de faturamento.

  3. Para fazer a integração com a API Partner Procurement, em Vincular uma conta de serviço para chamar a API Procurement, clique em Adicionar conta de serviço. É possível inserir uma conta de serviço atual no campo ou criar uma nova conta de serviço.

  4. Para integrar com o Pub/Sub, em Vincular uma conta de serviço para se inscrever no tópico do Pub/Sub, clique em Adicionar conta de serviço. É possível inserir uma conta de serviço atual no campo ou criar uma nova conta de serviço.

  5. Para fazer a integração com a API Service Control, em Adicionar roles/servicemanagement.serviceController a uma conta de serviço, clique em Adicionar conta de serviço. É possível inserir uma conta de serviço atual no campo ou criar uma nova.

Tarefas da conta de usuário

Em alto nível, seu aplicativo precisa lidar com o seguinte cenário:

  1. Um usuário faz uma solicitação ou alteração no Cloud Marketplace, como uma inscrição do produto.

  2. O Cloud Marketplace envia ao seu aplicativo uma notificação pelo Pub/Sub, com informações sobre a solicitação no campo eventType. Por exemplo, se um usuário alterar seus direitos, eventType será ENTITLEMENT_PLAN_CHANGED.

    Veja a lista completa de possíveis eventTypes.

  3. Para aprovar a solicitação, seu aplicativo envia uma solicitação HTTP POST à API Partner Procurement.

Nas seções a seguir, descrevemos os tipos de solicitações é podem ser feitas pelos usuários e o que aplicativo precisa fazer para lidar com elas.

Para as chamadas de API descritas nesta seção, use este ponto de extremidade:

https://cloudcommerceprocurement.googleapis.com/

Criar uma conta para um novo usuário

Quando um usuário compra seu produto pela primeira vez, o Cloud Marketplace cria um recurso de conta que rastreia o relacionamento do usuário com você. Quando o recurso da conta é criado, você é notificado através do tópico Pub/Sub que foi criado para você. A mensagem do Pub/Sub está no seguinte formato:

{
  "eventId": "...",
  "providerId": "YOUR_PARTNER_ID",
  "account": {
    "id": "USER_ACCOUNT_ID",
    "updateTime": "..."
  }
}

em que USER_ACCOUNT_ID é o ID da conta criado pelo Cloud Marketplace e YOUR_PARTNER_ID é um ID atribuído a você quando seu Engenheiro de parceiros permite acesso à API Partner Procurement.

Simultaneamente, o usuário é direcionado para sua página de inscrição, onde cria uma conta no seu sistema. Para ver mais informações sobre como criar a página de inscrição, consulte Como integrar o front-end do aplicativo.

Aprovar a conta de um usuário

Depois que o usuário se inscrever com sucesso, seu aplicativo precisará chamar a API Partner Procurement e indicar que a conta foi aprovada. As contas são criadas no estado ACCOUNT_ACTIVE, mas têm uma entrada PENDING no campo approvals, chamada signup. Isso indica que o usuário ainda não se inscreveu. Para aprovar a conta após a inscrição do usuário, use a seguinte solicitação HTTP POST:

POST v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID:approve {'approvalName': 'signup'}

Verificar o status da conta de um usuário

Para verificar o status de uma conta vinculada, use a seguinte solicitação HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID

A resposta está no seguinte formato:

{
  "name": "providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID",
  "provider": "acme-services",
  "state": "ACCOUNT_ACTIVE",
  "approvals": [{
    "name": "signup",
    "state": "APPROVED",
    "updateTime": "...",
  }],
  "updateTime": "...",
  "createTime": "..."
}

Para uma lista dos possíveis estados da conta, consulte a referência da API providers.accounts.

Gerenciar direitos

Quando os clientes escolhem um plano de preços para seu software, o Google cria um direito, que indica que o cliente comprou seu produto do Cloud Marketplace. Nesta seção, mostramos como criar e gerenciar direitos para seus clientes usando a API Partner Procurement.

Para mais detalhes sobre como gerenciar direitos, acesse a documentação de referência.

Aprovar ou rejeitar um direito

Quando um cliente escolhe um plano de preços, o Cloud Marketplace cria um direito e envia a seguinte mensagem do Pub/Sub para o aplicativo:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_CREATION_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for offer-based entitlements
  },
}

em que ENTITLEMENT_ID é um ID criado pelo Cloud Marketplace. Se a oferta tiver uma duração especificada, ela será fornecida em anos e meses. Se a oferta tiver uma data de término especificada, em vez de uma duração, o campo indicando a duração vai ficar vazio.

No seu sistema, atualize a conta do usuário para refletir que ele comprou um plano. Em seguida, para aprovar o direito, faça uma solicitação HTTP POST à API Partner Procurement e envie o ENTITLEMENT_ID que você está aprovando:

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approve

Para rejeitar um direito, use o método reject na sua solicitação HTTP POST:

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:reject

Para dar um motivo para rejeitar o direito no corpo da solicitação, use o seguinte formato:

{
  "reason": "..."
}

Alterar um plano de direitos

Dependendo de como você configura seus planos de preços, seus clientes podem alterar o plano deles. Se um cliente selecionar um novo plano de preços, você receberá uma mensagem do Pub/Sub, no seguinte formato:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_PLAN_CHANGE_REQUESTED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "newPlan": "ultimate",   // New plan
    "updateTime": "...",
    "newOfferDuration": "P2Y3M",   // Contract duration for the new offer, for offer-based entitlements
  },
}

Se a oferta tiver uma duração especificada, ela será fornecida em anos e meses. Se a oferta tiver uma data de término especificada, em vez de uma duração, o campo indicando a duração vai ficar vazio.

Para aprovar a alteração do plano, faça a seguinte solicitação HTTP POST à API Partner Procurement:

POST v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID:approvePlanChange

O corpo da solicitação precisa ter o plano que está sendo aprovado:

{
  "pendingPlanName": PLAN_NAME
}

Depois que a alteração for aprovada, você receberá outra mensagem do Pub/Sub quando a alteração entrar em vigor. Na mensagem, o campo eventType muda para ENTITLEMENT_PLAN_CHANGED. Para verificar o status de um plano, faça a seguinte solicitação HTTP GET à API Partner Procurement.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

A resposta é semelhante à seguinte, com o campo state indicando se o novo plano está ativo ou se a alteração do plano ainda está pendente:

{
  "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "YOUR_PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-server",
  "plan": "pro",
  "state": "ENTITLEMENT_PENDING_PLAN_CHANGE",
  "newPendingPlan": "ultimate",
  ...
}

Enviar uma mensagem de status para os usuários

Se o intervalo do momento em que o usuário escolhe um plano de preços até seu back-end aprovar um direito for de algumas horas ou mais, recomendamos que você envie uma mensagem de status aos usuários. Nessa mensagem, indique o andamento da aprovação e, se disponível, quando você espera que a aprovação seja concluída.

Para fornecer uma mensagem de status, faça a seguinte solicitação HTTP POST à API Procurement:

POST v1/providers/your-partner-id/entitlements/entitlement_id:updateUserMessage

No corpo da solicitação, forneça o texto da mensagem, semelhante ao seguinte exemplo:

{
  "message": "Approval expected in 2 days"
}

Cancelar um direito

Se um usuário decidir cancelar um direito dele, você receberá uma notificação do Pub/Sub. De maneira similar à alteração de um plano, o cancelamento real pode entrar em vigor no final do ciclo de faturamento real.

A notificação está no seguinte formato:

{
  "eventId": "...",
  // If the entitlement is canceled at the end of the month,
  // eventType is ENTITLEMENT_PENDING_CANCELLATION
  "eventType": "ENTITLEMENT_CANCELLED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "cancellationDate": "...",
    "updateTime": "..."
  },
}

Excluir um direito

Se um usuário fizer uma solicitação direta ao Suporte do Google ou sair da Plataforma Google, os direitos dele serão cancelados imediatamente. Além disso, os direitos e as contas serão excluídos após um período de carência de 60 dias. Para proteger a privacidade do usuário, exclua os dados dele dos seus servidores quando receber a notificação.

Quando os direitos são cancelados e a conta é excluída, você recebe notificações semelhantes às seguintes:

{
  "eventId": "...",
  "eventType": "ENTITLEMENT_DELETED",
  "providerId": "YOUR_PARTNER_ID",
  "entitlement": {
    "id": "ENTITLEMENT_ID",
    "updateTime": "...",
  },
}
{
  "eventId": "...",
  "eventType": "ACCOUNT_DELETED",
  "providerId": "YOUR_PARTNER_ID",
  "account": {
    "id": "USER_ACCOUNT_ID",
    "updateTime": "...",
  },
}

Lista de tipos de eventos para tarefas da conta

A seguir, é apresentada uma lista dos eventTypes que seu aplicativo pode receber em mensagens do Pub/Sub:

eventTypeDescrição
ACCOUNT_CREATION_REQUESTEDDescontinuado
ACCOUNT_ACTIVEIndica que a conta do cliente foi criada.
ACCOUNT_DELETEDIndica que a conta do cliente foi excluída dos sistemas do Google Cloud.
ENTITLEMENT_CREATION_REQUESTEDIndica que um cliente selecionou um dos seus planos de preços.
ENTITLEMENT_OFFER_ACCEPTEDIndica que uma oferta foi aceita por um cliente. Inclui o horário de início programado da oferta, se houver um.
ENTITLEMENT_ACTIVEIndica que o plano escolhido de um cliente está ativo agora.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDIndica que um cliente escolheu um novo plano.
ENTITLEMENT_PLAN_CHANGEDIndica que a alteração do plano de um cliente foi aprovada e as alterações entraram em vigor.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndica o cancelamento da alteração do plano de um cliente devido à falta de aprovação ou ao retorno do cliente ao plano antigo.
ENTITLEMENT_PENDING_CANCELLATIONIndica o cancelamento do plano pelo cliente, pendente até o final do ciclo de faturamento.
ENTITLEMENT_CANCELLATION_REVERTEDIndica que o cancelamento pendente de um cliente foi revertido. Observe que os cancelamentos não podem ser revertidos após a finalização.
ENTITLEMENT_CANCELLEDIndica o cancelamento do plano de um cliente.
ENTITLEMENT_CANCELLINGIndica que o plano de um cliente está em processo de cancelamento.
ENTITLEMENT_RENEWEDIndica que o direito de um cliente foi renovado por outro período. Você não precisa fazer nada para concluir a renovação.
ENTITLEMENT_OFFER_ENDEDIndica que a oferta privada de um cliente terminou. Se o direito do cliente tiver sido cancelado, um evento ENTITLEMENT_CANCELLED separado será acionado. Se o direito do cliente ainda estiver ativo, o plano será revertido para o preço sem desconto.
ENTITLEMENT_DELETEDIndica que as informações sobre o plano de um cliente foram excluídas do Cloud Marketplace.

(Para preços baseados no uso) Informar o uso para o Google

Se você escolher o preço baseado no uso para seu produto, é preciso informar o uso do seu app à API Service Control.

Para ver uma apresentação do Service Control, consulte o Guia explicativo.

Recomendamos que você use o Portal do Produtor para criar uma conta de serviço no Portal do Produtor para uso com o Service Control.

Quando uma autorização é criada, você precisa chamar a API Partner Procurement para recuperar um usageReportingId, usando a seguinte solicitação HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

A resposta contém informações sobre o direito, no seguinte formato:

{
  "name": "providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID",
  "provider": "YOUR_PARTNER_ID",
  "account": "USER_ACCOUNT_ID",
  "product": "example-messaging-service",
  "plan": "pro",
  "usageReportingId": "USAGE_REPORTING_ID",
  "state": "ENTITLEMENT_ACTIVATION_REQUESTED",
  "updateTime": "...",
  "createTime": "..."
}

Para informar o uso, primeiro você precisa fazer uma chamada de API services.check para verificar a configuração do serviço. Na resposta, se o objeto checkErrors[] estiver vazio, faça uma chamada da API services.report para enviar o relatório de uso.

O relatório de uso é uma API Service Control Operation. A seguir, é apresentado um exemplo de um relatório de uso para example-messaging-service que envia informações sobre o armazenamento que está sendo usado pelo cliente:

POST https://servicecontrol.googleapis.com/v1/services/example-messaging-service.gcpmarketplace.example.com:report
{
  "operations": [{
    "operationId": "1234-example-operation-id-4567",
    "operationName": "Hourly Usage Report",
    "consumerId": "USAGE_REPORTING_ID",
    "startTime": "2019-02-06T12:00:00Z",
    "endTime": "2019-02-06T13:00:00Z",
    "metricValueSets": [{
      "metricName": "example-messaging-service/UsageInGiB",
      "metricValues": [{ "int64Value": "150" }]
    }],
    "userLabels": {
      "cloudmarketplace.googleapis.com/resource_name": "order_history_cache",
      "cloudmarketplace.googleapis.com/container_name": "storefront_prod",
      "environment": "prod",
      "region": "us-west2"
    }
  }]
}

onde:

  • operationId é uma string exclusiva gerada pela instância de serviço. Use o mesmo operationId para as operações check e report.

  • consumerId é o mesmo que usageReportingId do direito.

  • startTime e endTime representam os horários de início e término do intervalo total para a operação report. Na maioria dos casos, o startTime de uma operação report precisa ter o mesmo valor de endTime da operação report anterior.

    Se o serviço de um cliente for desativado antes do startTime de uma operação report, a chamada de API services.check enviará um erro no objeto checkErrors[] e o cliente não será cobrado pelo intervalo correspondente.

  • MetricValueSet contém um intervalo de tempo intermediário ou intermediário e os valores de métrica atualizados correspondentes. Você define as métricas do serviço ao escolher e enviar o modelo de preços.

    Visualize e faça referência aos identificadores das suas métricas na seção Integração técnica do Portal do Produtor.

  • userLabels são rótulos criados pelo usuário, definidos como strings de chave-valor que seguem requisitos de sintaxe específicos. Esses rótulos são encaminhados para as ferramentas de gerenciamento de custos do Cloud Billing para atribuição. Para ver as convenções de rotulagem recomendadas, consulte Práticas recomendadas para rotulagem de uso.

Se a API services.check retornar um ou mais dos erros a seguir, recomendamos que você interrompa a prestação do serviço para o cliente até que o erro seja resolvido:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Práticas recomendadas para geração de relatórios de uso

Ao gerar relatórios de uso, por exemplo, operação do usuário ou utilização de recursos, lembre-se das seguintes informações para garantir que os clientes sejam cobrados corretamente.

Como informar o uso no momento da ocorrência

Os atrasos nos relatórios de uso afetam a experiência de gerenciamento de custos dos clientes e podem não ser refletidos nos relatórios dos parceiros. Os provedores de serviços precisam informar o uso em até uma hora depois do uso.

Caso você precise de mais tempo para informar o uso, entre em contato com o engenheiro de parceiros.

Como denunciar o uso após o cancelamento de um direito

Se você não tiver informado o uso depois que um direito for cancelado, ainda poderá fazer isso com um carimbo de data/hora que reflete o horário real em que o uso foi gerado. O carimbo de data/hora precisa ser anterior ao cancelamento do direito. Informe esse uso em até uma hora. Não informe nenhum uso novo após o direito terminar.

Como gerar relatórios de uso no final do mês

O período de geração de relatórios de uma hora se aplica ao prazo final do mês. Para garantir que o uso seja relatado na fatura do mês atual, informe o uso até 1h (horário do Pacífico) dos EUA e do Canadá (UTC-7 ou UTC-8).

Por exemplo, para uma fatura de setembro, informe o uso até 1º de outubro, 1h horário do Pacífico canadense e dos EUA (UTC-7 ou UTC-8).

Se o uso for relatado posteriormente no dia, ele poderá não ser incluído na fatura mensal atual.

Correção de ações dos clientes que impedem o uso de relatórios no momento da ocorrência

Se não for possível relatar o uso ou se o serviço ou o faturamento estiver desativado por um longo período, recomendamos que você forneça ao cliente um período de carência para restaurá-lo. Recomendamos que você não ultrapasse 30 dias. Durante esse período de carência, faça o seguinte:

  • Degradar o serviço fornecido. Por exemplo, mude o cliente para um nível gratuito ou comece a rejeitar chamadas.

  • Continue coletando o registro de uso enquanto o serviço estiver desativado. Recomendamos coletar o uso com o detalhamento de cobrança em, no máximo, uma janela de uma hora para que ela seja repetida após o serviço ser ativado.

Quando o serviço estiver ativado, informe o uso coletado enquanto o serviço foi desativado como uso real com o horário em que os dados foram coletados. Também é preciso retomar o relatório de uso normal.

Para aplicativos do Kubernetes, se os relatórios de uso falharem durante a inicialização, recomendamos que o aplicativo seja interrompido, para que os clientes recebam feedback imediato e resolvam o problema.

Práticas recomendadas para etiquetagem de uso

Para produtos SaaS baseados em uso, o uso é atribuído a um único projeto especificado pelo campo usageReportingId. Em alguns cenários, um produto SaaS pode ser compartilhado amplamente dentro da organização de um cliente e usado em muitos projetos de clientes. Para ativar o suporte a uma atribuição de custo mais específica, recomendamos que os produtos de SaaS baseados em uso incluam o campo opcional userLabels na operação do relatório de uso.

Se o serviço é nativamente compatível com um conceito de rótulos de recursos, recomendamos que você os encaminhe nos relatórios de uso. Os rótulos precisam estar em conformidade com os requisitos de sintaxe.

O Cloud Marketplace reserva os rótulos a seguir. Use esses rótulos para identificar mais contexto de uso na sua plataforma de serviços nativos. Recomendamos incluir esses rótulos nos seus relatórios de uso por padrão.

Chave da etiquetaValor da etiquetaDescrição>
cloudmarketplace.googleapis.com/resource_name USER_SUPPLIED O nome do recurso associado a uma métrica de uso.
cloudmarketplace.googleapis.com/container_name USER_SUPPLIED O nome de um contêiner de recursos.

Os rótulos são encaminhados para as ferramentas de gerenciamento de custos do Cloud Billing, incluindo relatórios de custo e exportações de faturamento.

Exemplo de rotulagem de uso

Neste exemplo, imagine que sua organização oferece um produto de armazenamento chamado Soluções de armazenamento SaaS.

Um cliente, Carl, comprou sua oferta de armazenamento para o projeto e-commerce-website do Google Cloud para hospedar os bancos de dados user_profiles_db e products_db para o site de e-commerce:

  • user_profiles_db contém informações sobre usuários que visitam o site do Carlos.
  • products_db contém informações sobre produtos que Carlos vende no site dele.

Para fornecer a Carlos um detalhamento dos custos do uso, use o par de chave-valor userLabels para informar o custo de uso de cada banco de dados separadamente.

Por exemplo, para informar o custo atribuído ao uso do armazenamento products_db de Carlos, envie o relatório a seguir, que indica que o armazenamento products_db de Carlos está custando 100 unidades:

operation = {
  'operationId': '<UUID>',
  'operationName': 'db-total-storage',
  'consumerId': 'project:carl_website',
  'startTime': '<Timestamp>',
  'endTime': '<Timestamp>',
  'metricValues': [{
      'int64Value': 100,
  }],
  'userLabels': {
    'cloudmarketplace.googleapis.com/container_name': 'e-commerce-website',
    'cloudmarketplace.googleapis.com/resource_name': 'products_db'
  }
}

service.services().report(
  serviceName=service_name, body={
    'operations': [operation]
}).execute()

Neste exemplo, service_name é o ID do projeto do Google Cloud de Carlos.

Para um exemplo mais detalhado do uso de userLabels, consulte o codelab de SaaS.

(Opcional) Integrar seus relatórios com a nuvem privada virtual (VPC)

Se você quiser usar a nuvem privada virtual (VPC) no ambiente em que o serviço do produto é executado, conclua as etapas a seguir para integrar os relatórios do Google Cloud Marketplace à VPC. Por padrão, as VMs do Compute Engine na VPC só podem se comunicar internamente. É necessário configurar uma das VMs para se comunicar externamente. Assim, o restante das VMs na VPC pode ser usado para gerar relatórios.

Antes de começar

Configurar o Acesso privado do Google

Para permitir que as máquinas virtuais (VMs) do Compute Engine do seu produto se comuniquem externamente para fins de geração de relatórios, configure o Acesso privado do Google. Para mais informações sobre como configurar o Acesso privado do Google, consulte Como configurar o Acesso privado do Google.

  1. Ative o Acesso privado do Google para o ambiente de serviço.

  2. Configure o DNS para resolver solicitações para private.googleapis.com.

  3. Crie uma rota personalizada para as APIs do Google:

    • Em Nome, especifique route-google-apis-services.

    • Em Rede, selecione sua VPC.

    • Em Intervalo de IP de destino, especifique 199.36.153.8/30.

    • Em Prioridade, especifique 0.

    • Em Tags de instância, especifique google-apis-services.

    • Em Próximo salto, selecione Gateway de Internet padrão.

  4. Crie uma regra de firewall da VPC para permitir que seu produto se comunique com as APIs do Google:

    • Em Nome, especifique google-apis-services.

    • Em Descrição, especifique Allow egress traffic to Google APIs and services.

    • Ative a geração de registros de regras de firewall.

    • Em Rede, selecione sua VPC.

    • Em Direção do tráfego, selecione Saída.

    • Em Ação se houver correspondência, selecione Permitir.

    • Em Nome, especifique google-apis-services.

    • Em Destinos, selecione Specified target tags e, em Tags de destino, especifique google-apis-services.

    • Em Filtro de destino, selecione IPv4 ranges e, em Intervalos IPv4 de destino, especifique 199.36.153.8/30.

    • Em Protocolos e portas, selecione Allow all.

  5. No console do Google Cloud, selecione a VM que você quer usar para relatar o uso do produto. Em Tags de rede, adicione google-apis-services e clique em SALVAR.

  6. Em Interfaces de rede, localize a interface de rede da VPC.

  7. Na coluna Sub-rede, clique no link da sub-rede. Na página Detalhes da sub-rede, clique em EDITAR e defina Acesso privado do Google como Ativado.

  8. Clique em SALVAR.

(Opcional) Integrar os relatórios com o VPC Service Controls

Se você quiser usar o VPC Service Controls no ambiente em que o serviço do produto é executado, conclua as etapas a seguir para integrar os relatórios do Google Cloud Marketplace com o VPC Service Controls:

  1. Configure a implementação preferida do VPC Service Controls no seu ambiente de serviço. Para mais informações sobre como configurar o VPC Service Controls, acesse Configurar um perímetro de serviço usando o VPC Service Controls.

  2. Verifique se o serviço servicecontrol.googleapis.com na implementação do VPC Service Controls não está restrito.