Busca recursos

La API de Cloud Asset te permite usar un lenguaje de consulta personalizado para consultar los metadatos de los recursos de un proyecto, organización o carpeta.

Antes de comenzar

Llama a SearchAllResources

Console

  1. En Cloud Console, ve a la página Inventario de recursos.

    Ir a la página Inventario de recursos

  2. En la parte superior de la ventana de Cloud Console, abre el Navegador del proyecto para cambiar el alcance seleccionando una organización, carpeta o proyecto.

  3. En el panel izquierdo, marca Tipo de recurso, Proyecto o Ubicación para filtrar los resultados.

  4. La barra Filtro (Filter) en la parte superior de la tabla de resultados permite especificar una consulta. Haga clic en el cuadro de entrada y se mostrará una lista de campos de búsqueda. Se admiten varios campos. Consulta la página Sintaxis de consulta para obtener todos los detalles.

  5. Los resultados de la búsqueda aparecerán en la siguiente tabla de resultados.

  6. Los usuarios pueden ver la consulta real si hacen clic en el botón VER CONSULTA, que mostrará el comando gcloud correspondiente.

  7. Puedes exportar los resultados de la búsqueda haciendo clic en el botón DESCARGAR CSV.

  8. Los usuarios también pueden compartir la configuración de búsqueda haciendo clic en el botón Compartir para copiar la URL de la página actual al portapapeles.

gcloud

Puedes llamar a SearchAllResources con el comando gcloud asset search-all-resources. Debes ejecutar la versión 302.0.0 del SDK de Cloud o una más reciente. Puedes verificar tu versión con el comando gcloud version.

gcloud asset search-all-resources \
  --scope=SCOPE \
  --query=QUERY \
  --asset-types=ASSET_TYPES,… \
  --order-by=ORDER_BY \
  --page-size=PAGE_SIZE \
  --read-mask=READ_MASK

