Cloud Config は、ルールをデプロイおよび実装する方法の 1 つとして、カスタム条件ルールを使用します。カスタム条件ルールは、リソース、条件、DryRun などの複数の基本要素で構成されます。
条件は、カスタム条件ルールの重要な要素です。これは条件句で構成されます。複数の句を論理 AND 演算子と論理 OR 演算子を使用して組み合わせることで、より複雑な論理構造を形成できます。論理演算子によって連結された句のグループは、条件グループと呼ばれます。句は条件グループの本質であり、featurePath、operator、および desired の要素で構成されます。
要素 | 必須 | 説明 |
はい | リソース特性。リソースのプロパティまたはリソースの関連ソース特性は、JSONPath を使用して記述されます。たとえば、リソースステータスのプロパティは Status であり、特性の記述は | |
はい | リソース特性のソース。 | |
はい | 条件演算子。 | |
いいえ | 単項演算子。desired 要素は空のままにすることができます。演算子の例は IsStringEmpty です。 |
featurePath
ポリシーは JSONPath 形式をサポートしています。ポリシーを作成または更新すると、Cloud Config はポリシーが JSONPath 構文標準を満たしているかどうかを確認します。サードパーティの JSONPath バリデーターおよびエディターを使用して、ポリシーが JSONPath 構文標準を満たしているかどうかを確認することもできます。 JSONPath 構文標準の詳細については、「JSONPath」をご参照ください。
JSONPath | 説明 |
$ | ルート オブジェクトまたは要素。 |
@ | 現在のオブジェクトまたは要素。 |
. or [] | 子演算子。 |
.. | 再帰下降。JSONPath はこの構文を E4X から借用しています。 |
* | ワイルドカード。名前を問わず、すべてのオブジェクトまたは要素。 |
[] | 添え字演算子。XPath はこれを使用して要素コレクションと述語を反復処理します。Javascript および JSON では、これはネイティブ配列演算子です。 |
[,] | XPath の Union 演算子は、ノード セットの組み合わせになります。JSONPath では、代替名または配列インデックスをセットとして使用できます。 |
[start:end:step] | ES4 から借用した配列スライス演算子。 |
?() | フィルター (スクリプト) 式を適用します。 |
() | 基になるスクリプト エンジンを使用するスクリプト式。 |
例 1:ACS::ECS::Instance のステータス特性は
$.Statusで、タイプは String として決定され、String タイプの演算子が推奨されます。例 2:ACS::ECS::Instance のタグ特性は
$.Tags[*].TagKeyで、結果は Array です。例 3:ACS::ECS::SecurityGroup の権限構成特性は
$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRangeです。これは、システムがプロトコルが TCP または UDP で、ソース IP アドレスがポートの任意の IP アドレスであり、ポート範囲が 22、3389、およびその他のポートを含めるかどうかを構成できるエントリを許可することを示します。{ "featureSource": "CONFIGURATION", "desired": "21/21,22/22,23/23,3389/3389,445/445,-1/-1", "children": [], "operator": "ExcludeAll", "featurePath": "$.Permissions.Permission[?(@.Policy=='Accept')][?(@.IpProtocol=='TCP' || @.IpProtocol=='UDP')][?(@.SourceCidrIp=='0.0.0.0/0')].PortRange" }
featureSource
リソース特性のソース。
CONFIGURATION (デフォルト値): リソース プロパティの構成。featureSource 要素が空のままの場合でも、システムはリソース プロパティに基づいて処理を実行します。
RESOURCE_RELATIONSHIP_${targetResourceType}: リソース関係。例:RESOURCE_RELATIONSHIP_ACS::ECS::DISK。
operator
演算子には、論理演算子と計算演算子が含まれます。論理演算子には、論理 AND 演算子と論理 OR 演算子が含まれます。次の表に、計算演算子を示します。
演算子 | 説明 |
SizeLess | 配列要素の数が未満です。 |
DistinctSizeGreater | 重複排除後の要素の数がより大きいです。 |
AllGreaterOrEquals | すべての要素が以上である。 |
InAllItem | すべての要素が含まれています。 |
AllLessOrEquals | すべての要素が以下である。 |
AllGreater | すべての要素がより大きいです。 |
SizeGreater | 配列要素の数がより大きいです。 |
NotContainsIP | 配列に指定された IP アドレスが含まれていません。 |
ContainsIP | 配列に指定された IP アドレスが含まれています。 |
ContainsAny | 配列に、宛先配列のオブジェクトがまったく含まれていません。 |
NotContainsNull | 配列に空の要素が含まれていません。 |
NotContainsInternetCidr | パブリック CIDR ブロックが含まれていません。 |
IsNotEmpty | 空ではありません。 |
AllIn | すべて存在します。 |
IsEmpty | 空です。 |
ExcludeAll | すべて除外します。 |
ContainsAll | すべて含まれています。 |
NotIn | 存在しません。 |
In | 存在します。 |
NotContains | 含まれていません。 |
Contains | 含まれています。 |
NotBase64Contains | 含まれていません。 |
Base64Contains | 含まれています。 |
NotBoolEquals | 等しくありません。 |
BoolEquals | 等しい。 |
NotEquals | 等しくありません。 |
Equals | 等しい。 |
LessOrEquals | 以下である。 |
Less | 未満です。 |
Greater | より大きいです。 |
GreaterOrEquals | 以上である。 |
StringItemSizeGreater | 文字列分割要素の数が指定された値を超えています。 |
StringMatch | 正規表現一致。 |
NotStringTrimIn | 有効な値が存在しません。 |
StringTrimIn | 有効な値が存在します。 |
IsNotStringEmpty | 空ではありません。 |
IsStringEmpty | 空です。 |
NotStringContains | 含まれていません。 |
StringContains | 含まれています。 |
NotStringIn | 存在しません。 |
StringIn | 存在します。 |
NotStringEquals | 等しくありません。 |
StringEquals | 等しい。 |
desired
desired 要素は空のままにすることができます。演算子の例は IsStringEmpty です。