Como listar recursos

Nesta página, mostramos como usar o serviço de lista de recursos do Inventário de recursos do Cloud. Use a API Cloud Asset Inventory para visualizar uma lista paginada dos recursos em um determinado carimbo de data/hora.

Antes de começar

gcloud

  1. Ative a API Cloud Asset antes de usar a ferramenta de linha de comando gcloud para acessar o Inventário de recursos do Cloud. Observe que a API só precisa estar ativada no projeto do qual você executará os comandos da API do Cloud Asset.
    Ativar a API Cloud Asset Inventory
  2. Instale o SDK do Cloud no cliente local.

API

  1. Instale o oauth2l na sua máquina local para acessar o sistema do Google OAuth.
  2. Confirme se você tem acesso ao comando curl do Unix.
  3. Certifique-se de que a conta tenha um dos papéis a seguir no projeto ou na organização de que você pretende listar recursos.
    • roles/cloudasset.viewer
    • roles/cloudasset.owner

Configurar uma conta

Para chamar a API Cloud Asset, sua conta precisa receber a permissão correspondente no recurso raiz (pai), que é um projeto ou uma organização que contém recursos que você quer listar. Veja abaixo a permissão necessária para cada ContentType na solicitação:

  • CONTENT_TYPE_UNSPECIFIED: cloudasset.assets.listResource
  • RECURSOS: cloudasset.assets.listResource
  • IAM_POLICY: cloudasset.assets.listIamPolicy
  • ORG_POLICY: cloudasset.assets.listOrgPolicy
  • ACCESS_POLICY: cloudasset.assets.listAccessPolicy
  • OS_INVENT:RIO: cloudasset.assets.listOSInvenries

Se sua conta tiver recebido os papéis de Visualizador do Cloud Asset (roles/cloudasset.viewer), Proprietário do Cloud Asset (roles/cloudasset.owner) ou o papel básico de Proprietário (roles/owner) na raiz de recursos, ela já terá permissões suficientes para chamar a API Cloud Asset. Caso contrário, siga as etapas na página Como configurar permissões.

Listar recursos

Para listar os recursos em um projeto em um determinado período usando a API Cloud Asset, siga as etapas abaixo.

gcloud

Os comandos mostrados nesta seção listam recursos em um projeto. Para listar recursos em uma organização, use a sinalização --organization=ORGANIZATION_ID no seu comando.

O exemplo a seguir lista os recursos em um projeto.

O primeiro snapshot-time possível é o horário atual menos 35 dias.

  1. Verifique se é possível chamar a API do Cloud Asset seguindo a etapa Configurar uma conta.
  2. Determine os tipos de recurso dos recursos que você quer listar. Esta é a variável asset-types nos exemplos abaixo.
  3. Determine o momento em que você quer listar os recursos. Este é o snapshot-time no comando gcloud, no formato RFC 3339 UTC.

É possível especificar o projeto de faturamento com a sinalização --billing-project, que é o projeto usado para enviar a solicitação. É possível especificar o projeto de destino que você quer listar com a sinalização --project ao listar recursos de um projeto ou especificar a organização de destino com sinalização --organization ou especificar o destino pasta com sinalização --folder.

Para ver uma lista completa de sinalizações e opções, execute gcloud alpha asset list --help.

Liste os recursos em um projeto, incluindo todos os metadados de recursos:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project='PROJECT_ID' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

Liste os recursos em um projeto sem metadados do recurso:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --project='PROJECT_ID' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

Liste os recursos em uma organização, incluindo todos os metadados de recursos:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --organization='ORGANIZATION_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

Liste os recursos em uma organização sem metadados:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --organization='ORGANIZATION_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

Liste os recursos em uma pasta, incluindo todos os metadados de recursos:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --folder='FOLDER_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW \
  --content-type='resource'

Liste os recursos em uma pasta sem metadados:

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
gcloud beta asset list --folder='FOLDER_NUMBER' \
  --billing-project='BILLING_PROJECT_ID' \
  --asset-types='compute.googleapis.com/Instance' \
  --snapshot-time=$NOW

API

Os comandos mostrados nesta seção listam os recursos de um projeto, organização ou pasta.

  1. Verifique se é possível chamar a API do Cloud Asset seguindo a etapa Configurar uma conta.
  2. Determine o momento em que você quer listar os recursos. Este é o parâmetro readTime no comando a seguir, no formato RFC 3339 UTC.
  3. Determine os tipos de recurso do recurso que você quer listar. O exemplo a seguir usa compute.googleapis.com/Instance.

Definir Token Var

Para conseguir o token de acesso, execute o seguinte comando com o arquivo ~/credentials.json.

oauth2l header --json ~/credentials.json cloud-platform

Você verá uma saída semelhante à seguinte, com y29.xxxxxx como token de acesso:

Authorization: Bearer y29.xxxxxxx

Defina a variável Token como o token de acesso:

Token=y29.xxxxxxx

Listar recursos em um projeto, incluindo todos os metadados de recursos

O parâmetro pageToken não pode ser definido para a primeira página nem como o valor do token da página em resposta à solicitação de página anterior. Observe que pageToken é diferente do Token mencionado acima.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/assets

Listar recursos em um projeto, sem metadados de recursos

O parâmetro pageToken não pode ser definido para a primeira página nem como o valor do token da página em resposta à solicitação de página anterior.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/projects/PROJECT_NUMBER/assets

Listar recursos em uma organização, incluindo todos os metadados de recursos

O parâmetro pageToken não pode ser definido para a primeira página nem como o valor do token da página em resposta à solicitação de página anterior. Observe que pageToken é diferente do Token mencionado acima.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/organizations/ORGANIZATION_NUMBER/assets

Listar recursos em uma organização sem metadados de recursos

O parâmetro pageToken não pode ser definido para a primeira página nem como o valor do token da página em resposta à solicitação de página anterior.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/ogranizations/ORGANIZATION_NUMBER/assets

Listar recursos em uma pasta, incluindo todos os metadados de recursos

O parâmetro pageToken não pode ser definido para a primeira página nem como o valor do token da página em resposta à solicitação de página anterior. Observe que pageToken é diferente do Token mencionado acima.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"contentType":"RESOURCE", \
          "assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER/assets

Listar recursos em uma pasta, sem metadados de recursos

O parâmetro pageToken não pode ser definido para a primeira página nem como o valor do token da página em resposta à solicitação de página anterior.

NOW=$(TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ")
curl -X POST  -H "X-HTTP-Method-Override: GET" \
     -H "Authorization: Bearer $Token" -H "Content-Type: application/json" \
     -d '{"assetTypes": "compute.googleapis.com/Instance", \
          "readTime": "'$NOW'", \
          "pageToken": "PAGE_TOKEN_FROM_PREVIOUS_PAGE_RESPONSE"}' \
     https://cloudasset.googleapis.com/v1/folders/FOLDER_NUMBER/assets

Referência da API