Todas las siguientes marcas son opcionales:

  • (Opcional) SCOPE: Un permiso puede ser un proyecto, una carpeta o una organización. La búsqueda está limitada a los recursos de Google Cloud dentro de este alcance. El emisor debe tener el permiso cloudasset.assets.searchAllResources en el alcance deseado. Si no se especifica, se usará la propiedad del proyecto configurado. Para encontrar el proyecto configurado, ejecuta gcloud config get-value project. Para cambiar la configuración, ejecuta gcloud config set project PROJECT_ID.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID (p. ej., "projects/foo-bar")
    • projects/PROJECT_NUMBER (p. ej., "projects/12345678")
    • folders/FOLDER_NUMBER (p. ej., "folders/1234567")
    • organizations/ORGANIZATION_NUMBER (p. ej., "organizations/123456")
  • QUERY: la declaración de la consulta (opcional). Consulta cómo construir una consulta para obtener más información. Si no se especifica o está vacía, buscará todos los recursos dentro del scope especificado.

    Ejemplos:

    • name:Important para encontrar recursos de Google Cloud cuyo nombre contenga la palabra "Importante".
    • name=Important para encontrar el recurso de Google Cloud cuyo nombre es exactamente "Importante".
    • displayName:Impor* para encontrar recursos de Google Cloud cuyo nombre comercial contenga “Impax” como prefijo de cualquier palabra.
    • location:us-west* para encontrar recursos de Google Cloud cuya ubicación tenga dos palabras con “us” y “west” como prefijos.
    • labels:prod para encontrar recursos de Google Cloud que tengan una etiqueta en la que la clave o el valor contenga la palabra “prod”.
    • labels.env:prod para encontrar recursos de Google Cloud que tengan una etiqueta en la que la clave sea "env" y el valor contenga la palabra "prod".
    • labels.env:* para encontrar recursos de Google Cloud que tengan una etiqueta en la que la clave sea "env".
    • kmsKey:key para encontrar recursos de Google Cloud encriptados con una clave de encriptación administrada por el cliente cuyo nombre contenga “clave” como palabra.
    • state:ACTIVE para encontrar recursos de Google Cloud cuyo estado contenga "ACTIVE" como una palabra.
    • NOT state:ACTIVE para encontrar recursos de Google Cloud cuyo estado no contenga "ACTIVE".
    • createTime<1609459200, createTime<2021-01-01 o createTime<"2021-01-01T00:00:00" para encontrar recursos de Google Cloud que se crearon antes de “2021-01-01 00:00:00 UTC”. 1609459200 es la marca de tiempo del ciclo de entrenamiento en segundos de “2021-01-01 00:00:00 UTC”.
    • updateTime>1609459200 o updateTime>2021-01-01 o updateTime>"2021-01-01T00:00:00" para encontrar recursos de Google Cloud que se actualizaron después de “2021-01-01 00:00:00 UTC”. 1609459200 es la marca de tiempo del ciclo de entrenamiento en segundos de “2021-01-01 00:00:00 UTC”.
    • project:12345 para encontrar recursos de Google Cloud que pertenezcan a un proyecto de Google Cloud con el número 12345.
    • folders:(123 or 456) para encontrar recursos de Google Cloud que pertenezcan a una carpeta de Google Cloud con números 123 o 456.
    • organization:123 para encontrar recursos de Google Cloud que pertenezcan a una organización de Google Cloud con el número 123.
    • parentFullResourceName:ImportantName para encontrar recursos de Google Cloud cuyo nombre principal contenga ImportantName.
    • parentAssetType:Project para encontrar recursos de Google Cloud cuyo tipo de elemento principal contenga Project.
    • Important para encontrar recursos de Google Cloud que contengan la palabra "Importante" en cualquiera de los campos de búsqueda.
    • Impor* para encontrar recursos de Google Cloud que contengan "Impor" como prefijo de cualquier palabra en cualquiera de los campos de búsqueda.
    • Important location:(us-west1 OR global) para encontrar recursos de Google Cloud que contengan la palabra "Importante" en cualquiera de los campos de búsqueda y también se encuentran en la región “us-west1” o en la ubicación “global”.
  • ASSET_TYPES: Una lista de los tipos de activos que busca esta solicitud (opcional). Si está vacío, se buscará todos los tipos de activos de búsqueda. También se admiten expresiones regulares. Por ejemplo:

    • Recursos de instantáneas "compute.googleapis.com.*" cuyo tipo de elemento comienza con "compute.googleapis.com"
    • Los recursos de instantáneas ".*Instance" cuyo tipo de elemento termina con "Instance".
    • Recursos de instantáneas ".*Instance.*" cuyo tipo de elemento contiene "Instance"

    Consulta RE2 para ver todas las sintaxis de expresión regular compatibles. Si la expresión regular no coincide con ningún tipo de elemento compatible, se mostrará un error INVALID_ARGUMENT.

  • ORDER_BY (opcional): Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. Agrega " DESC" después del nombre del campo para indicar el orden descendente. Se ignoran los caracteres de espacio redundantes. Ejemplo: "location DESC, name". Solo se pueden ordenar los campos primitivos singular en la respuesta:

    • name
    • assetType
    • project
    • displayName
    • description
    • location
    • kmsKey
    • createTime
    • updateTime
    • state
    • parentFullResourceName
    • parentAssetType

    Todos los demás campos, como campos repetidos (p.ej., networkTags), campos de mapa (p.ej., labels) y campos de struct (p.ej., additionalAttributes) no son compatibles.

  • PAGE_SIZE: El tamaño de la página para la paginación del resultado de la búsqueda (opcional). La cantidad máxima es 500. Si el valor se establece en 0, se seleccionará un valor predeterminado adecuado.

  • De forma opcional, READ_MASK es una lista de campos separados por comas que especifican los campos que se mostrarán en los resultados. Si no se especifica, se mostrarán todos los campos, excepto versionedResources. Si solo se especifica un valor de "*", se mostrarán todos los campos. Ejemplos: "name,location", "name,versionedResources", "*".

A continuación, se muestran ejemplos de comandos gcloud:

  • Encuentra todos los recursos en "organizations/123456" cuyo name contenga la palabra mycompany:

    gcloud asset search-all-resources \
      --scope='organizations/123456' \
      --query='name:mycompany'
    
  • Encuentra todos los recursos en "organizations/123456", cuyo name contiene la palabra mycompany, con metadatos completos incluidos:

    gcloud asset search-all-resources \
      --scope='organizations/123456' \
      --query='name:mycompany' \
      --read-mask='*'
    

