クラウド・アドバイザ問合せの作成

独自の問合せを作成できるように、構文とルールの説明など、クラウド・アドバイザの問合せ言語の基本を確認します。

問合せは属性セットに対して検索条件を適用して、結果をソートできるようにします。サポートされているすべてのリソース・タイプおよびリソース属性にわたって検索し、順序付き検索結果を必要としない場合は、属性の順序を追加する必要はありません。

ここでは、次の内容について説明します。

必要なIAM権限

問合せ結果に表示されるリソースは、リソース・タイプに対して設定されている権限によって異なります。必ずしもコンパートメントまたはテナンシのすべてのリソースの結果が表示されるとはかぎりません。たとえば、ユーザー・アカウントが、少なくともoptimizer-resource-actionリソース・タイプのinspectを実行できるようにするポリシーに関連付けられていない場合は、クラウド・アドバイザ・リソースを問合せできません。(動詞inspectにより、リソースの一覧表示と取得が可能になります。)かわりに、クラウド・アドバイザは問合せの結果を表示しません。

ポリシーの詳細は、ポリシーの仕組みを参照してください。必要なリソース・タイプのリストAPI操作に必要な特定の権限については、クラウド・アドバイザ・ポリシーの作成を参照してください。

問合せの基本

次の例は、クラウド・アドバイザ問合せの基本構文を示しています:

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

または:

query ResourceAction matching <keywords>

クラウド・アドバイザでは、空白、インデントおよび改行は無視されます。問合せの例には、読みやすくするためにインデントが含まれています。山カッコ(<>)とイタリック体のテキストは、構文を示す目的でのみ使用されており、変数を表します。変数は1つ以上のキーワードで構成されます。

問合せでは、句には次のものが含まれます:

  • query - (必須)後続の句に基づいて、どのリソースを返すかを選択します。問合せ文は常にqueryという語で始まります。
  • where - 指定されたconditionsとリソースを照合します。
  • matching - テキストが完全に一致するか、リソース・タイプと一致するか、または索引付けられたリソース属性に出現するかに関係なく、指定されたテキストとリソースを照合します。
  • sorted by - fieldNameorderで指定された順序でリソースを並べます。この句を指定しない場合、クラウド・アドバイザは結果を作成日の降順で表示し、最新のリソースを最初にリストします。

特に明記されていないかぎり、句はオプションです。照合の目的で、where句とmatching句を別々にまたは一緒に使用できます。

条件

where句は、クラウド・アドバイザによって返される結果をフィルタするconditionsを適用します。1つ以上の条件文を指定できます。複数条件の詳細は、条件のグループ化を参照してください。

問合せでは、conditionsは次のように構成されています:

<fieldName> <operation> <value>

fieldNameキーワードはリソース属性で、これに対してoperationおよび選択したその属性のvalueが評価されます。各フィールドにはフィールド・タイプが関連付けられています。フィールド・タイプは、そのフィールドの値に想定されている形式を示します。conditions文で使用できるoperationの種類は、フィールド・タイプによって異なります。

