Como integrar o back-end do aplicativo

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

Nesta seção, descrevemos as etapas para integrar o back-end do aplicativo com o Google Cloud Marketplace. Com essa integração, é possível gerenciar as contas dos usuários e direitos, o que indica que os usuários compraram seu produto no Google 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 um exemplo de integração de um aplicativo básico ao Google Cloud Marketplace e um tutorial do código de amostra, 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

Como criar 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 aplicativo usa essa conta de serviço para interagir com as APIs do Partner do Google Cloud Marketplace 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 ver as etapas detalhadas de criação de uma conta de serviço, consulte Como criar e gerenciar contas de serviço.

Como usar o Portal do Produtor para integrar o back-end do aplicativo

Para acessar todas as informações necessárias à integração do back-end do aplicativo ao Google Cloud Marketplace em um só local, como contas de serviço e identificadores de nível de plano, veja 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 da produção, 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

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 do Partner 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 código dela no campo ID da conta de serviço. e clique em CRIAR E LINK.

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 da produção, 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, emVincular uma conta de serviço para chamar a API Procurement, clique emADICIONAR 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 a integração ao Pub/Sub, emVincular uma conta de serviço para se inscrever no tópico 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 a integração à API Service Control, emAdicionar 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 Google Cloud Marketplace, como se inscrever no produto.

  2. O Google Cloud Marketplace envia uma notificação ao aplicativo pelo Pub/Sub, contendo 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 Google 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": "..."
  }
}

USER_ACCOUNT_ID é o ID da conta criado pelo Google Cloud Marketplace e YOUR_PARTNER_ID é um ID atribuído a você quando o Partner Engine permite o 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.

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

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.

Como 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 no Google 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.

Como aprovar ou rejeitar um direito

Quando um cliente escolhe um plano de preços, o Google Cloud Marketplace cria um direito e envia a seguinte mensagem do Pub/Sub ao seu 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 Google 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 que indica a duração estará 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 à rejeição do 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 que indica a duração estará 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"
}

Como cancelar direitos

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 do Google, os direitos dele serão cancelados imediatamente, e os direitos e as contas dele 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_REQUESTEDSuspenso
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_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 Google 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 de primeiros passos.

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

em que:

  • 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.

    Você vê e referencia os identificadores para 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 em uma organização do cliente e usado em muitos projetos do cliente. Para ativar a compatibilidade com uma atribuição de custos mais específica, recomendamos que os produtos 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 Google Cloud Marketplace reserva os rótulos a seguir. É possível usar esses rótulos para identificar mais contexto de uso na sua plataforma de serviços nativos. Recomendamos que você inclua esses rótulos nos 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 custos e exportações de faturamento.

Exemplo de rotulagem de uso

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

Um cliente, Carlos, comprou a oferta de armazenamento do projeto e-commerce-website do Google Cloud para hospedar os bancos de dados user_profiles_db e products_db do site de comércio eletrônico:

  • user_profiles_db contém informações sobre os usuários que visitam o site da Carl.
  • O products_db contém informações sobre os produtos que Carol vende no próprio site.

Se você quiser fornecer a Carl um detalhamento de custos de 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 do Carl&o33;s, envie o seguinte relatório, que indica que o armazenamento products_db do Carl&o 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()

Para ver 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 seu 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 sua VPC só podem se comunicar internamente. Você precisa configurar uma das VMs para se comunicar externamente. Assim, o restante das VMs na VPC poderá usá-la 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 dos seus produtos se comuniquem externamente para fins de relatório, configure o Acesso privado do Google. Para mais informações, consulte Como configurar o Acesso privado do Google.

  1. Ative o Acesso privado do Google no seu 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 a VPC.

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

    • Em Priority, 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 a 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 seu 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 o Acesso privado do Google como Ativado.

  8. Clique em SALVAR.

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

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

  1. Configure sua implementação preferida do VPC Service Controls no 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 sua implementação do VPC Service Controls não está restrito.