Integrar el backend de tu app

En esta sección, se describen los pasos para integrar el backend de tu app en Cloud Marketplace. Con esta integración, puedes administrar cuentas de usuario y derechos, que indican que los usuarios compraron tu producto en Cloud Marketplace. Si eliges un modelo de precios basado en el uso, también integras tu backend para informar el uso a Google.

Para ver un ejemplo de integración de una app básica en Cloud Marketplace y una explicación del código de muestra, consulta el codelab para integrar un servicio administrado.

Para ver el código de muestra que se usa en el codelab, consulta el repositorio de GitHub.

Antes de comenzar

  • Configura el acceso a la API de Partner Procurement de Cloud Commerce, como se describe en Integra tu aplicación: configuración.
  • Si eliges un esquema de precios basado en el uso, verifica que tu Ingeniero socio haya creado un servicio en el que puedas informar el uso. Este servicio se muestra en el campo Dominio de servicio de la sección de integración de facturación de Producer Portal.

Crea una cuenta de servicio

Para integrar tu producto a Google Cloud, debes crear una cuenta de servicio en el proyecto que usas para tu producto. Tu app usa esta cuenta de servicio para interactuar con las APIs de socios de Cloud Marketplace y obtener información sobre las compras de los usuarios.

Usa Producer Portal para crear y vincular tus cuentas de servicio. Si quieres ver los pasos detallados para crear una cuenta de servicio, consulta Crea y administra cuentas de servicio.

Usa Producer Portal para integrar el backend de tu app

Si quieres acceder a toda la información que necesitas para integrar el backend de tu app en Cloud Marketplace desde una ubicación, como tus cuentas de servicio y los identificadores a nivel de plan, puedes usar la sección Integración de facturación de Producer Portal.

El vínculo directo a Producer Portal es el siguiente:

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

Para acceder a la sección Integración de facturación, sigue estos pasos:

  1. En la lista de productos, haz clic en el nombre del producto.

  2. En la página Descripción general de tu producto, ve a la sección Integración técnica y haz clic en Integración de la facturación.

Crea y vincula cuentas de servicio en Producer Portal

Puedes usar la sección Integración de facturación de Producer Portal para crear y vincular las cuentas de servicio que usas con el fin de interactuar con las APIs de socios y obtener información sobre las compras de los usuarios.

El vínculo directo a Producer Portal es el siguiente:

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

En los pasos siguientes, puedes usar cuentas de servicio existentes o crear cuentas de servicio nuevas. Si creas una cuenta de servicio nueva, especifica su nombre en el campo Nombre de la cuenta de servicio y el ID de la cuenta en el campo ID de cuenta de servicio. Luego, haz clic en Crear y vincular.

Para vincular tus cuentas de servicio, sigue estos pasos:

  1. En la lista de productos, haz clic en el nombre del producto.

  2. En la página Descripción general de tu producto, ve a la sección Integración técnica y haz clic en Integración de la facturación.

  3. Para realizar la integración en la API de Partner Procurement, en Link a service account to call Procurement API, haz clic en Add service account. Puedes ingresar una cuenta de servicio existente en el campo o crear una cuenta de servicio nueva.

  4. Para integrar con Pub/Sub, en Vincula una cuenta de servicio al tema de Pub/Sub, haz clic en Agregar cuenta de servicio. Puedes ingresar una cuenta de servicio existente en el campo o crear una cuenta de servicio nueva.

  5. Para integrar la API de Service Control, en Agregar roles/servicemanagement.serviceController a una cuenta de servicio, haz clic en Agregar cuenta de servicio. Puedes ingresar una cuenta de servicio existente en el campo o crear una cuenta de servicio nueva.

Tareas de cuenta de usuario

