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
, você não poderá consultar recursos do Cloud Advisor. (O verbo optimizer-resource-action
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 palavraquery
.where
- Corresponde os recursos àsconditions
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 comfieldName
na ordem especificada pororder
. 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. ' |
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.