Configurar exportaciones

En esta página, se explica cómo exportar seguimientos mediante la API de Cloud Trace y la herramienta de línea de comandos de gcloud. Debes usar la versión 274.0.0 o una posterior del SDK de Cloud. Para obtener información sobre cómo actualizar el SDK de Cloud, consulta gcloud components update .

Algunas muestras en esta página se generaron mediante curl. Para obtener información sobre cómo configurar esta herramienta, consulta Usa curl.

Terminología

Para simplificar los ejemplos en esta página, se usaron variables de entorno.

En los ejemplos de la herramienta de línea de comandos de gcloud, se usan las siguientes variables de entorno:

  • SINK_ID: Es el nombre o el identificador, del receptor. Por ejemplo, my-sink No necesitas proporcionar el comando completamente calificado a la herramienta de línea de comandos de gcloud, ya que puede determinar tu proyecto de Google Cloud.
  • DESTINATION: Almacena el nombre completamente calificado del destino. Este debe ser un conjunto de datos de BigQuery. Por ejemplo, el siguiente es un destino válido:

    bigquery.googleapis.com/projects/[DESTINATION_PROJECT_NUMBER]/datasets/[DATASET_ID]
    

    En el ejemplo anterior, [DESTINATION_PROJECT_NUMBER] es el número del proyecto de Google Cloud del destino y [DATASET_ID] es el identificador del conjunto de datos de BigQuery.

En los ejemplos de curl, se usan las siguientes variables de entorno:

  • ACCESS_TOKEN: Almacena el token de autorización. Para obtener más información, consulta Usa curl.
  • PROJECT_ID: Almacena el identificador o el número de proyecto del proyecto de Google Cloud.
  • PROJECT_NUMBER: Almacena el número de proyecto de Google Cloud.
  • SINK_ID: Es el nombre o el identificador, del receptor. Por ejemplo, my-sink
  • SINK_BODY: Almacena la descripción de un recurso TraceSink. El recurso TraceSink incluye un nombre y el destino del receptor. El nombre debe especificar el número del proyecto de Google Cloud.
  • DESTINATION: Almacena el nombre completamente calificado del destino. Este debe ser un conjunto de datos de BigQuery.

Configura el destino

Para exportar seguimientos a BigQuery, haz lo siguiente:

  1. Crea el conjunto de datos de destino.

  2. Crea el receptor mediante la API de Cloud Trace o la herramienta de línea de comandos de gcloud. Para obtener más información, consulta Crea un receptor.

  3. Otorga al receptor la función dataEditor en tu conjunto de datos de BigQuery:

    1. Obtén la identidad de escritor a partir del receptor. Para obtener información sobre la identidad de escritor, consulta Terminología y propiedades del receptor.

      La identidad de escritor de un receptor se incluye en los datos de respuesta al comando create. También se incluye en los datos de respuesta del comando list.

    2. Agrega la identidad de escritor del receptor como una cuenta de servicio a tu conjunto de datos de BigQuery y asígnale la función de Editor de datos de BigQuery.

      • Para agregar los permisos mediante Google Cloud Console, consulta Controla el acceso a los conjuntos de datos.

      • Para agregar los permisos mediante la herramienta de línea de comandos de gcloud, usa el comando add-iam-policy-binding y proporciona el identificador del proyecto de Google Cloud y la identidad de escritor del receptor:

        gcloud projects add-iam-policy-binding ${DESTINATION_PROJECT_ID} \
          --member serviceAccount:${WRITER_IDENTITY} \
          --role roles/bigquery.dataEditor
        

        En el comando anterior, WRITER_IDENTITY es una variable de entorno que almacena la identidad de escritor del receptor y DESTINATION_PROJECT_ID es el identificador del proyecto de Google Cloud del conjunto de datos de BigQuery.

Enumera receptores

Para mostrar una lista de todos los receptores de tu proyecto de Google Cloud, incluidas sus identidades de escritor, invoca el método traceSinks.list.

gcloud

Para mostrar una lista de los receptores definidos con el proyecto predeterminado mediante la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud alpha trace sinks list