En un nivel alto, la aplicación debe controlar la siguiente situación:

  1. Un usuario realiza una solicitud o un cambio en Cloud Marketplace, como el registro en tu producto.

  2. Cloud Marketplace le envía a la app una notificación a través de Pub/Sub, que contiene información sobre la solicitud en el campo eventType. Por ejemplo, si un usuario cambia su autorización, la eventType es ENTITLEMENT_PLAN_CHANGED.

    Consulta la lista completa de eventType posibles.

  3. Para aprobar la solicitud, tu aplicación envía una solicitud HTTP POST a la API de Partner Procurement.

En las secciones siguientes, se describen los tipos de solicitudes que pueden realizar los usuarios y que debe hacer la aplicación para controlar las solicitudes.

Para las llamadas a la API que se describen en esta sección, usa el siguiente extremo:

https://cloudcommerceprocurement.googleapis.com/

Cómo crear una cuenta para un usuario nuevo

Cuando un usuario compra tu producto por primera vez, Cloud Marketplace crea un recurso de cuenta que realiza un seguimiento de la relación del usuario contigo. Cuando se crea el recurso de cuenta, recibes una notificación a través del tema de Pub/Sub que se creó para ti. El mensaje de Pub/Sub tiene el siguiente formato:

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

En el ejemplo anterior, USER_ACCOUNT_ID es el ID de la cuenta que creó Cloud Marketplace y YOUR_PARTNER_ID es un ID que se te asigna cuando el Ingeniero socio habilita el acceso a la API de Partner Procurement.

Al mismo tiempo, se dirige al usuario a la página de registro, en la que crea una cuenta en tu sistema. Para obtener información sobre la creación de la página de registro, consulta Integra el frontend de la aplicación.

Aprueba la cuenta de un usuario

Después de que el usuario se registró con éxito, la aplicación debe llamar a la API de Partner para indicar que la cuenta se aprobó. Las cuentas se crean con el estado ACCOUNT_ACTIVE, pero tienen una entrada PENDING en el campo approvals llamada signup, lo que indica que el usuario aún no se registró. Para aprobar la cuenta después de que el usuario se registró, usa la siguiente solicitud HTTP POST:

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

Verifica el estado de la cuenta de un usuario

Para verificar el estado de una cuenta vinculada, usa la siguiente solicitud HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/accounts/USER_ACCOUNT_ID

La respuesta está en el siguiente 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 obtener una lista de posibles estados de cuenta, consulta la referencia de la API de providers.accounts.

Administra derechos

Cuando los clientes eligen un plan de precios para el software, Google crea una autorización, que indica que el cliente compró el producto en Cloud Marketplace. En esta sección, se explica cómo crear y administrar autorizaciones para tus clientes con la API de Partner Procurement.

Si quieres obtener más información para administrar derechos, consulta la documentación de referencia.

Aprueba o rechaza una autorización

Cuando un cliente elige un plan de precios, Cloud Marketplace crea una autorización y envía el siguiente mensaje de Pub/Sub a tu app:

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

En el ejemplo anterior, ENTITLEMENT_ID es un ID creado por Cloud Marketplace. Si la oferta tiene una duración específica, esta se proporciona en años y meses. Si la oferta tiene una fecha de finalización específica, en lugar de una duración, el campo que indica que la duración está vacío.

En tu sistema, actualiza la cuenta del usuario para reflejar que compró un plan. Luego, para aprobar la autorización, realiza una solicitud HTTP POST a la API de Partner Procurement y envía el ENTITLEMENT_ID que aprobaste:

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

Para rechazar una autorización, usa el método reject en tu solicitud HTTP POST:

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

A fin de brindar un motivo para rechazar el derecho en el cuerpo de la solicitud, usa el siguiente formato:

{
  "reason": "..."
}

Cómo cambiar un plan de derechos

De acuerdo con la manera en que configures los planes de precios, los clientes podrían cambiar sus planes. Si un cliente selecciona un plan de precios nuevo, recibirás un mensaje de Pub/Sub en el siguiente 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
  },
}

Si la oferta tiene una duración específica, esta se proporciona en años y meses. Si la oferta tiene una fecha de finalización específica, en lugar de una duración, el campo que indica que la duración está vacío.

