除了 Automation Assembler 中的簡單條件清單之外,還可以透過進階編輯器組合更複雜的準則運算式,以控制動作何時可用。
建立新資源動作時,請選取需要條件和使用進階編輯器。然後,輸入所需的準則運算式。
運算式是一個子句或子句清單,每個子句均採用「索引鍵-運算子-值」格式。上圖顯示了目標必須開啟電源並且存在的準則。
子句
子句 | 說明 | 範例 |
---|---|---|
和 | 所有次子句均必須為 true,運算式結果才能為 true。 | 僅當 properties.powerState 為 ON 且 syncStatus 不為 MISSING 時,才會評估為 true。 matchExpression: - and: - key: properties.powerState operator: eq value: ON - key: syncStatus operator: notEq value: MISSING |
或 | 一或多個次子句必須為 true,運算式結果才能為 true。 | 無論 properties.powerState 為 ON 還是 OFF,均評估為 true。 matchExpression: - or: - key: properties.powerState operator: eq value: ON - key: properties.powerState operator: eq value: OFF |
運算子
運算子 | 說明 | 範例 |
---|---|---|
eq | 等於。尋找完全相符項。 | 當 properties.powerState 為 ON 時,評估為 true。 matchExpression: - and: - key: properties.powerState operator: eq value: ON |
notEq | 不等於。避免完全相符項。 | 當 properties.powerState 不為 OFF 時,評估為 true。 matchExpression: - and: - key: properties.powerState operator: notEq value: OFF |
hasAny | 在物件集合中尋找相符項。 | 當 storage.disks 陣列包含 100 IOPS EBS 物件時,評估為 true。 matchExpression: - key: storage.disks operator: hasAny value: matchExpression: - and: - key: iops operator: eq value: 100 - key: service operator: eq value: ebs |
in | 在一組值中尋找相符項。 | 當 properties.powerState 為 OFF 或 SUSPEND 時,評估為 true。 matchExpression: - and: - key: properties.powerState operator: in value: OFF, SUSPEND |
notIn | 避免與一組值相符。 | 當 properties.powerState 既不為 OFF 也不為 SUSPEND 時,評估為 true。 matchExpression: - and: - key: properties.powerState operator: notIn value: OFF, SUSPEND |
greaterThan | 尋找高於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 高於 50 時,評估為 true。 matchExpression: - and: - key: storage.disks[0].iops operator: greaterThan value: 50 |
lessThan | 尋找低於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 低於 200 時,評估為 true。 matchExpression: - and: - key: storage.disks[0].iops operator: lessThan value: 200 |
greaterThanEquals | 尋找等於或高於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 等於或高於 100 時,評估為 true。 matchExpression: - and: - key: storage.disks[0].iops operator: greaterThanEquals value: 100 |
lessThanEquals | 尋找等於或低於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 等於或低於 100 時,評估為 true。 matchExpression: - and: - key: storage.disks[0].iops operator: lessThanEquals value: 100 |
matchesRegex | 使用規則運算式尋找相符項。 | 當 properties.zone 為 us-east-1a 或 us-east-1c 時,評估為 true。 matchExpression: - and: - key: properties.zone operator: matchesRegex value: (us-east-1)+(a|c){1,2} |
範例
當 properties.tags 包含索引鍵為 key1
且值為 value1
的標籤時,下列準則運算式會評估為 true。
外部運算式使用 hasAny
,因為 properties.tags 是一個陣列,並且您希望只要在陣列的任何索引鍵-值配對中出現 key1=value1 時就評估為 true。
在內部運算式中有兩個子句,一個用於索引鍵欄位,另一個用於值欄位。properties.tags 陣列擁有索引鍵-值標記配對,您需要同時符合索引鍵和值欄位。
matchExpression: - key: properties.tags operator: hasAny value: matchExpression: - and: - key: key operator: eq value: key1 - key: value operator: eq value: value1
下列準則運算式類似於前一個範例,但現在只要 properties.tags 包含 key1=value1 或 key2=value2 標籤,就會評估為 true。
matchExpression: - or: - key: properties.tags operator: hasAny value: matchExpression: - and: - key: key operator: eq value: key1 - key: value operator: eq value: value1 - key: properties.tags operator: hasAny value: matchExpression: - and: - key: key operator: eq value: key2 - key: value operator: eq value: value2