Criando consultas do serviço Cloud Advisor

Revise os fundamentos da linguagem de consulta do Cloud Advisor, incluindo uma explicação de sintaxe e regras para que você possa criar suas próprias consultas.

As consultas aplicam condições de pesquisa a um conjunto de atributos e permitem classificar resultados. Se você deseja pesquisar em todos os tipos de recursos e atributos de recursos suportados e não precisa de resultados de pesquisa ordenados, não é necessário adicionar ordenação de atributos.

Esse tópico inclui estas seções:

Permissões Obrigatórias do Serviço IAM

Os recursos que você vê nos resultados da consulta dependem das permissões existentes para o tipo de recurso. Você não vê necessariamente os resultados de cada recurso no compartimento ou tenancy. Por exemplo, se a sua conta de usuário não estiver associada a uma política que conceda a você a capacidade de, no mínimo, inspect o tipo de recurso optimizer-resource-action, você não poderá consultar recursos do Cloud Advisor. (O verbo inspect permite listar e obter recursos.) Em vez disso, o Cloud Advisor não mostra resultados para consultas.

Para obter mais informações sobre as políticas, consulte Como as Políticas Funcionam. Para obter mais informações sobre as permissões específicas necessárias para a operação de API list do tipo de recurso necessário, consulte Criando políticas do Cloud Advisor.

Fundamentos sobre Consultas

Os exemplos a seguir mostram a sintaxe básica de uma consulta do Cloud Advisor:

query ResourceAction where <conditions> sorted by <fieldName> <order>

Ou:

query ResourceAction matching <keywords>

O serviço Cloud Advisor ignora o espaço em branco, o recuo e as quebras de linha. As amostras de consultas incluem recuo para melhorar a legibilidade. Para fins de demonstração apenas de sintaxe, sinais de maior e menor (<>) e texto em itálico indicam variáveis, que podem consistir em uma ou mais palavras-chave.

Em uma consulta, as cláusulas incluem o seguinte:

  • query - (Obrigatório) Seleciona quais recursos retornar com base nas cláusulas subsequentes. As instruções de consulta sempre começam com a palavra query.
  • where - Corresponde os recursos às conditions especificadas.
  • matching - Corresponde os recursos ao texto especificado, independentemente de o texto corresponder exatamente, corresponder ao tipo de recurso ou aparecer em um atributo de recurso indexado.
  • sorted by - Ordena os recursos de acordo com fieldName na ordem especificada por order. Se você não incluir esta cláusula, o Cloud Advisor listará os resultados pela data de criação em ordem decrescente, com os recursos mais recentes listados primeiro.

As cláusulas são opcionais, a menos que indicado. Para fins de correspondência, é possível usar a cláusula where e a cláusula matching separadamente ou juntas.

Condições

A cláusula where aplica conditions que filtra os resultados retornados pelo Cloud Advisor. Você pode especificar uma ou mais instruções de condição. Para obter mais informações sobre várias condições, consulte Agrupando Condições.

Em uma consulta, conditions consistem no seguinte:

<fieldName> <operation> <value>

A palavra-chave fieldName é o atributo de recurso em relação ao qual a operation e o value escolhido desse atributo são avaliados. Cada campo é associado a um tipo de campo. O tipo de campo informa o formato esperado de qualquer valor nesse campo. O tipo de operation que você pode usar em uma instrução conditions depende do tipo de campo.