Para aprobar el cambio de plan, realiza la siguiente solicitud HTTP POST a la API de socio:

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

El cuerpo de la solicitud debe contar con el plan que se aprueba:

{
  "pendingPlanName": PLAN_NAME
}

Después de que se apruebe el cambio, recibirás otro mensaje de Pub/Sub cuando entre en vigencia. En el mensaje, el campo eventType cambia a ENTITLEMENT_PLAN_CHANGED. Para verificar el estado de un plan, realiza la siguiente solicitud HTTP GET a la API de Partner Procurement.

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La respuesta es similar a la siguiente, el campo state indica si el plan nuevo está activo o si el cambio del plan todavía está pendiente.

{
  "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",
  ...
}

Envía un mensaje de estado a los usuarios

Si el tiempo entre que un usuario elige un plan de precios y que el backend aprueba la autorización es de unas horas o mayor, recomendamos que envíes un mensaje de estado a los usuarios. En el mensaje, indica el progreso de la aprobación y, si está disponible, cuándo esperas que se complete.

Para proporcionar un mensaje de estado, realiza la siguiente solicitud HTTP POST a la API de Procurement:

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

En el cuerpo de la solicitud, proporciona el texto del mensaje, similar al siguiente ejemplo:

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

Cancela un derecho

Si un usuario decide cancelar la autorización, recibirás una notificación de Pub/Sub. De igual manera que cuando se cambia un plan, la cancelación se efectuará al final del ciclo de facturación actual.

La notificación está en el siguiente 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": "..."
  },
}

Borra una autorización

Si un usuario envía una solicitud directa al equipo de Atención al cliente de Google o si abandona la plataforma de Google, sus derechos se cancelan de inmediato, y esos derechos y sus cuentas se borran después de un período de gracia de 60 días. Para proteger la privacidad del usuario, debes borrar sus datos de los servidores cuando recibes la notificación.

Cuando se cancelan las autorizaciones y se borra la cuenta, recibirás notificaciones similares a las que se muestran a continuación:

{
  "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 tareas de la cuenta

A continuación, se muestra una lista de los eventType que tu app podría recibir en mensajes de Pub/Sub:

eventTypeDescripción
ACCOUNT_CREATION_REQUESTEDFunciones obsoletas
ACCOUNT_ACTIVEIndica que se creó la cuenta del cliente.
ACCOUNT_DELETEDIndica que la cuenta del cliente se borró de los sistemas de Google Cloud.
ENTITLEMENT_CREATION_REQUESTEDIndica que un cliente seleccionó uno de sus planes de precios.
ENTITLEMENT_OFFER_ACCEPTEDIndica que un cliente aceptó una oferta. Incluye la hora de inicio programada de la oferta, si la hay.
ENTITLEMENT_ACTIVEIndica que el plan elegido de un cliente ahora está activo.
ENTITLEMENT_PLAN_CHANGE_REQUESTEDIndica que un cliente eligió un plan nuevo.
ENTITLEMENT_PLAN_CHANGEDIndica que el cambio de plan del cliente está aprobado y que los cambios entraron en vigencia.
ENTITLEMENT_PLAN_CHANGE_CANCELLEDIndica que se canceló el cambio de plan de un cliente, ya sea porque no se aprobó o porque volvió a su plan anterior.
ENTITLEMENT_PENDING_CANCELLATIONIndica que un cliente canceló su plan y la cancelación está pendiente hasta el final del ciclo de facturación.
ENTITLEMENT_CANCELLATION_REVERTEDIndica que se revocó la cancelación pendiente de un cliente. Ten en cuenta que las cancelaciones no se pueden revertir después de su finalización.
ENTITLEMENT_CANCELLEDIndica que se canceló el plan de un cliente.
ENTITLEMENT_CANCELLINGIndica que el plan del cliente está en proceso de cancelación.
ENTITLEMENT_RENEWEDIndica que el derecho de un cliente se renovó por otro período. No es necesario que realices ninguna acción para completar la renovación.
ENTITLEMENT_OFFER_ENDEDIndica que finalizó la oferta privada de un cliente. Si se canceló el derecho del cliente, se activa un evento ENTITLEMENT_CANCELLED independiente. Si el derecho del cliente sigue activo, su plan se revierte a un precio sin descuento.
ENTITLEMENT_DELETEDIndica que la información sobre el plan de un cliente se borró de Cloud Marketplace.

Informa el uso a Google (para precios basados en el uso)

Si eliges precios basados en el uso para tu producto, debes informar el uso de la aplicación a la API de Service Control.

Para obtener más información sobre Control de servicios, consulta la guía de introducción.

Te recomendamos que uses Producer Portal para crear una cuenta de servicio en Producer Portal a fin de usarla con Control de servicios.

Cuando se crea una autorización, debes llamar a la API de Partner Procurement para recuperar un usageReportingId mediante la siguiente solicitud HTTP GET:

GET v1/providers/YOUR_PARTNER_ID/entitlements/ENTITLEMENT_ID

La respuesta contiene información sobre la autorización, en el siguiente 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 el uso, primero debes realizar una llamada a la API de services.check a fin de verificar la configuración del servicio. En la respuesta, si el objeto checkErrors[] está vacío, realiza una llamada a la API de services.report para enviar el informe de uso.

El informe de uso es una API de Service Control Operation. El siguiente es un ejemplo de un informe de uso de example-messaging-service que envía información sobre el almacenamiento que usa el 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"
    }
  }]
}