Protocolo

Para enumerar receptores mediante curl, envía una solicitud GET al siguiente enlace:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Por ejemplo, la siguiente solicitud recupera todos los receptores:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Muestra detalles de un receptor específico

Para mostrar los detalles de un receptor específico que esté en tu proyecto de Google Cloud, invoca el método traceSinks.get.

gcloud

Para mostrar los detalles del receptor cuyo identificador se almacena en SINK_ID mediante la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud alpha trace sinks describe ${SINK_ID}

Protocolo

Para mostrar los detalles del receptor cuyo identificador se almacena en SINK_ID mediante curl, envía una solicitud GET al siguiente enlace:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/%{SINK_ID}

Por ejemplo, la siguiente solicitud recupera los detalles del receptor especificado:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Crea un receptor

Para crear un receptor en tu proyecto de Google Cloud, invoca el método traceSinks.create. El destino de un receptor debe ser un conjunto de datos de BigQuery.

Este conjunto de datos debe existir antes de crear el receptor. Trace no verifica la existencia del destino. Consulta Crea conjuntos de datos para obtener información sobre la creación de conjuntos de datos de BigQuery.

gcloud

Para crear un receptor con la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud alpha trace sinks create ${SINK_ID} ${DESTINATION}

Protocolo

Para crear un receptor mediante curl, envía una solicitud POST al siguiente enlace:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Por ejemplo, a fin de crear un receptor llamado test_sink para exportar intervalos de seguimiento a test_dataset en el proyecto con ${PROJECT_NUMBER}, define la variable de entorno SINK_BODY como se muestra a continuación:

SINK_BODY='{"name":"projects/12345/traceSinks/test_sink","output_config":{"destination":"bigquery.googleapis.com/projects/12345/datasets/test_dataset"}}'

Para crear el cliente, ejecuta el siguiente comando:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  --header "Content-Type: application/json"   -X POST -d ${SINK_BODY} https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks

Después de que se crea un receptor, pueden pasar varios minutos hasta que se exporten los intervalos de seguimiento.

Borra un receptor

Para borrar un receptor que está en tu proyecto de Google Cloud, invoca el comando traceSinks.delete.

gcloud

Para borrar el receptor cuyo identificador se almacena en SINK_ID mediante la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud alpha trace sinks delete ${SINK_ID}

Protocolo

Para borrar el receptor cuyo identificador se almacena en SINK_ID mediante curl, envía una solicitud DELETE al siguiente enlace:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Por ejemplo, la siguiente solicitud borra un receptor:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  -X DELETE https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Actualiza un receptor

Para actualizar un receptor que está en tu proyecto de Google Cloud, invoca el comando traceSinks.patch.

Este conjunto de datos debe existir antes de crear el receptor. Trace no verifica la existencia del destino.

gcloud

Para actualizar el receptor cuyo identificador se almacena en SINK_ID mediante la herramienta de línea de comandos de gcloud, ejecuta el siguiente comando:

gcloud alpha trace sinks update ${SINK_ID} ${DESTINATION}

La variable de entorno DESTINATION almacena el nuevo destino para el receptor.

Protocolo

Para actualizar el destino del receptor cuyo identificador se almacena en SINK_ID mediante curl, envía una solicitud PATCH al siguiente enlace:

https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}

Por ejemplo, la siguiente solicitud actualiza el destino de un receptor:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}"  --header "Content-Type: application/json"  -X PATCH -d ${SINK_BODY} https://cloudtrace.googleapis.com/v2beta1/projects/${PROJECT_NUMBER}/traceSinks/${SINK_ID}?update_mask=output_config.destination

Si deseas ver un ejemplo de un SINK_BODY, consulta el ejemplo para crear un receptor.

Después de actualizar un receptor, pueden pasar varios minutos hasta que los intervalos de seguimiento se exporten al destino nuevo.

Ejemplo de extremo a extremo