Nas conditions de consulta, uma operation é um operador de comparação que se aplica ao value na instrução. A palavra-chave value refere-se ao valor do fieldName especificado. O Cloud Advisor avalia se o atributo especificado do tipo de recurso escolhido corresponde ou não ao value, de acordo com a operação. Em uma consulta, você deve colocar qualquer string ou valor de data/hora ao abrir e fechar aspas simples retas (ˈ) ou aspas duplas (").

A tabela a seguir descreve as operações suportadas para consultas de recursos:

Operação Descrição Tipos de Campos Suportados Faz distinção entre maiúsculas e minúsculas? Exemplo
=

Uma correspondência igual ou exata de strings

String, número inteiro, número racional, booliano, data/hora

Não

Se o value fosse 'backUp', ele corresponderia a "backup", "BACKUP", "BackUp", "backUp" ou qualquer outra variação de maiúsculas e minúsculas.
!=

É diferente de

String, número inteiro, número racional, booliano, data/hora

Não

Se o value fosse 'backUp', ele corresponderia a qualquer coisa que não fosse igual a "backUp", "backup", ou qualquer outra variação entre maiúsculas e minúsculas. Ele também corresponderia a qualquer coisa que não contivesse os caracteres 'backup' nessa ordem.
==

Estritamente igual a

String

Sim

Se o value fosse 'backUp', ele corresponderia apenas a "backUp" e a nenhuma outra variação em maiúsculas e minúsculas.
!==

Estritamente diferente de

String

Sim

Se o value fosse 'backUp', ele corresponderia a "backup", "BACKup" ou a qualquer outra coisa, exceto "backUp", com as letras maiúsculas e minúsculas, exatamente dessa forma.
=~

Contém

String

Não

Se o value fosse 'backUp', ele corresponderia a qualquer coisa que fosse igual a "backup", "BACKUP", "BackUp", "backUp", ou a qualquer outra variação de maiúsculas e minúsculas ou que contenha esses caracteres nessa ordem, junto com outros caracteres.
>=

Maior ou igual a

Número inteiro, racional, data/hora

Não aplicável

Para uma consulta em que você tem size >= 5 como a condição, todos os resultados têm um valor 5 ou maior no campo com o nome tamanho.
>

Maior que

Número inteiro, racional, data/hora

Não aplicável

Para uma consulta em que você tem size > 5 como a condição, todos os resultados têm um valor maior que 5 no campo com o nome tamanho.
<=

Menor ou igual a

Número inteiro, racional, data/hora

Não aplicável

Para uma consulta em que você tem size <= 5 como a condição, todos os resultados têm um valor de 5 ou menor no campo com o nome tamanho.
<

Menor que

Número inteiro, racional, data/hora

Não aplicável

Para uma consulta em que você tem size < 5 como a condição, todos os resultados têm um valor de 5 ou menor no campo com o nome tamanho.

A tabela a seguir lista alguns exemplos de atributos de recursos que pertencem a cada categoria de tipos de campos suportados. O tipo de campo informa o formato esperado para um determinado campo e o tipo de operation com o qual você pode combiná-lo em uma instrução conditions.

A tabela não inclui todos os exemplos possíveis de um determinado tipo de campo. Se quiser saber em que formato o serviço Cloud Advisor espera para um atributo de recurso específico, você poderá usar a interface de linha de comando ou a API para saber mais sobre atributos de recursos. Você também pode consultar a documentação da API. A documentação da API inclui uma referência para cada tipo de recurso suportado que especifica atributos, os seus tipos de campo e quaisquer restrições.

Tipo Exemplo de atributos de recursos
String Exibir nomes, estados do ciclo de vida, domínios de disponibilidade, tags, blocos CIDR e URLs
Número Inteiro Tamanho ou extensão de um recurso
Número Racional Armazenamento de dados disponível
Booliano Se um recurso está ativado ou configurado, se um recurso está íntegro, se ele é público ou privado, se algo é a versão mais recente e se algo é permitido
Data/Hora Datas de criação, datas da última atualização, datas da última indexação e reinicializações de manutenção programadas

Agrupando Condições

Incluindo mais de uma instrução de condição em uma consulta, você pode refinar os resultados de acordo com vários critérios. Você pode agrupar várias condições usando os operadores lógicos && (e comercial, para indicar um E lógico) ou || (barras verticais, para indicar um OU lógico). Por exemplo:

resourceType = 'Compute' && status = 'Active' && regionName = 'us-ashburn-1'

Você não pode combinar dois operadores lógicos distintos na mesma consulta, a menos que entre parênteses em um grupo de predicados. Caso contrário, várias condições poderão usar somente o mesmo operador lógico. Por exemplo:

(resourceType = 'Compute' && status = 'Active' && regionName = 'us-region-1') || status != 'Implemented'

No exemplo anterior, todos os resultados retornados têm Computação como o valor para resourceType, Ativo como o valor para status, e us-region-1 como o valor para regionName, ou o valor de seu campo de status é diferente de Implementado.

O seguinte grupo também é aceitável:

status = 'Implemented' && (resourceType = 'Compute' || lifecycleState != 'FAILED')

No exemplo anterior, todos os resultados retornados têm Implementado como o valor do status e Compute como o valor de resourceType ou qualquer coisa que não esteja FALHA para lifecycleState.

O Cloud Advisor não faz avaliação da esquerda para a direita para reduzir a ambiguidade ou esclarecer a intenção.

Valores de Data e Hora

Você pode especificar valores de data e hora usando qualquer um dos seguintes formatos de string padrão:

Formato Exemplos Comentários
<yyyy>-<MM>-<dd> <HH>:<mm>:<ss> <TimeZone>

'2018-06-19 16:15:41 PDT', '2018-06-19 16:15:41 -08:00'

TimeZone é opcional. Se TimeZone for excluído, será usado um UTC.
<EEE>, <d> <MMM> <yyyy> <HH>:<mm>:<ss> <TimeZone>

'Ter, 19 Jun 2018 16:15:41 +0300', '19 Junho 2018 16:15:41'

EEE é opcional. MMM também pode ser expresso como MMMM. TimeZone também é opcional. Se TimeZone for excluído, será usado um UTC.
<yyyy>-<MM>-<dd>T<HH>:<mm>:<ss>Z

'2018-06-19T16:15:41Z'

Horário em UTC. 'T' e 'Z' fazem distinção entre maiúsculas e minúsculas.

Você deve observar o espaço. Interprete traços, dois pontos, vírgulas e os caracteres 'T' e 'Z' literalmente. Para interpretar os valores de placeholder na tabela anterior, você pode consultar a seguinte sintaxe de padrão:

Letra Componente de Data ou Hora Apresentação
y

Ano

Ano

M

Mês do ano

Mês

d

Dia do mês

Dia

H Hora do dia (de 00 a 23) Número
m Minuto da hora Número
s Segundos do minuto Número
E Dia da semana Texto

Letras de padrão repetidas indicam a sua apresentação exata. Por exemplo, 'HH' significa que você deve usar '00' e não '0' para representar meia-noite. Da mesma forma, 'EEE' significa 'Ter' e não 'Terça-feira'. Da mesma forma, 'MM' requer '09' em vez de '9' para representar o mês de setembro.

TimeZone é opcional, mas no formato escolhido, é possível especificar TimeZone de uma das seguintes formas:

  • Nome. Você pode especificar um fuso horário pelo seu nome, como GMT ou PDT. Os valores diferenciam maiúsculas de minúsculas.
  • Valor de deslocamento GMT. Você pode especificar um fuso horário de acordo com o seu deslocamento GMT. Por exemplo, GMT-08:00. Os valores diferenciam maiúsculas de minúsculas.
  • Fuso horário ISO 8601. Você pode especificar um fuso horário de acordo com os padrões ISO 8601. Por exemplo, -08, -0800 ou -08:00.

Em vez de usar um dos formatos anteriores, também é possível especificar um valor de data/hora como a constante now. A constante now representa a hora atual para o nível de granularidade de segundos em um minuto.

Por último, é possível adicionar ou subtrair intervalos de tempo de qualquer valor de data/hora. Por exemplo, você pode consultar recursos que foram criados em até cinco minutos de um horário específico. O serviço Search suporta os seguintes intervalos de tempo:

Letra Componente de Data ou Hora
s

Segundos

m

Minutos

h

Horas

d Dias
w Semanas

Para especificar um intervalo de tempo em relação a um valor de data/hora, use um dos seguintes formatos:

  • agora - 3 horas
  • 2018-06-19 16:15:41 PDT + 1H

Classificando

A última cláusula de uma consulta de recurso é a cláusula sorted by e é opcional. A cláusula sorted by solicita os resultados retornados pelo Cloud Advisor com base no nome do campo e os lista de acordo com a order que você especificar. Por padrão, se você não especificar a ordem de classificação, os resultados serão sempre classificados por data/hora de criação em ordem decrescente.

Na cláusula sorted by, é possível especificar o seguinte:

  • fieldName - O campo que o Cloud Advisor usa para classificar os resultados. Você pode especificar qualquer campo de qualquer recurso. Os recursos que não contêm o campo especificado são listados após os recursos que o contêm.
  • order - Você pode especificar asc ou desc. A especificação de listas asc resulta em ordem ascendente. A especificação de listas desc resulta em ordem descendente.