Donde:

  • operationId es una string única que genera tu instancia de servicio. Debes usar el mismo operationId para tus operaciones check y report.

  • consumerId es el mismo que el usageReportingId del derecho.

  • startTime y endTime representan las horas de inicio y finalización del intervalo total de la operación report. En la mayoría de los casos, el startTime de una operación report debe tener el mismo valor que el endTime de la operación report anterior.

    Si se inhabilita el servicio de un cliente antes del startTime de una operación report, la llamada a la API de services.check envía un error en el objeto checkErrors[] y no se cobra al cliente por el intervalo correspondiente.

  • MetricValueSet contiene un intervalo de tiempo o uno intermedio, y los valores de la métrica actualizados correspondientes. Defines las métricas de tu servicio cuando eliges y envías tu modelo de precios.

    Puedes ver y hacer referencia a los identificadores para tus métricas en la sección Integración técnica de Producer Portal.

  • Las userLabels son etiquetas creadas por el usuario, definidas como strings de pares clave-valor que siguen requisitos de sintaxis específicos. Estas etiquetas se reenvían a las herramientas de administración de costos de Facturación de Cloud para su atribución. Si deseas conocer las convenciones de etiquetado recomendadas, consulta Prácticas recomendadas para el etiquetado de uso.

Si la API services.check muestra uno o más de los siguientes errores, te recomendamos que dejes de proporcionar tu servicio al cliente hasta que se resuelva el error:

  • SERVICE_NOT_ACTIVATED
  • BILLING_DISABLED
  • PROJECT_DELETED

Prácticas recomendadas para los informes de uso

Cuando informes el uso, por ejemplo, la operación del usuario o el uso de recursos, ten en cuenta la siguiente información para garantizar que tus clientes se facturen de forma correcta.

Informa el uso en el momento en que ocurre

Los retrasos en los informes de uso degradan la experiencia de administración de costos de tus clientes y es posible que no se reflejen en los informes de los socios. Los proveedores de servicios deben informar el uso en el plazo de una hora a partir de la generación del uso.

Si necesitas más tiempo para informar sobre el uso, comunícate con tu Ingeniero socio.

Cómo informar el uso después de que se cancela una autorización