api

Puedes llamar a SearchAllResources con un token de OAuth válido para un proyecto. Para llamar al método SearchAllResources desde Cloud Shell o cualquier consola en la que el comando gcloud esté disponible, haz lo siguiente:

  1. Si no configuraste la pantalla de consentimiento de OAuth de tu proyecto, deberás hacerlo. Se requerirá una dirección de correo electrónico y un nombre del producto.

    1. Ve a la pantalla de consentimiento de OAuth de tu proyecto.
      Configuración de la pantalla de consentimiento
    2. Ingresa el Nombre de la aplicación que deseas mostrar.
    3. En Correo electrónico de asistencia, selecciona la dirección de correo electrónico que deseas mostrar como contacto público. Debe ser tu dirección de correo electrónico o un grupo de Google que te pertenezca.
    4. Agrega otro tipo de información opcional que desees mostrar.
    5. Haz clic en Guardar.
  2. Crea un token de OAuth para tu proyecto. Consulta Configura OAuth 2.0 para obtener más información.

    1. Ve a la página Crear ID de cliente de OAuth.
      Crear clientes de OAuth
    2. Selecciona Aplicación de escritorio como el Tipo de aplicación.
    3. Haga clic en Crear.
  3. Descarga el archivo client_secret.json.

    1. Ve a la página Credenciales.
    2. A la derecha de tu nuevo ID de cliente, haz clic en Descargar JSON.
    3. Almacena el archivo de forma segura en una ubicación a la que solo pueda acceder tu app.
  4. Accede mediante el archivo JSON son el siguiente comando.

    gcloud auth application-default login --client-id-file=YOUR_JSON_FILE
    

    Tenga en cuenta que este comando te solicitará que abras un vínculo. Asegúrate de que la página muestre el Nombre de la aplicación que estableciste en la pantalla de consentimiento de OAuth.

  5. Genera un token de autenticación para tu cuenta con el siguiente comando:

    TOKEN=$(gcloud auth application-default print-access-token)
    
  6. Ahora puedes consultar recursos con los comandos curl.

    PAGE_SIZE=PAGE_SIZE
    PAGE_TOKEN="PAGE_TOKEN"
    SCOPE="SCOPE"
    QUERY="QUERY"
    ASSET_TYPES="ASSET_TYPES,…"
    ORDER_BY="ORDER_BY"
    READ_MASK="READ_MASK"
    curl -s -G \
       -H "Authorization: Bearer $TOKEN" \
       -d "page_size=$PAGE_SIZE" \
       -d "page_token=$PAGE_TOKEN" \
       -d "scope=$SCOPE" \
       -d "asset_types=$ASSET_TYPES" \
       -d "order_by=$ORDER_BY" \
       -d "read_mask=$READ_MASK" \
       --data-urlencode "query=$QUERY" \
       "https://cloudasset.googleapis.com/v1/$SCOPE:searchAllResources"
    