En esta sección, se ilustra cómo usar los comandos de la herramienta de línea de comandos de gcloud para enumerar, crear, describir, actualizar y borrar un receptor. Los comandos se ejecutaron para un proyecto con el identificador de proyecto a-sample-project. Este proyecto ya está configurado para contener 2 conjuntos de datos de BigQuery. Por último, en estos ejemplos, el receptor y el destino están en el mismo proyecto. Este no es un requisito. El receptor y el destino pueden estar en diferentes proyectos de Google Cloud.

Pasos de configuración

  1. Verifica la configuración del proyecto predeterminado:

    $ gcloud config list
    

    Respuesta de muestra:

    [compute]
    zone = us-east1-b
    [core]
    account = user@example.com
    disable_usage_reporting = True
    project = a-sample-project
    
    Your active configuration is: [default]
    
  2. Verifica que la herramienta de línea de comandos de gcloud sea, al menos, 274.0.0:

    $ gcloud --version
    

    Respuesta de muestra:

    Google Cloud SDK 275.0.0
    alpha 2020.01.03
    beta 2020.01.03
    bq 2.0.51
    core 2020.01.03
    gsutil 4.46
    kubectl 2020.01.03
    
  3. Identifica los conjuntos de datos disponibles en el proyecto predeterminado:

    $ bq ls
    

    Respuesta de muestra:

        datasetId
     ---------------
      dataset_1
      dataset_other
    

    Ten en cuenta que la primera vez que uses los comandos de bq, es posible que debas seleccionar el proyecto.

Configura las variables de entorno

  1. Configura las variables de entorno que usa el comando de la herramienta de línea de comandos de gcloud:

    $ PROJECT_ID=a-sample-project
    $ PROJECT_NUMBER=123456789000
    $ SINK_ID=a-sample-sink
    $ DATA_SET_NAME=dataset_1
    $ DESTINATION=bigquery.googleapis.com/projects/${PROJECT_NUMBER}/datasets/${DATA_SET_NAME}
    

    En este ejemplo, el destino y el receptor están en el mismo proyecto. Este no es un requisito. El receptor y el destino pueden estar en diferentes proyectos de Google Cloud.

  2. Verifica la configuración:

    $ echo $SINK_ID
    a-sample-sink
    $ echo $DATA_SET_NAME
    dataset_1
    $ echo $DESTINATION
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_1
    

Mostrar receptores

Para mostrar todos los receptores, ejecuta el siguiente comando:

$ gcloud alpha trace sinks list

Debido a que este proyecto no tiene ningún receptor, la respuesta es la siguiente:

Listed 0 items.

Crea un receptor

  1. Para crear un receptor, ejecuta el siguiente comando:

    $ gcloud alpha trace sinks create ${SINK_ID} ${DESTINATION}
    

    Respuesta de muestra:

    You can give permission to the service account by running the following command.
    gcloud projects add-iam-policy-binding bigquery-project \
    --member serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com \
    --role roles/bigquery.dataEditor
    

    Ten en cuenta que el nombre de la cuenta de servicio incluye export-0000001cbe991a08-3434. El número 0000001cbe991a08 es la representación hexadecimal del PROJECT_NUMBER. El valor 3434 es un valor aleatorio.

    Antes de ejecutar la herramienta de línea de comandos de gcloud en la respuesta anterior, debes reemplazar bigquery-project con el identificador de tu proyecto.

  2. Verifica si se creó el receptor:

    $ gcloud alpha trace sinks list
    

    Respuesta de muestra:

    NAME           DESTINATION                                                       WRITER_IDENTITY
    a-sample-sink  bigquery.googleapis.com/projects/123456789000/datasets/dataset_1  export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    
  3. Describe el receptor en detalle:

    $ gcloud alpha trace sinks describe ${SINK_ID}
    

    Respuesta de muestra:

    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_1
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    
  4. Otorga el permiso bigquery.dataEditor a la identidad de escritura del receptor. El comando de creación del receptor muestra un comando de la herramienta de línea de comandos de gcloud que puedes usar para actualizar el permiso.

    Para que este comando se ejecute de forma correcta, haz lo siguiente:

    • Asegúrate de tener permiso para modificar los permisos de destino.
    • Reemplaza bigquery-project con tu identificador de proyecto:
    gcloud projects add-iam-policy-binding ${PROJECT_ID} --member serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com --role roles/bigquery.dataEditor
    

    Ten en cuenta que la primera entrada en esta respuesta de muestra es la identidad de escritor del receptor:

    Updated IAM policy for project [a-sample-project].
    bindings:
    - members:
      - serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
      role: roles/bigquery.dataEditor
    - members:
      - user:user@example.com
      role: roles/cloudtrace.admin
    - members:
      - serviceAccount:service-123456789000@compute-system.iam.gserviceaccount.com
      role: roles/compute.serviceAgent
    - members:
      - serviceAccount:service-123456789000@gcp-sa-computescanning.iam.gserviceaccount.com
      role: roles/computescanning.serviceAgent
    - members:
      - serviceAccount:service-123456789000@container-engine-robot.iam.gserviceaccount.com
      role: roles/container.serviceAgent
    - members:
      - serviceAccount:service-123456789000@container-analysis.iam.gserviceaccount.com
      role: roles/containeranalysis.ServiceAgent
    - members:
      - serviceAccount:123456789000-compute@developer.gserviceaccount.com
      - serviceAccount:123456789000@cloudservices.gserviceaccount.com
      - serviceAccount:service-123456789000@containerregistry.iam.gserviceaccount.com
      role: roles/editor
    - members:
      - user:user@example.com
      role: roles/owner
    etag: BwWbqGVnShQ=
    version: 1