Si tienes un uso no informado después de que se cancela una autorización, aún puedes informarlo con una marca de tiempo que refleje la hora real en la que se generó el uso. La marca de tiempo debe ser anterior a la cancelación del derecho. Informa este uso en el transcurso de una hora. No debes informar ningún uso como uso nuevo después de que finalice el derecho.

Crear informes sobre el uso al final del mes

El período de informe de una hora se aplica a la fecha límite de fin de mes. Para asegurarte de que se informe el uso en la factura del mes actual, informa el uso antes de la 1 a.m., hora del Pacífico de EE.UU. y Canadá (UTC-7 o UTC-8) del día siguiente.

Por ejemplo, para una factura de septiembre, informa el uso antes del 1 de octubre a la 1 a.m., hora del Pacífico de EE.UU. y Canadá (UTC-7 o UTC-8).

Si el uso se informa más tarde en el día, es posible que no se incluya en la factura del mes actual.

Solución para las acciones de los clientes que impiden el uso de informes en el momento en que ocurren

Si no puedes informar el uso o si el servicio o la facturación se inhabilitaron durante un tiempo prolongado, te recomendamos que le otorgues al cliente un período de gracia para restablecer el servicio. Te recomendamos que no se excedan los 30 días. Durante este período de gracia, considera hacer lo siguiente:

  • Degradar el servicio proporcionado Por ejemplo, cambia al cliente a un nivel gratuito o comienza a rechazar llamadas.

  • Seguir recopilando el registro de uso mientras el servicio esté inhabilitado. Recomendamos recopilar el uso con el desglose del cargo mediante, como máximo, un período de una hora para que se pueda volver a reproducir después de que se habilite el servicio.

Cuando el servicio está habilitado, debes informar el uso recopilado mientras el servicio estaba inhabilitado como uso real con la hora en que se recopilaron los datos. También debes reanudar los informes de uso normal.

En el caso de las apps de Kubernetes, si los informes de uso fallan durante el inicio, recomendamos que la app se detenga por sí misma, para que los clientes obtengan comentarios inmediatos y puedan resolver el problema.

Prácticas recomendadas para el etiquetado de uso

Para los productos de SaaS basados en el uso, el uso se atribuye a un solo proyecto especificado por el campo usageReportingId. En algunas situaciones, un producto de SaaS puede compartirse de forma amplia dentro de la organización de un cliente y usarse en muchos proyectos de clientes. Para habilitar la compatibilidad con una atribución de costos más específica, recomendamos que los productos de SaaS basados en el uso incluyan el campo opcional userLabels en su operación de informe de uso.

Si tu servicio admite de forma nativa un concepto de etiquetas de recursos, te recomendamos que reenvíes esas etiquetas en tus informes de uso. Las etiquetas deben cumplir con los requisitos de sintaxis.

Cloud Marketplace reserva las siguientes etiquetas. Puedes usar estas etiquetas para identificar contexto adicional de uso dentro de tu plataforma de servicios nativa. Te recomendamos que incluyas estas etiquetas en tus informes de uso de forma predeterminada.

Clave de etiquetaValor de etiquetaDescription>
cloudmarketplace.googleapis.com/resource_name USER_SUPPLIED El nombre del recurso asociado con una métrica de uso.
cloudmarketplace.googleapis.com/container_name USER_SUPPLIED Es el nombre de un contenedor de recursos.

Las etiquetas se reenvían a las herramientas de administración de costos de la Facturación de Cloud, incluidos los informes de costos y las exportaciones de facturación.

Ejemplo de etiquetado de uso

Para este ejemplo, imagina que tu organización ofrece un producto de almacenamiento llamado Soluciones de almacenamiento de SaaS.

Un cliente, Carl, compró tu oferta de almacenamiento para su proyecto de Google Cloud e-commerce-website a fin de alojar las bases de datos user_profiles_db y products_db para su sitio web de comercio electrónico:

  • user_profiles_db contiene información sobre los usuarios que visitan el sitio de Carlos.
  • products_db contiene información sobre productos que Carl vende en su sitio.