Todas las siguientes marcas son opcionales:

  • SCOPE: es obligatorio. Un permiso puede ser un proyecto, una carpeta o una organización. La búsqueda está limitada a los recursos de Google Cloud dentro de este alcance. El emisor debe tener el permiso cloudasset.assets.searchAllResources en el alcance deseado.

    Los valores permitidos son los siguientes:

    • projects/PROJECT_ID (p. ej., "projects/foo-bar")
    • projects/PROJECT_NUMBER (p. ej., "projects/12345678")
    • folders/FOLDER_NUMBER (p. ej., "folders/1234567")
    • organizations/ORGANIZATION_NUMBER (p. ej., "organizations/123456")
  • QUERY: la declaración de la consulta (opcional). Consulta cómo construir una consulta para obtener más información. Si no se especifica o está vacía, buscará todos los recursos dentro del scope especificado.

    Ejemplos:

    • name:Important para encontrar recursos de Google Cloud cuyo nombre contenga la palabra "Importante".
    • name=Important para encontrar el recurso de Google Cloud cuyo nombre es exactamente "Importante".
    • displayName:Impor* para encontrar recursos de Google Cloud cuyo nombre comercial contenga “Impax” como prefijo de cualquier palabra.
    • location:us-west* para encontrar recursos de Google Cloud cuya ubicación contenga los términos “us” y “west” como prefijos.
    • labels:prod para encontrar recursos de Google Cloud que tengan una etiqueta en la que la clave o el valor contenga la palabra “prod”.
    • labels.env:prod para encontrar recursos de Google Cloud que tengan una etiqueta en la que la clave sea "env" y el valor contenga la palabra "prod".
    • labels.env:* para encontrar recursos de Google Cloud que tengan una etiqueta en la que la clave sea "env".
    • kmsKey:key para encontrar recursos de Google Cloud encriptados con una clave de encriptación administrada por el cliente cuyo nombre contenga “clave” como palabra.
    • state:ACTIVE para encontrar recursos de Google Cloud cuyo estado contenga "ACTIVE" como una palabra.
    • NOT state:ACTIVE para encontrar recursos de Google Cloud cuyo estado no contenga "ACTIVE".
    • createTime<1609459200, createTime<2021-01-01 o createTime<"2021-01-01T00:00:00" para encontrar recursos de Google Cloud que se crearon antes de “2021-01-01 00:00:00 UTC”. 1609459200 es la marca de tiempo del ciclo de entrenamiento en segundos de “2021-01-01 00:00:00 UTC”.
    • updateTime>1609459200 o updateTime>2021-01-01 o updateTime>"2021-01-01T00:00:00" para encontrar recursos de Google Cloud que se actualizaron después de “2021-01-01 00:00:00 UTC”. 1609459200 es la marca de tiempo del ciclo de entrenamiento en segundos de “2021-01-01 00:00:00 UTC”.
    • project:12345 para encontrar recursos de Google Cloud que pertenezcan a un proyecto de Google Cloud con el número 12345.
    • folders:(123 or 456) para encontrar recursos de Google Cloud que pertenezcan a una carpeta de Google Cloud con números 123 o 456.
    • organization:123 para encontrar recursos de Google Cloud que pertenezcan a una organización de Google Cloud con el número 123.
    • parentFullResourceName:ImportantName para encontrar recursos de Google Cloud cuyo nombre principal contenga ImportantName.
    • parentAssetType:Project para encontrar recursos de Google Cloud cuyo tipo de elemento principal contenga Project.
    • Important para encontrar recursos de Google Cloud que contengan la palabra "Importante" en cualquiera de los campos de búsqueda.
    • Impor* para encontrar recursos de Google Cloud que contengan "Impor" como prefijo de cualquier palabra en cualquiera de los campos de búsqueda.
    • Important location:(us-west1 OR global) para encontrar recursos de Google Cloud que contengan la palabra "Importante" en cualquiera de los campos de búsqueda y también se encuentran en la región “us-west1” o en la ubicación “global”.
  • ASSET_TYPES: Una lista de los tipos de activos que busca esta solicitud (opcional). Si está vacío, se buscará todos los tipos de activos de búsqueda. También se admiten expresiones regulares. Por ejemplo:

    • Recursos de instantáneas "compute.googleapis.com.*" cuyo tipo de elemento comienza con "compute.googleapis.com"
    • Los recursos de instantáneas ".*Instance" cuyo tipo de elemento termina con "Instance".
    • Recursos de instantáneas ".*Instance.*" cuyo tipo de elemento contiene "Instance"

    Consulta RE2 para ver todas las sintaxis de expresión regular compatibles. Si la expresión regular no coincide con ningún tipo de elemento compatible, se mostrará un error INVALID_ARGUMENT.

  • ORDER_BY (opcional): Es una lista de campos separados por comas que especifican el orden de clasificación de los resultados. El orden predeterminado es ascendente. Agrega " DESC" después del nombre del campo para indicar el orden descendente. Se ignoran los caracteres de espacio redundantes. Ejemplo: "location DESC, name". Solo se pueden ordenar los campos primitivos singular en la respuesta:

    • name
    • assetType
    • project
    • displayName
    • description
    • location
    • kmsKey
    • createTime
    • updateTime
    • state
    • parentFullResourceName
    • parentAssetType

    Todos los demás campos, como campos repetidos (p.ej., networkTags), campos de mapa (p.ej., labels) y campos de struct (p.ej., additionalAttributes) no son compatibles.

  • PAGE_SIZE: El tamaño de la página para la paginación del resultado de la búsqueda (opcional). La cantidad máxima es 500. Si el valor se establece en 0, se seleccionará un valor predeterminado adecuado.

  • (Opcional) PAGE_TOKEN: El token que representa el siguiente lote de resultados de la llamada anterior a este método. El page_token debe ser el mismo que el valor de next_page_token de la respuesta de la llamada anterior.

  • De forma opcional, READ_MASK es una lista de campos separados por comas que especifican los campos que se mostrarán en los resultados. Si no se especifica, se mostrarán todos los campos, excepto versionedResources. Si solo se especifica un valor de "*", se mostrarán todos los campos. Ejemplos: "name,location", "name,versionedResources", "*".