問合せのconditionsで、operationは文のvalueに適用される比較演算子です。valueキーワードは、指定したfieldNameを指します。クラウド・アドバイザは、操作に応じて、選択されたリソース・タイプの指定された属性がvalueと一致するかまたは一致しないかを評価します。問合せでは、任意の文字列または日時値を、ストレートの一重引用符(')または二重引用符(")で囲む必要があります。

次の表に、リソース問合せでサポートされる演算を示します:

演算 説明 サポートされるフィールド・タイプ ケース機密?
=

等しい、または文字列の完全一致

String、Integer、Rational、Boolean、Date-time

いいえ

valueがˈbackUpˈの場合、"backup"、"BACKUP"、"BackUp"、"backUp"またはその他の大/小文字のバリエーションと一致します。
!=

等しくない

String、Integer、Rational、Boolean、Date-time

いいえ

valueがˈbackUpˈの場合、"backUp"、"backup"またはその他の大/小文字のバリエーションと等しくないすべてと一致します。また、'backup'という文字がこの順序で含まれていないものにも一致します。
==

厳密に等しい

String

はい

valueがˈbackUpˈの場合、"backUp"とのみ一致し、大/小文字の他のバリエーションは一致しません。
!==

厳密に等しくない

String

はい

valueがˈbackUpˈの場合、"backup"や"BACKup"など、大/小文字が完全に一致する"backUp"以外と一致します。
=~

含む

String

いいえ

valueがˈbackUpˈの場合、"backup"、"BACKUP"、"BackUp"、"backUp"またはその他の大/小文字のバリエーションと同じか、他の文字とともにそれらの文字がその順序で含まれるものと一致します。
>=

以上

Integer、Rational、Date-time

該当しません

条件としてsize >= 5がある問合せでは、すべての結果のsizeという名前のフィールドの値は5以上です。
>

より大きい

Integer、Rational、Date-time

該当しません

条件としてsize > 5がある問合せでは、すべての結果のsizeという名前のフィールドの値は5を超えています。
<=

以下

Integer、Rational、Date-time

該当しません

条件としてsize <= 5がある問合せでは、すべての結果のsizeという名前のフィールドの値は5以下です。
<

未満

Integer、Rational、Date-time

該当しません

条件としてsize < 5がある問合せでは、すべての結果のsizeという名前のフィールドの値は5以下です。

次の表に、サポートされるフィールド・タイプの各カテゴリに属するリソース属性の例を示します。フィールド・タイプは、特定のフィールドに想定されている形式と、conditions文でそれと組み合せることができるoperationの種類を示します。

表には、特定のフィールド・タイプに使用できるすべての例が含まれているわけではありません。クラウド・アドバイザ・サービスが特定のリソース属性に想定している形式を知りたい場合は、コマンドライン・インタフェースまたはAPIを使用してリソース属性の詳細を確認できます。APIのドキュメントを参照することもできます。APIドキュメントには、属性、そのフィールド・タイプおよび制限を指定する、サポートされている各リソース・タイプのリファレンスが含まれています。

タイプ リソース属性の例
String 表示名、ライフサイクル状態、可用性ドメイン、タグ、CIDRブロックおよびURL
Integer リソースのサイズまたは長さ
Rational 使用可能なデータ・ストレージ
Boolean 機能が有効か、構成されているか、リソースが正常か、リソースがパブリックかプライベートか、何かが最新バージョンかどうか、何かが許可されているかどうか
Date-time 作成日、最終更新日、最終索引付け日、スケジュールされたメンテナンス再起動

条件のグループ化

1つの問合せに複数の条件文を含めることで、複数の条件に従って結果を絞り込むことができます。論理演算子&&(論理ANDを示すアンパサンド)または||(論理ORを示す縦棒)を使用して、複数の条件をグループ化できます。次に例を示します:

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

同じ問合せで2つの異なる論理演算子を結合するには、1つの述語グループをカッパします。それ以外の場合は、複数の条件で同じ論理演算子のみを使用できます。次に例を示します:

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

前述の例では、返されるすべての結果にresourceTypeの値としてCompute、statusの値としてActive、regionNameの値としてus-region-1があるか、ステータス・フィールドの値がImplemented以外です。

次のグループも受け入れられます:

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

前述の例では、返される結果はすべて、statusの値としてImplemented、resourceTypeの値としてCompute、またはlifecycleStateに対してFAILED以外のすべての結果です。

クラウド・アドバイザは、曖昧さを減らしたり、意図を明確にするために、左から右の評価は実行されません。

日時値

次のパターン文字列フォーマットのいずれかを使用して、日時値を指定できます:

フォーマット コメント
<yyyy>-<MM>-<dd> <HH>:<mm>:<ss> <TimeZone>

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

TimeZoneはオプションです。TimeZoneを省略した場合は、UTCが使用されます。
<EEE>, <d> <MMM> <yyyy> <HH>:<mm>:<ss> <TimeZone>

'Tue, 19 Jun 2018 16:15:41 +0300'、'19 June 2018 16:15:41'

EEEはオプションです。MMMは、MMMMとして表すこともできます。TimeZoneもオプションです。TimeZoneを省略した場合は、UTCが使用されます。
<yyyy>-<MM>-<dd>T<HH>:<mm>:<ss>Z

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

UTC時間。'T'および'Z'は大/小文字が区別されます。

スペーシングを守る必要があります。ダッシュ、コロン、カンマおよび文字'T'と'Z'は文字どおりに解釈されます。前述の表のプレースホルダ値を解釈するには、次のパターン構文を参照します:

文字 日付または時刻のコンポーネント 表現
y

M

年の月

d

日付

H 時刻の時間(00から23) 数値
m 時間の分 数値
s 数値
E 曜日 テキスト

パターン文字の繰返しは、そのとおりに表す必要があります。たとえば、'HH'は、午前0時を表すために'0'ではなく'00'を使用する必要があることを意味します。同様に、'EEE'は'Tuesday'ではなく'Tue'を意味しています。同様に、'MM'では、9月を表すために'9'ではなく'09'である必要があります。

TimeZoneはオプションですが、次のいずれかの方法の選択したフォーマットでTimeZoneを指定できます:

  • 名前タイム・ゾーンは、GMTPDTなどの名前で指定できます。値は大/小文字が区別されません。
  • GMTオフセット値。GMTオフセットに従ってタイム・ゾーンを指定できます。例: GMT-08:00値は大/小文字が区別されません。
  • ISO 8601タイム・ゾーン。ISO 8601標準に従ってタイム・ゾーンを指定できます。たとえば、-08-0800または-08:00です。

前述のフォーマットのいずれかを使用せずに、日時の値を定数nowで指定することもできます。定数nowは、現在の時間を秒レベルの粒度まで表します。

最後に、任意の日時値に対して時間間隔を加算または減算できます。たとえば、特定の時間の5分以内に作成されたリソースを問い合せることができます。検索では、次の時間間隔をサポートしています:

文字 日付または時刻のコンポーネント
s

m

h

時間

d
w

日時値との関係で時間間隔を指定するには、次のいずれかのフォーマットを使用します:

  • 今すぐ- 3時間
  • 2018-06-19 16:15:41日+1時間

ソート

リソース問合せの最後の句はsorted by句で、オプションです。sorted by句は、クラウド・アドバイザによって返された結果を、フィールド名に基づき、指定したorderに従って並べます。デフォルトでは、ソート順序を指定しない場合、結果は常に、作成された日時の降順でソートされます。

sorted by句には、次の指定を行えます:

  • fieldName - クラウド・アドバイザが結果のソートに使用するフィールド。任意のリソースの任意のフィールドを指定できます。指定したフィールドが含まれないリソースは、指定したフィールドを含むリソースの後にリストされます。
  • order - ascまたはdescを指定できます。ascを指定すると、結果が昇順でリストされます。descを指定すると、結果が降順でリストされます。