Puedes consultar los recursos de tu proyecto, carpeta u organización con un dialecto compatible con BigQuery SQL.
Antes de comenzar
Habilita la API de Cloud Asset Inventory en el proyecto desde el que ejecutas los comandos de Cloud Asset Inventory.
Asegúrate de que tu cuenta tenga el rol correcto para llamar a la API de Cloud Asset Inventory. Para obtener información sobre los permisos individuales de cada tipo de llamada, consulta Permisos.
Limitaciones
Los nombres de tipos de recursos tienen
.
y/
reemplazados por_
. Por ejemplo,compute.googleapis.com/Instance
se convierte encompute_googleapis_com_Instance
.La solicitud debe ser una consulta
SELECT
.No se admite el BigQuery SQL heredado.
No se admiten resultados de consultas superiores a 10 GB.
Los resultados de las consultas que superan los 10 MB o las 1,000 filas siempre se paginan.
Las consultas deben tardar menos de 6 horas en procesarse.
Los resultados de las consultas solo se pueden exportar a un conjunto de datos de BigQuery en la
US
multirregión.
Tablas que puedes consultar
Puedes consultar las siguientes tablas:
En el caso de los tipos de contenido
RESOURCE
, los nombres de las tablas del conjunto de datos corresponden al nombre del tipo de activo, suponiendo que este exista. Por ejemplo, la tablacompute_googleapis_com_Instance
contiene metadatos de instancias de Compute Engine.En el caso de los tipos de contenido que no son
RESOURCE
, los nombres de las tablas del conjunto de datos corresponden a los nombres de los tipos de contenido de RPC/REST. Por ejemplo,ACCESS_POLICY
.Para consultar los metadatos estándar de recursos en todos los tipos de recursos, usa el nombre de la tabla
STANDARD_METADATA
. Esto incluye todos los campos, exceptoresource.DATA
, que es específico para cada tipo de recurso.
Consulta los metadatos de activos
Console
Para consultar los metadatos de los activos de tu proyecto, carpeta u organización, completa los siguientes pasos:
-
En la consola de Google Cloud , ve a la pestaña Consulta de activos en la página Inventario de activos.
Si no aparece la pestaña Consulta de recursos, necesitas acceso al nivel Premium o Enterprise de Security Command Center, o a Gemini Cloud Assist.
- Cambia al proyecto, la carpeta o la organización que deseas consultar.
- Haz clic en la pestaña Consulta de recursos.
-
Para consultar los metadatos de los activos, usa una consulta de muestra o crea la tuya propia:
- Para usar una muestra, haz clic en una entrada de la pestaña Biblioteca de consultas para obtener una vista previa de la consulta. Haz clic en Aplicar para copiar esa muestra en el cuadro de Editar consulta y, luego, edita la consulta o haz clic en Ejecutar para ejecutarla.
- Para compilar tu propia consulta, ingresa el texto de la consulta directamente en el cuadro Editar consulta y, luego, haz clic en Ejecutar para ejecutarla. Para ayudarte a escribir tu propia consulta, puedes hacer clic en una tabla en el panel Seleccionar tabla para obtener una vista previa de su esquema y contenido. Consulta Sintaxis de consulta para obtener información sobre cómo construir una consulta.
Los metadatos del activo que coinciden con la búsqueda se muestran en la pestaña Resultado de la consulta.
-
Opcional: Para descargar los conjuntos de resultados de la búsqueda en formato CSV, haz clic en Exportar.
El tamaño máximo del archivo CSV es de 2 MB. Si la solicitud de descarga falla porque el tamaño del archivo supera este límite, aparecerá un mensaje con instrucciones para exportar los resultados completos.
gcloud
gcloud asset query \ --SCOPE \ --statement="SQL_SELECT_QUERY" \ --timeout="TIMEOUTs"
Ingresa los siguientes valores:
-
SCOPE
: Usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos que deseas consultar. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que contiene los recursos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los activos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Una consulta de SQL.SELECT
-
TIMEOUT
: Opcional Es el tiempo máximo, en segundos, que un cliente debe esperar a que se complete la consulta antes de continuar. Usa tiempos de espera para ejecutar tu consulta de forma asíncrona y recuperar los resultados más adelante con referencias de trabajo.
Consulta la referencia de la CLI de gcloud para ver todas las opciones.
Ejemplo
Ejecuta el siguiente comando para obtener los nombres y los tipos de recursos de las dos primeras instancias de Compute Engine en el proyecto my-project
.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2"
Respuesta de trabajo finalizado
En el siguiente ejemplo, se muestra una respuesta a la búsqueda del ejemplo anterior. La respuesta contiene una referencia del trabajo y te indica si este finalizó (done: true
). Si el trabajo finalizó, el objeto queryResult
se completa con los datos correspondientes y los resultados se enumeran después.
done: true jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '2' name: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1 assetType: compute.googleapis.com/Instance name: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/instance-2 assetType: compute.googleapis.com/Instance
Respuesta de trabajo sin finalizar
Si estableces un tiempo de espera en tu solicitud, la consulta se realizará de forma asíncrona y se te enviará una respuesta que indica que el trabajo no finalizó (done: false
). Este tipo de respuestas contienen una referencia del trabajo y un objeto queryResult
sin completar:
done: false jobReference: 0000000000000000000000000000000000000000000000000000000000000000 queryResult: nextPageToken: '' totalRows: '0'
Puedes usar el valor de jobReference
para recuperar los resultados de la consulta más adelante, después de que se complete el trabajo y los datos estén disponibles.
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Cuerpo JSON de la solicitud:
{ "statement": "SQL_SELECT_QUERY", "timeout": "TIMEOUTs", "pageSize": "PAGE_SIZE", "pageToken": "PAGE_TOKEN" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos sobre los que deseas realizar la consulta. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene los recursos sobre los que deseas consultar.Cómo encontrar un Google Cloud número de proyecto
Google Cloud console
Para encontrar el número de un proyecto Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenida en la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los activos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Una consulta de SQL.SELECT
-
TIMEOUT
: Opcional Es el tiempo máximo, en segundos, que un cliente debe esperar a que se complete la consulta antes de continuar. Usa tiempos de espera para ejecutar tu consulta de forma asíncrona y recuperar los resultados más adelante con referencias de trabajo. -
PAGE_SIZE
: Opcional Es la cantidad de resultados que se devolverán por página. La cantidad máxima es 500. Si el valor se establece en0
o en un valor negativo, se selecciona un valor predeterminado adecuado. Se devuelve unnextPageToken
para recuperar resultados posteriores. -
PAGE_TOKEN
: Opcional Las respuestas a solicitudes largas se separan en varias páginas. Cuando no se especificapageToken
, se devuelve la primera página. Se pueden llamar a las páginas posteriores usando elnextPageToken
de la respuesta anterior como el valor depageToken
.
Consulta la referencia de REST para ver todas las opciones.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener los nombres y los tipos de recursos de las dos primeras instancias de Compute Engine en el proyecto my-project
.
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Respuesta de trabajo finalizado
En el siguiente ejemplo, se muestra una respuesta a la búsqueda del ejemplo anterior. La respuesta contiene una referencia del trabajo y te indica si este finalizó ("done": true
). Si el trabajo finalizó, el objeto queryResult
se completa con los datos correspondientes.
Los resultados de la búsqueda se dividen en rows
, un array que contiene metadatos de activos, y schema
, un objeto que describe el esquema de cada activo en el array rows
. Esto se hace para minimizar la duplicación de nombres y tipos de campos en respuestas grandes.
Del mismo modo, f
y v
se usan en el array rows
en lugar de fields
y value
para mantener las respuestas lo más pequeñas posible.
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": true, "queryResult": { "rows": [ { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-1" }, { "v": "compute.googleapis.com/Instance" } ] }, { "f": [ { "v": "//compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/instance-2" }, { "v": "compute.googleapis.com/Instance" } ] } ], "schema": { "fields": [ { "field": "name", "type": "STRING", "mode": "NULLABLE", "fields": [] }, { "field": "assetType", "type": "STRING", "mode": "NULLABLE", "fields": [] } ] }, "nextPageToken": "", "totalRows": "1" } }
Respuesta de trabajo sin finalizar
Si estableces un tiempo de espera en tu solicitud, la búsqueda se realizará de forma asíncrona y se te enviará una respuesta que indica que el trabajo no finalizó ("done": false
). Este tipo de respuestas contienen una referencia del trabajo y un objeto queryResult
sin completar:
{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000", "done": false, "queryResult": { "rows": [], "schema": { "fields": [] }, "nextPageToken": "", "totalRows": "0" } }
Puedes usar el valor de jobReference
para recuperar los resultados de la consulta más adelante, después de que se complete el trabajo y los datos estén disponibles.
Cómo recuperar los resultados de la búsqueda más tarde
Para recuperar más tarde una solicitud que tardó en completarse, realiza una de las siguientes solicitudes.
gcloud
gcloud asset query \ --SCOPE \ --job-reference="JOB_REFERENCE"
Ingresa los siguientes valores:
-
SCOPE
: Usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos que deseas consultar. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los recursos que deseas consultar.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: Es el valor de referencia del trabajo que se devolvió en una respuesta anterior.
Ejemplo
Ejecuta el siguiente comando para obtener los resultados de una consulta ejecutada anteriormente en el proyecto my-project
.
gcloud asset query \ --project=my-project \ --job-reference="0000000000000000000000000000000000000000000000000000000000000000"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Cuerpo JSON de la solicitud:
{ "jobReference": "JOB_REFERENCE", "pageToken": "PAGE_TOKEN" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los recursos sobre los que deseas realizar la consulta. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es la cantidad de proyectos que tienen los recursos sobre los que deseas consultar.Cómo encontrar un Google Cloud número de proyecto
Google Cloud console
Para encontrar el número de un proyecto Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenida en la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los recursos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los activos sobre los que deseas realizar la consulta.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
JOB_REFERENCE
: Es el valor de referencia del trabajo que se devolvió en una respuesta anterior. -
PAGE_TOKEN
: Opcional Las respuestas a solicitudes largas se separan en varias páginas. Cuando no se especificapageToken
, se devuelve la primera página. Se pueden llamar a las páginas posteriores usando elnextPageToken
de la respuesta anterior como el valor depageToken
.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener los resultados de una búsqueda ejecutada anteriormente.
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "Authorization" = "Bearer $cred" } $body = @" { "jobReference": "0000000000000000000000000000000000000000000000000000000000000000" } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Exporta los resultados de la consulta a BigQuery
Los resultados de la búsqueda se muestran como respuestas de la API de Query Assets. Para exportar los resultados a tu propia tabla de BigQuery, especifica un destino de BigQuery en la solicitud. Si aún no tienes uno, debes crear un conjunto de datos de BigQuery antes de realizar estas solicitudes.
gcloud
gcloud asset query \ --SCOPE \ --billing-project=BILLING_PROJECT_ID \ --statement="SQL_SELECT_QUERY" \ --bigquery-table=projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID/tables/TABLE_NAME \ --write-disposition="WRITE_METHOD"
Ingresa los siguientes valores:
-
SCOPE
: Usa uno de los siguientes valores:-
project=PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los metadatos del activo que deseas exportar con una consulta en SQL. -
folder=FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organization=ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
SQL_SELECT_QUERY
: Una consulta de SQL.SELECT
-
BIGQUERY_PROJECT_ID
: ID del proyecto en el que se encuentra la tabla de BigQuery que deseas exportar. -
DATASET_ID
: Es el ID del conjunto de datos de BigQuery. -
TABLE_NAME
: La tabla de BigQuery a la que exportarás tus metadatos. Si no existe, se crea. -
WRITE_METHOD
: Especifica el comportamiento si ya existe la tabla o partición de destino de BigQuery. Se admiten los siguientes valores:-
write-empty
: Predeterminado. Si la tabla existente contiene datos, se muestra un error de duplicación en el resultado del trabajo. -
write-append
: Agrega datos a la tabla o a la partición más reciente. -
write-truncate
: Reemplaza la tabla completa o todos los datos de particiones.
-
Ejemplo
Ejecuta el siguiente comando para obtener los nombres y los tipos de recursos de las dos primeras instancias de Compute Engine en el proyecto my-project
y exportar los resultados a la tabla my-table
de BigQuery en el proyecto my-project
, sobrescribiendo toda la tabla si ya existe.
gcloud asset query \ --project=my-project \ --statement=" SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2" \ --bigquery-table=projects/my-project/datasets/my-dataset/tables/my-table \ --write-disposition="write-truncate"
REST
Método HTTP y URL:
POST https://cloudasset.googleapis.com/v1/SCOPE_PATH:queryAssets
Encabezados:
X-Goog-User-Project: BILLING_PROJECT_ID
Cuerpo JSON de la solicitud:
{ "statement": "SQL_SELECT_QUERY", "outputConfig": { "bigqueryDestination": { "dataset": "projects/BIGQUERY_PROJECT_ID/datasets/DATASET_ID", "table": "TABLE_NAME", "writeDisposition": "WRITE_METHOD" } }, "pageSize": "PAGE_SIZE" }
Ingresa los siguientes valores:
-
SCOPE_PATH
: Usa uno de los siguientes valores:Los valores permitidos son los siguientes:
-
projects/PROJECT_ID
, dondePROJECT_ID
es el ID del proyecto que tiene los metadatos del activo que deseas exportar con una consulta en SQL. -
projects/PROJECT_NUMBER
, dondePROJECT_NUMBER
es el número del proyecto que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar un Google Cloud número de proyecto
Google Cloud console
Para encontrar el número de un proyecto Google Cloud , completa los siguientes pasos:
-
Ve a la página Bienvenida en la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
-
Selecciona tu organización en el cuadro de lista y, luego, busca el nombre de tu proyecto. El nombre, el número y el ID del proyecto se muestran cerca del encabezado Bienvenido.
Se muestran hasta 4,000 recursos. Si no ves el proyecto que buscas, ve a la página Administrar recursos y filtra la lista con el nombre de ese proyecto.
gcloud CLI
Puedes recuperar un número de proyecto Google Cloud con el siguiente comando:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"
-
-
folders/FOLDER_ID
, dondeFOLDER_ID
es el ID de la carpeta que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una carpeta Google Cloud
Google Cloud console
Para encontrar el ID de una carpeta de Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Busca el nombre de tu carpeta. El ID de la carpeta se muestra junto al nombre de la carpeta.
gcloud CLI
Puedes recuperar el ID de una carpeta Google Cloud ubicada a nivel de la organización con el siguiente comando:
gcloud resource-manager folders list \ --organization=$(gcloud organizations describe ORGANIZATION_NAME \ --format="value(name.segment(1))") \ --filter='"DISPLAY_NAME":"TOP_LEVEL_FOLDER_NAME"' \ --format="value(ID)"
En el ejemplo anterior, TOP_LEVEL_FOLDER_NAME es una coincidencia de cadena parcial o completa para el nombre de la carpeta. Quita la marca
--format
para ver más información sobre las carpetas encontradas.El comando anterior no devuelve los IDs de las subcarpetas dentro de las carpetas. Para ello, ejecuta el siguiente comando con el ID de una carpeta de nivel superior:
gcloud resource-manager folders list --folder=FOLDER_ID
-
-
organizations/ORGANIZATION_ID
, dondeORGANIZATION_ID
es el ID de la organización que tiene los metadatos del activo que deseas exportar con una consulta en SQL.Cómo encontrar el ID de una organización de Google Cloud
Google Cloud console
Para encontrar el ID de una organización Google Cloud , completa los siguientes pasos:
-
Ve a la consola de Google Cloud .
- Haz clic en el cuadro de lista del conmutador en la barra de menú.
- Selecciona tu organización en el cuadro de lista.
- Haz clic en la pestaña Todos. El ID de la organización se muestra junto al nombre de la organización.
gcloud CLI
Puedes recuperar el ID de una organización Google Cloud con el siguiente comando:
gcloud organizations describe ORGANIZATION_NAME --format="value(name.segment(1))"
-
-
-
BILLING_PROJECT_ID
: Es el ID del proyecto en el que se encuentra el agente de servicio predeterminado de Cloud Asset Inventory que tiene permisos para administrar tus conjuntos de datos y tablas de BigQuery. Obtén más información para configurar el proyecto de facturación. -
SQL_SELECT_QUERY
: Una consulta de SQL.SELECT
-
BIGQUERY_PROJECT_ID
: ID del proyecto en el que se encuentra la tabla de BigQuery que deseas exportar. -
DATASET_ID
: Es el ID del conjunto de datos de BigQuery. -
TABLE_NAME
: La tabla de BigQuery a la que exportarás tus metadatos. Si no existe, se crea. -
WRITE_METHOD
: Especifica el comportamiento si ya existe la tabla o partición de destino de BigQuery. Se admiten los siguientes valores:-
WRITE_EMPTY
: Predeterminado. Si la tabla existente contiene datos, se muestra un error de duplicación en el resultado del trabajo. -
WRITE_APPEND
: Agrega datos a la tabla o a la partición más reciente. -
WRITE_TRUNCATE
: Reemplaza la tabla completa o todos los datos de particiones.
-
-
PAGE_SIZE
: Opcional Es la cantidad de resultados que se devolverán por página. La cantidad máxima es 500. Si el valor se establece en0
o en un valor negativo, se selecciona un valor predeterminado adecuado. Se devuelve unnextPageToken
para recuperar resultados posteriores.
Ejemplos de comandos
Ejecuta uno de los siguientes comandos para obtener los nombres y los tipos de recursos de las dos primeras instancias de Compute Engine en el proyecto my-project
y exportar los resultados a la tabla my-table
de BigQuery en el proyecto my-project
, reemplazando toda la tabla si ya existe.
curl (Linux, macOS o Cloud Shell)
curl -X POST \ -H "X-Goog-User-Project: BILLING_PROJECT_ID" \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -d '{ "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } }' \ https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets
PowerShell (Windows)
$cred = gcloud auth print-access-token $headers = @{ "X-Goog-User-Project" = "BILLING_PROJECT_ID"; "Authorization" = "Bearer $cred" } $body = @" { "statement": " SELECT name, assetType FROM compute_googleapis_com_Instance LIMIT 2", "outputConfig": { "bigqueryDestination": { "dataset": "projects/my-project/datasets/my-dataset", "table": "my-table", "writeDisposition": "WRITE_TRUNCATE" } } } "@ Invoke-WebRequest ` -Method POST ` -Headers $headers ` -ContentType: "application/json; charset=utf-8" ` -Body $body ` -Uri "https://cloudasset.googleapis.com/v1/projects/my-project:queryAssets" | Select-Object -Expand Content
Ejemplos de consulta en SQL adicionales
En las siguientes muestras de código, se muestran consultas en SQL específicas que puedes usar para buscar recursos y ayudarte a crear tus propias consultas.
Instancias de VM de Compute Engine en una región específica
Además, devuelve su name
y la fecha de creación.
SELECT
name,
resource.DATA.creationTimestamp
FROM
compute_googleapis_com_Instance
WHERE
resource.location LIKE '%asia%'
Detalles de una app que se ejecuta en un pod de Kubernetes
Devuelve el espacio de nombres, la versión y la marca de tiempo de la app ingress-nginx
. Obtén más información sobre las funciones JSON que se usan en BigQuery.
SELECT
name AS pod_name,
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') AS namespace,
resource.data.metadata.creationTimestamp AS creation_time,
JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") AS app_label,
resource.data.metadata.labels['app.kubernetes.io/version'] AS version
FROM
k8s_io_Pod
WHERE
JSON_EXTRACT_SCALAR(resource.data.metadata, '$.namespace') = "default"
AND JSON_EXTRACT_SCALAR(resource.data.metadata.labels, "$['app.kubernetes.io/name']") = "ingress-nginx"
Cuántos conjuntos de datos de BigQuery hay en cada proyecto
SELECT
ancestor AS project,
COUNT(*)
FROM
bigquery_googleapis_com_Dataset
CROSS JOIN
UNNEST (ancestors) AS ancestor
WHERE
ancestor LIKE '%project%'
GROUP BY
ancestor
ORDER BY
2 DESC
Cuántas instancias de VM de Compute Engine hay en cada región
SELECT
resource.location,
COUNT(*)
FROM
compute_googleapis_com_Instance
GROUP BY
resource.location
Nombre y assetType de todos los recursos de una región
SELECT
name,
assetType
FROM
STANDARD_METADATA
WHERE
resource.location LIKE '%asia%'
Buckets de Cloud Storage disponibles públicamente
Además, devuelve su name
.
SELECT
name
FROM
IAM_POLICY
CROSS JOIN
UNNEST(iamPolicy.bindings) AS binding
WHERE
('allUsers' IN UNNEST(binding.members)
OR 'allAuthenticatedUsers' IN UNNEST(binding.members))
AND assetType = 'storage.googleapis.com/Bucket'
Subredes que no tienen instancias de VM adjuntas
SELECT
subnetwork_table.name
FROM
compute_googleapis_com_Subnetwork AS subnetwork_table
LEFT JOIN (
SELECT
interface.subnetwork AS subnetwork
FROM
compute_googleapis_com_Instance
CROSS JOIN
UNNEST(resource.DATA.networkInterfaces) AS interface) AS instance_table
ON
SUBSTR(subnetwork_table.name, 25) = SUBSTR(instance_table.subnetwork,38)
WHERE
instance_table.subnetwork IS NULL
AND NOT subnetwork_table.name LIKE '%default%'