Referencia de la API y biblioteca cliente

Construye una consulta

Consulta la sintaxis de las consultas para obtener más información sobre el lenguaje de las consultas.

Consulta Busca una muestra de recursos para obtener más información sobre las consultas de muestra para varios casos de uso reales.

Consulta recursos de Google Cloud por campos de metadatos de recursos

Para buscar metadatos de recursos, una expresión de consulta tiene los siguientes formatos:

  • Concordancia exacta de texto: FIELD=QUERY
  • Coincidencia parcial de texto: FIELD:QUERY
  • Coincidencia numérica: operadores de comparación (=, >, >=, <, <=) FIELDcomparison operatorQUERY

Los FIELD de metadatos de recursos que se pueden buscar pueden ser los siguientes:

  • name: El nombre completo del recurso. Nota: No todos los tipos de recursos se pueden buscar. Consulta la lista de tipos de recursos que se pueden buscar.
  • displayName: el nombre visible en la IU
  • description: la descripción de texto del recurso en uno o más párrafos
  • location: es la ubicación del recurso. La ubicación puede ser “global”, regional (p. ej., “us-east1”) o zonal (p. ej., “us-west1-b”).
  • labels: etiquetas asociadas con este recurso. Las etiquetas pueden coincidir con claves de etiqueta, valores de etiqueta o ambos. Consulta Etiquetar y agrupar recursos de GCP.

  • labels.[key]: valor de etiqueta identificado mediante la clave de etiqueta asociada con este recurso. Por ejemplo: “labels.env:prod”. Solo se permiten guiones (-), guiones bajos (_), caracteres en minúscula y números en las claves de etiqueta. Las claves deben comenzar con una letra minúscula. Se permite el uso de caracteres internacionales. Consulta los Requisitos para las etiquetas.

  • networkTags: etiquetas de red asociadas con este recurso. Consulta Etiquetar y agrupar recursos de GCP.

  • kmsKey: La clave de encriptación administrada por el cliente que se usa para encriptar este recurso. Consulta CryptoKey y CryptoKeyVersion.

  • state: el valor de texto del estado de este recurso. Los diferentes tipos de recursos tienen definiciones de estado diferentes que se asignan a partir de varios campos de diferentes tipos de recursos. Ejemplo: Si el recurso es una instancia que proporciona Compute Engine, su estado incluirá PROVISIONING, STAGING, RUNNING, STOPPING, {12/}ING, {12/}ED, REPAIRING y TERMINATED. Consulta la definición de status en la referencia de la API. Si el recurso es un proyecto proporcionado por Cloud Resource Manager, su estado incluirá LIFECYCLE_STATE_UNSPECIFIED, ACTIVE, DELETE_REQUESTED y DELETE_IN_PROGRESS. Consulta la definición de lifecycleState en la referencia de la API.

  • createTime: la marca de tiempo de creación de este recurso, en la que se creó el recurso. El nivel de detalle se expresa en segundos.

  • updateTime: la marca de tiempo de la última actualización de este recurso, en la que el recurso se modificó o eliminó por última vez. El nivel de detalle se expresa en segundos.

  • project: la cantidad de proyecto a la que pertenece este recurso.

  • folders: los números de las carpetas a las que pertenece este recurso.

  • organización: La cantidad de organización de la que pertenece este recurso.

  • parentFullResourceName: Es el nombre del elemento superior de este recurso.

  • parentAssetType: el tipo del elemento principal de este recurso.