Si quieres proporcionarle a Carlos un desglose detallado del costo de su uso, puedes usar el par clave-valor userLabels para informar el costo de uso de cada base de datos por separado.

Por ejemplo, para informar el costo atribuido al uso de almacenamiento de products_db de Carlos, podrías enviar el siguiente informe, que indica que el almacenamiento de products_db de Carlos le cuesta 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()

En este ejemplo, service_name es el ID del proyecto de Google Cloud de Carlos.

Para obtener un ejemplo más detallado del uso de userLabels, puedes consultar el codelab de SaaS.

Integra los informes a la nube privada virtual (VPC) (opcional)

Si deseas usar la nube privada virtual (VPC) en el entorno en el que se ejecuta el servicio de tu producto, debes completar los siguientes pasos para integrar los informes de Google Cloud Marketplace a VPC. De forma predeterminada, las VM de Compute Engine en tu VPC solo pueden comunicarse de forma interna. Debes configurar una de las VM para que se comunique externamente, de modo que el resto de las VM de tu VPC pueda usarla para la generación de informes.

Antes de comenzar

Configura el Acceso privado a Google

Si quieres permitir que las máquinas virtuales (VMs) de Compute Engine de tu producto se comuniquen de forma externa con fines de generación de informes, debes configurar el Acceso privado a Google. Para obtener más información sobre la configuración del Acceso privado a Google, consulta Cómo configurar el Acceso privado a Google.

  1. Habilita el Acceso privado a Google para tu entorno de servicio.

  2. Configura DNS para resolver las solicitudes a private.googleapis.com.

  3. Crea una ruta personalizada para las APIs de Google:

    • En Nombre, especifica route-google-apis-services.

    • En Red, selecciona tu VPC.

    • En Rango de IP de destino, especifica 199.36.153.8/30.

    • En Prioridad, especifica 0.

    • En Etiquetas de instancia, especifica google-apis-services.

    • En Siguiente salto, selecciona Puerta de enlace de Internet predeterminada.

  4. Crea una regla de firewall de VPC para permitir que tu producto se comunique con las APIs de Google:

    • En Nombre, especifica google-apis-services.

    • En Descripción, especifica Allow egress traffic to Google APIs and services.

    • Habilita el registro de reglas de firewall.

    • En Red, selecciona tu VPC.

    • En Dirección del tráfico, selecciona Salida.

    • En Acción en caso de coincidencia, selecciona Permitir.

    • En Nombre, especifica google-apis-services.

    • En Destinos, selecciona Specified target tags y, luego, en Etiquetas de destino, especifica google-apis-services.

    • En Filtro de destino, selecciona IPv4 ranges y, en Rangos de IPv4 de destino, especifica 199.36.153.8/30.

    • En Protocolos y puertos, selecciona Allow all.

  5. En la consola de Google Cloud, selecciona la VM que deseas usar para informar el uso de tu producto. En Etiquetas de red, agrega google-apis-services y haz clic en GUARDAR.

  6. En Interfaces de red, busca la interfaz de red de tu VPC.

  7. En la columna Subred, haz clic en el vínculo de la subred. En la página Detalles de la subred, haz clic en EDITAR y configura el Acceso privado a Google en Activado.

  8. Haz clic en GUARDAR.

Integra los informes a los Controles del servicio de VPC (opcional)

Si deseas usar los Controles del servicio de VPC en el entorno en el que se ejecuta el servicio de tu producto, debes completar los siguientes pasos para integrar los informes de Google Cloud Marketplace a los Controles del servicio de VPC:

  1. Configura la implementación que prefieras de los Controles del servicio de VPC en tu entorno de servicio. Para obtener más información sobre la configuración de los Controles del servicio de VPC, consulta Configura un perímetro de servicio con los Controles del servicio de VPC.

  2. Asegúrate de que el servicio servicecontrol.googleapis.com en tu implementación de los Controles del servicio de VPC no esté restringido.