如何為 Automation Assembler 自訂動作建置進階條件
Automation Assembler
自訂動作建置進階條件除了
Automation Assembler
中的簡單條件清單之外,還可以透過進階編輯器組合更複雜的準則運算式,以控制動作何時可用。
建立新資源動作時,請選取
需要條件
和使用進階編輯器
。然後,輸入所需的準則運算式。
運算式是一個子句或子句清單,每個子句均採用「索引鍵-運算子-值」格式。上圖顯示了目標必須開啟電源並且存在的準則。
子句
子句 | 說明 | 範例 |
---|---|---|
和 | 所有次子句均必須為 true,運算式結果才能為 true。 | 僅當 properties.powerState 為 ON 且 syncStatus 不為 MISSING 時,才會評估為 true。
|
或 | 一或多個次子句必須為 true,運算式結果才能為 true。 | 無論 properties.powerState 為 ON 還是 OFF,均評估為 true。
|
運算子
運算子 | 說明 | 範例 |
---|---|---|
eq | 等於。尋找完全相符項。 | 當 properties.powerState 為 ON 時,評估為 true。
|
notEq | 不等於。避免完全相符項。 | 當 properties.powerState 不為 OFF 時,評估為 true。
|
hasAny | 在物件集合中尋找相符項。 | 當 storage.disks 陣列包含 100 IOPS EBS 物件時,評估為 true。
|
in | 在一組值中尋找相符項。 | 當 properties.powerState 為 OFF 或 SUSPEND 時,評估為 true。
|
notIn | 避免與一組值相符。 | 當 properties.powerState 既不為 OFF 也不為 SUSPEND 時,評估為 true。
|
greaterThan | 尋找高於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 高於 50 時,評估為 true。
|
lessThan | 尋找低於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 低於 200 時,評估為 true。
|
greaterThanEquals | 尋找等於或高於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 等於或高於 100 時,評估為 true。
|
lessThanEquals | 尋找等於或低於指定臨界值的相符項。僅適用於數值。 | 當 storage.disks 陣列中的第一個物件的 IOPS 等於或低於 100 時,評估為 true。
|
matchesRegex | 使用規則運算式尋找相符項。 | 當 properties.zone 為 us-east-1a 或 us-east-1c 時,評估為 true。
|
範例
當 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