Ejemplos: Consulta por campo específico

  • Busca todos los recursos en tu scope cuyo name contenga la palabra Important:

    name:Important
    
  • Encuentra todos los recursos en tu scope cuyo displayName contenga una palabra con el prefijo prod:

    displayName:prod*
    
  • Busca todos los recursos en tu scope cuyo location contenga la palabra us:

    location:us
    
  • Encuentra todos los recursos en tu scope cuyo location sea exactamente igual a us:

    location=us
    
  • Busca todos los recursos en tu scope que tengan un label donde la clave o el valor contenga la palabra prod:

    labels:prod
    
  • Encuentra todos los recursos en tu scope que tengan un label donde la clave sea env y el valor contenga la palabra prod:

    labels.env:prod
    
  • Encuentra todos los recursos en tu scope que tengan un label donde la clave sea env y el valor sea igual a prod:

    labels.env=prod
    
  • Busca todos los recursos en tu scope que tengan un label donde la clave sea env:

    labels.env:*
    
  • Busca todos los recursos en tu scope que uno de networkTags contenga la palabra internal:

    networkTags:internal
    
  • Encuentra todos los recursos en tu scope que uno de networkTags sea igual a internal:

    networkTags=internal
    
  • Encuentra todos los recursos en tu scope encriptados con una clave de encriptación administrada por el cliente cuyo nombre contenga la palabra key:

    kmsKey:key
    
  • Busca todos los recursos en tu scope cuyo state contenga la palabra ACTIVE:

    state:ACTIVE
    
  • Busca todos los recursos en tu scope cuyo state no contenga la palabra ACTIVE:

    NOT state:ACTIVE
    
  • Encuentra todos los recursos en tu scope que se crearon antes de “2021-01-01 00:00:00 UTC” (1609459200 es la marca de tiempo del ciclo de entrenamiento en segundos de “2021-01-01 00:00”. :00 UTC"):

    createTime<1609459200
    createTime<2021-01-01
    createTime<"2021-01-01T00:00:00"
    
  • Encuentra todos los recursos en tu scope que se hayan actualizado después de “2021-01-01 00:00:00 UTC” (1609459200 es la marca de tiempo del ciclo de entrenamiento en segundos de “2021-01-01 00:00”). :00 UTC"):

    updateTime>1609459200
    updateTime>2021-01-01
    updateTime>"2021-01-01T00:00:00"
    
  • Busca todos los recursos en tu scope cuyo project tenga el número 123:

    project:123
    
  • Encuentra todos los recursos en tu scope que se encuentran en folder con el número 123:

    folders:123
    
  • Busca todos los recursos en tu scope cuyo organization tenga el número 123:

    organization:123
    
  • Encuentra todos los recursos en tu scope cuyo parentFullResourceName contenga ImportantName:

    parentFullResourceName:ImportantName
    
  • Busca todos los recursos en tu scope cuyo parentAssetType contenga Project:

    parentAssetType:Project
    
  • Encuentra todos los recursos en tu scope cuyo name contenga la palabra Important y description contenga una palabra con el prefijo import:

    name:Important description:import*
    
  • Busca todos los recursos en tu scope cuyo name contenga la palabra Important o description contenga una palabra con el prefijo import:

    name:Important OR description:import*
    

Consulta los recursos de Google Cloud por texto libre

También puedes usar una consulta de texto libre sin especificar un campo. Se mostrarán recursos siempre que haya un campo de los metadatos del recurso que coincida con la consulta.

Ejemplos: Consulta por texto libre

  • Encuentra todos los recursos en tu scope en el cual los campos de metadatos (p. ej., name, displayName, description) contiene la palabra Important:

    Important
    
  • Encuentra todos los recursos en tu scope en el cual los campos de metadatos (p. ej., name, displayName, description) contienen una palabra con el prefijo import:

    import*
    
  • Encuentra todos los recursos en tu scope en el cual los campos de metadatos (p. ej., name, displayName, description) contiene la palabra Important y también contiene una palabra con el prefijo prod:

    Important prod*