Cambia el destino del receptor

En este ejemplo, el destino cambia de dataset_1 a dataset_other:

  1. Actualiza las variables de entorno DATA_SET_NAME y DESTINATION:

    $ DATA_SET_NAME=dataset_other
    $ DESTINATION=bigquery.googleapis.com/projects/${PROJECT_NUMBER}/datasets/${DATA_SET_NAME}
    $ echo ${DESTINATION}
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    

    Asegúrate de actualizar el valor de DESTINATION después de modificar DATA_SET_NAME o PROJECT_NUMBER.

  2. Cambia el destino del receptor:

    $ gcloud alpha trace sinks update ${SINK_ID} ${DESTINATION}
    

    El siguiente es un resultado de muestra:

    Updated [https://cloudtrace.googleapis.com/v2beta1/projects/123456789000/traceSinks/a-sample-sink].
    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    

    Ejecuta el comando describe para ver los detalles del receptor:

    $ gcloud alpha trace sinks describe ${SINK_ID}
    destination: bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    name: a-sample-sink
    writer_identity: export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
    

    Cuando actualizas el destino de un receptor, no cambias la identidad de escritor del receptor y, por lo tanto, no es necesario actualizar los permisos para el receptor.

Borra un receptor

Para borrar un receptor, ejecuta el siguiente comando:

$ gcloud alpha trace sinks delete ${SINK_ID}

El resultado de la muestra es el siguiente:

Really delete sink [a-sample-sink]?

Do you want to continue (y/N)?  y

Deleted [https://cloudtrace.googleapis.com/v2beta1/projects/123456789000/traceSinks/a-sample-sink].

Para verificar el resultado, ejecuta el comando list:

$ gcloud alpha trace sinks list
Listed 0 items.

Validación

Puedes usar la métrica exported_span_count de Cloud Monitoring como base para un gráfico que muestre los errores cuando los datos de Trace se exportan a BigQuery. También puedes crear una política de alertas que te notifique si se producen errores de exportación.

Crea un gráfico

Para consultar las métricas de un recurso supervisado con el Explorador de métricas, haz lo siguiente:

  1. En Google Cloud Console, ve a Monitoring o usa el siguiente botón:
    Ir a Monitoring
  2. En el panel de navegación de Monitoring, haz clic en  Explorador de métricas.
  3. Asegúrate de que esté seleccionada la pestaña Métrica.
  4. Haz clic en el cuadro que tiene la etiqueta Encontrar tipo de recurso y métrica y, a continuación, selecciona estos elementos en el menú o ingresa sus nombres. Usa la siguiente información para completar los campos de este cuadro de texto:
    1. Ingresa Cloud Trace en Tipo de recurso.
    2. Selecciona Intervalos exportados a BigQuery para la Métrica.
  5. Para modificar la forma en que se muestran los datos, usa los menús Filtrar, Agrupar por y Aggregator. Para este gráfico, usa la siguiente configuración:
    1. Deja el campo Filtro vacío. Con esta opción, el gráfico muestra todos los datos de estado.
    2. Selecciona status para el campo Agrupar por. Esta selección da como resultado una sola serie temporal para cada valor de estado único. En la tabla siguiente, se muestran los valores de estado posibles:
      Valor de estadoSignificado y acción correctiva
      ok La transferencia de datos se completó correctamente.
      bigquery_permission_denied No se pudieron exportar los datos al destino. La exportación puede fallar por cualquiera de los siguientes motivos:
      • La cuenta de servicio en el receptor de seguimiento no tiene permiso para escribir en el conjunto de datos de destino. Consulta Permiso denegado.
      • El destino del conjunto de datos en el receptor no existe. Consulta Destino no válido.
      • Errores internos de BigQuery. Este es un error inesperado y transitorio.
      bigquery_quota_exceeded El proyecto de BigQuery superó su cuota de transmisión. Consulta Cuota agotada.
      invalid_span
      internal_errors

      invalid_destination
      Error desconocido que impide la exportación de datos a BigQuery. A fin de resolver este estado, comunícate con la asistencia técnica o haz una pregunta en Stack Overflow. Si deseas obtener más información, consulta esta página para obtener asistencia.
    3. Deje los campos del Agregador con los valores predeterminados.
    Para obtener más información, consulta Selecciona métricas.

Si tu receptor de Trace exporta datos de forma correcta, el gráfico creado con la configuración anterior muestra una sola serie temporal con el valor de estado ok. Si se producen errores durante la exportación, las series temporales adicionales aparecen en el gráfico.

Crea una política de alertas

Para crear una política de alertas que se active cuando haya errores mientras se exportan datos de Cloud Trace a BigQuery, usa la siguiente configuración:

Panel Objetivo
Campo

Valor
Resource type Cloud Trace
Metric Spans Exported to BigQuery
Filter status != ok
Group by status
Aggregator sum
Period 1 m
Advanced Aggregation Aligner: rate
Panel Condiciones
Campo

Valor
Condition triggers if Any time series violates
Condition is above
Threshold 0
For 1 minute

Usa curl

En esta sección, se describen las convenciones y la configuración que se usan para invocar a la API de Cloud Trace con la herramienta curl:

Autenticación

  1. Crea una variable de entorno para conservar el identificador de tu proyecto de Google Cloud:

    PROJECT_ID=my-project
    
  2. Crea una variable de entorno para conservar el número de tu proyecto de Google Cloud:

    PROJECT_NUMBER=12345
    
  3. Autentica el SDK de Cloud:

    gcloud auth login
    
  4. Establece el identificador predeterminado del proyecto de Google Cloud:

    gcloud config set project ${PROJECT_ID}
    
  5. Crea un token de autorización y guárdalo en una variable de entorno:

    ACCESS_TOKEN=`gcloud auth print-access-token`
    
  6. Verifica el token de acceso:

    echo ${ACCESS_TOKEN}
    

    La respuesta al comando debe ser una string larga de caracteres. Por ejemplo, en un sistema, la respuesta comienza de la siguiente manera:

    y29.GluiBjo....
    

Invoca curl

Cada comando curl incluye un conjunto de argumentos, seguido de la URL de un recurso de la API de Cloud Trace. Los argumentos comunes incluyen valores especificados por las variables de entorno PROJECT_ID y ACCESS_TOKEN.

Cada invocación curl tiene el siguiente formato general:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" [OTHER_ARGS]
https://cloudtrace.googleapis.com/[API_VERSION]/projects/${PROJECT_ID}/[RESOURCE]

Donde:

  • [OTHER_ARGS] (opcional): Omite este campo si emites una solicitud GET. Para otros tipos de solicitudes HTTP, reemplaza este marcador de posición con el tipo de solicitud y los datos adicionales que sean necesarios para satisfacer la solicitud.
  • [API_VERSION]: Especifica la versión de la API.
  • [RESOURCE]: Especifica el nombre de recursos de la API de Cloud Trace.

Por ejemplo, para mostrar una lista de los 1,000 seguimientos más recientes en tu proyecto, ejecuta el siguiente comando:

curl  --http1.1 --header "Authorization: Bearer ${ACCESS_TOKEN}" https://cloudtrace.googleapis.com/v1/projects/${PROJECT_ID}/traces

Soluciona problemas

Error de argumento no válido para el conjunto de datos

En el siguiente mensaje de error, se indica que el nombre del conjunto de datos no es válido:

ERROR: (gcloud.alpha.trace.sinks.create) INVALID_ARGUMENT: Request contains an invalid argument.
- '@type': type.googleapis.com/google.rpc.DebugInfo
  detail: '[ORIGINAL ERROR] generic::invalid_argument: sink destination is malformed:
    bigquery.googleapis.com/projects/123456789000/datasets/a-sample-project:dataset_1.

El error se produce debido al destino, incluido el identificador del proyecto de Google Cloud, a-sample-project, como un calificador para el nombre del conjunto de datos.

Para resolver este error, reemplaza a-sample-project:dataset_1 por dataset_1 y, luego, emite el comando create.

Ten en cuenta que puedes enumerar tus conjuntos de datos con el comando bq ls.

No se reciben datos de seguimiento

Existen varias razones por las que es posible que no recibas datos de seguimiento en BigQuery.

Destino no válido

Verifica que el nombre del conjunto de datos y el número del proyecto sean correctos.

  • Para verificar que el nombre del conjunto de datos sea correcto. Para enumerar los conjuntos de datos en tu proyecto actual, ejecuta bq ls.

    Si elegiste usar variables de entorno, verifica que el valor de cada variable sea correcto mediante la emisión de un comando echo. Por ejemplo, verifica que tu destino sea correcto:

    $ echo ${DESTINATION}
    bigquery.googleapis.com/projects/123456789000/datasets/dataset_other
    

    Debido a que DESTINATION depende del valor de PROJECT_NUMBER y de DATA_SET_NAME, estas dos variables deben configurarse primero. Además, si modificas cualquiera de estas dos variables, debes actualizar el valor almacenado en DESTINATION.

  • Para determinar el número de tus proyectos actuales, ejecuta el siguiente comando:

    gcloud projects list --filter="${PROJECT_ID}"
    

    Puedes configurar PROJECT_NUMBER de manera programática con el siguiente comando:

    $ PROJECT_NUMBER=`gcloud projects list --filter="${PROJECT_ID}" --format="value(PROJECT_NUMBER)"`
    

Los permisos no son válidos

Verifica que la cuenta de servicio tenga la función DataEditor en BigQuery. Para verificar los permisos, ejecuta el siguiente comando:

$ gcloud projects get-iam-policy ${PROJECT_ID}

La respuesta de este comando describe todas las vinculaciones de IAM. En este caso, el resultado es el siguiente. Observa que la identidad de escritor del receptor tiene la función dataEditor:

bindings:
- members:
  - serviceAccount:export-0000001cbe991a08-3434@gcp-sa-cloud-trace.iam.gserviceaccount.com
  role: roles/bigquery.dataEditor
- members:
  [Note, content truncated]

Cuota agotada

Si recibiste datos y se detiene de repente, o los datos están incompletos, es posible que hayas agotado tu cuota de transmisión de BigQuery. Para ver tu cuota, ve a la página IAM y administración y selecciona Cuotas. Busca la API de BigQuery. Existen dos entradas relevantes: la transmisión de filas por minuto por recurso y la transmisión de bytes por minuto por recurso.

Ir a Cuotas

Qué sigue

Para obtener más información sobre el esquema de BigQuery, consulta Exporta a BigQuery.