

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 自動化規則
<a name="automation-rules"></a>

自動化規則會根據您定義的條件和排程，自動實作建議的動作。自動化規則是全域資源，可在可使用 Compute Optimizer Automation 的所有AWS 區域中管理自動化動作。您可以從可使用 Compute Optimizer Automation 的任何AWS區域中建立、更新和刪除自動化規則。

## 規則類型
<a name="automation-rules-type"></a>

規則有兩種類型：
+ 帳戶規則：僅將建議動作套用至您帳戶的規則。
+ 組織規則：將建議動作集中套用至成員帳戶的規則。

**注意**  
只有管理帳戶或委派管理員可以建立組織規則。您只能選取已啟用自動化且允許組織規則的成員帳戶，才能套用規則。成員帳戶可以檢視套用至其帳戶但無法編輯的組織規則詳細資訊。組織規則可以設定為在成員帳戶規則之前或之後套用。

## 規則條件
<a name="automation-rules-criteria"></a>

設定規則時，請選擇您希望規則實作的建議動作類型，例如快照、刪除未連接的 Amazon EBS 磁碟區，以及升級 Amazon EBS 磁碟區類型。使用AWS區域和資源標籤等條件來精簡您的選擇。然後預覽目前相符的建議動作，以驗證您的條件。

**重要**  
如果您未指定規則條件，Compute Optimizer 會將所有選取的建議動作類型套用至您在規則範圍中選取的帳戶，包括在可使用AWS 區域 Compute Optimizer Automation 的所有 中建議的動作。

自動化規則支援下列建議的動作屬性和比較運算子：


| 屬性 | 運算子 | 欄位類型 | 
| --- | --- | --- | 
| 目前磁碟區大小 (GiB) | `NumericEquals \| NumericNotEquals \| NumericLessThan \| NumericLessThanEquals \| NumericGreaterThan \| NumericGreaterThanEquals \| NumericEqualsIfExists \| NumericNotEqualsIfExists \| NumericLessThanIfExists \| NumericLessThanEqualsIfExists \| NumericGreaterThanIfExists \| NumericGreaterThanEqualsIfExists` | Integer | 
| 目前的磁碟區類型 | `StringEquals \| StringNotEquals \| StringEqualsIgnoreCase \| StringNotEqualsIgnoreCase \| StringLike \| StringNotLike \| StringEqualsIfExists \| StringNotEqualsIfExists \| StringEqualsIgnoreCaseIfExists \| StringNotEqualsIgnoreCaseIfExists \| StringLikeIfExists \| StringNotLikeIfExists` | String | 
| 預估節省 ($) | `NumericEquals \| NumericNotEquals \| NumericLessThan \| NumericLessThanEquals \| NumericGreaterThan \| NumericGreaterThanEquals \| NumericEqualsIfExists \| NumericNotEqualsIfExists \| NumericLessThanIfExists \| NumericLessThanEqualsIfExists \| NumericGreaterThanIfExists \| NumericGreaterThanEqualsIfExists` | Double | 
| 回顧期間 （天） | `NumericEquals \| NumericNotEquals \| NumericLessThan \| NumericLessThanEquals \| NumericGreaterThan \| NumericGreaterThanEquals \| NumericEqualsIfExists \| NumericNotEqualsIfExists \| NumericLessThanIfExists \| NumericLessThanEqualsIfExists \| NumericGreaterThanIfExists \| NumericGreaterThanEqualsIfExists` | Integer | 
| AWS區域 | `StringEquals \| StringNotEquals \| StringEqualsIgnoreCase \| StringNotEqualsIgnoreCase \| StringLike \| StringNotLike \| StringEqualsIfExists \| StringNotEqualsIfExists \| StringEqualsIgnoreCaseIfExists \| StringNotEqualsIgnoreCaseIfExists \| StringLikeIfExists \| StringNotLikeIfExists` | String | 
| 資源 ARN | `StringEquals \| StringNotEquals \| StringEqualsIgnoreCase \| StringNotEqualsIgnoreCase \| StringLike \| StringNotLike \| StringEqualsIfExists \| StringNotEqualsIfExists \| StringEqualsIgnoreCaseIfExists \| StringNotEqualsIgnoreCaseIfExists \| StringLikeIfExists \| StringNotLikeIfExists` | String | 
| 資源標籤 | `StringEquals \| StringNotEquals \| StringEqualsIgnoreCase \| StringNotEqualsIgnoreCase \| StringLike \| StringNotLike \| StringEqualsIfExists \| StringNotEqualsIfExists \| StringEqualsIgnoreCaseIfExists \| StringNotEqualsIgnoreCaseIfExists \| StringLikeIfExists \| StringNotLikeIfExists` | 資源標籤 | 
| 需要重新啟動 | `StringEquals \| StringNotEquals \| StringEqualsIgnoreCase \| StringNotEqualsIgnoreCase \| StringLike \| StringNotLike \| StringEqualsIfExists \| StringNotEqualsIfExists \| StringEqualsIgnoreCaseIfExists \| StringNotEqualsIgnoreCaseIfExists \| StringLikeIfExists \| StringNotLikeIfExists` | String | 

每個屬性最多可以指定 20 個條件，每個條件最多可以指定 20 個值。如需詳細資訊，請參閱AWS Compute Optimizer自動化 API 參考中的[條件](https://docs.aws.amazon.com/compute-optimizer/latest/APIReference/API_automation_Criteria.html)。

### 比較運算子
<a name="automation-rules-comparison-operators"></a>

在規則條件中使用比較運算子，將建議的動作屬性與您指定的值相符。

**重要**  
如果您在規則條件中指定的屬性不存在於建議的動作中，則值不相符、條件為 false，且建議的動作會從規則中排除。此邏輯適用於所有比較運算子，但運算子除外，運算`...IfExists`子會在屬性不存在時評估為 true。`...IfExists` 運算子會測試建議的 動作上是否存在 屬性 （存在）。

#### 字串條件運算子
<a name="automation-rules-string-operators"></a>

字串條件運算子可讓您定義規則條件，將建議的動作屬性與您指定的字串進行比較。


| 條件運算子 | 說明 | 
| --- | --- | 
| `StringEquals` | 完全相符，區分大小寫。 | 
| `StringNotEquals` | 確定完全相符，區分大小寫。 | 
| `StringEqualsIgnoreCase` | 完全相符，忽略大小寫。 | 
| `StringNotEqualsIgnoreCase` | 否定相符，忽略大小寫。 | 
| `StringLike` | 大小寫相符。這些值可以包含字串中任意位置的多字元比對萬用字元 (`*`)。您必須指定萬用字元才能達到部分字串相符。 | 
| `StringNotLike` | 否定大小寫相符。這些值可以包含字串中任意位置的多字元比對萬用字元 (`*`)。 | 

**注意**  
`*` 單獨使用 做為 的值，`StringLike`符合任何存在的值。與 結合時`StringNotLike`， 值`*`表示「不符合任何項目」，有效排除屬性存在的所有建議動作。例如，在`Application`具有 值的標籤索引鍵`StringNotLike`上使用 `*`會排除具有 `Application`標籤的任何建議動作，無論標籤的值為何。

#### 數位條件運算子
<a name="automation-rules-numeric-operators"></a>

數值條件運算子可讓您定義規則條件，將建議的動作屬性與整數或小數進行比較。


| 條件運算子 | 說明 | 
| --- | --- | 
| `NumericEquals` | 精確的數值比對。 | 
| `NumericNotEquals` | 必要數字比對。 | 
| `NumericLessThan` | 「小於」相符項目。 | 
| `NumericLessThanEquals` | 「小於或等於」相符項目。 | 
| `NumericGreaterThan` | 「大於」相符項目。 | 
| `NumericGreaterThanEquals` | 「大於或等於」相符項目。 | 

例如，您可以使用 `NumericGreaterThanEquals`搭配 **Lookback 期間**屬性來建立規則，該規則只會自動化用於產生建議的回顧期間至少為 32 天的建議動作。

### IfExists 運算子
<a name="automation-rules-ifexists-operators"></a>

附加`IfExists`到任何比較運算子 （例如，`StringLikeIfExists`)，以變更當您指定的屬性**不存在**於建議動作時，評估條件的方式：
+ 使用基本運算子時，缺少屬性會評估為 **false**，而建議的動作會從規則**中排除**。
+ 使用 `...IfExists`變體時，缺少屬性會評估為 **true**，並**包含**建議的動作。

`IfExists` 當您想要從規則中排除特定資源群組，但仍包含未攜帶您正在篩選之標籤的資源時， 會很有幫助。例如，您可能想要包含一個團隊擁有的資源以外的所有項目。`StringNotEquals` 基礎 `team` = `TeamA` 會排除 TeamA 的資源，但也會排除完全不攜帶`team`標籤的所有資源，並排除您打算包含的資源。新增 `IfExists`以將這些未標記的資源保持在範圍內：
+ **StringNotEquals** 只會比對`team`標籤設定為 以外值的資源`TeamA`。未標記的資源會被排除。
+ **StringNotEqualsIfExists** 會比對沒有`team`標籤的資源，*以及*設定為 以外任何值的資源`TeamA`。只有標記 `team` = 的資源`TeamA`會被排除。

`IfExists` 當您想要讓資源擁有者將自己的資源從自動化中排除時， 也很有幫助。您可以指定專用選擇退出標籤，例如 `automation-opt-out`，讓擁有者套用至他們想要退出的任何資源。在這種情況下，標籤的存在很重要，而不是其值，因此請在`automation-opt-out`標籤索引鍵`*`上使用 `StringNotLikeIfExists`與 值。`*` 萬用字元符合任何值，因此 Compute Optimizer 會排除每個攜帶標籤的資源。`IfExists` 變體會將未攜帶標籤的資源保留在範圍內；如果沒有，則也會排除每個未標記的資源。

### 規則條件範例
<a name="automation-rules-criteria-examples"></a>

**範例：僅在特定區域中包含建議的動作**

下列規則條件會在**AWS區域**屬性`StringEquals`上使用 ，以符合 `us-east-1`或 中資源的建議動作`us-west-2`。當您為條件指定多個值時，這些值具有 OR 關係 — 如果其屬性值符合任何一個值，則建議的動作會符合條件。

條件組態：


| 屬性 | 運算子 | 值 | 
| --- | --- | --- | 
| AWS區域 | `StringEquals` | `us-east-1`, `us-west-2` | 

評估：


| 屬性值 | 結果 | 
| --- | --- | 
| `us-east-1` | 匹配 | 
| `us-west-2` | 匹配 | 
| `eu-west-1` | 無相符項目 | 

**範例：僅包含最短回顧期間產生的建議動作**

下列規則條件在 **Lookback 期間 （天）** 屬性`NumericGreaterThanEquals`上使用 ，僅自動化用於產生建議的回顧期間至少為 32 天的建議動作。這可讓您在建議的動作自動化之前，需要較長的觀察時段。

條件組態：


| 屬性 | 運算子 | 值 | 
| --- | --- | --- | 
| 回顧期間 （天） | `NumericGreaterThanEquals` | `32` | 

評估：


| 屬性值 | 結果 | 
| --- | --- | 
| `32` | 匹配 | 
| `14` | 無相符項目 | 

**範例：包含建議的動作，除非資源屬於特定團隊**

考慮一個平台團隊，在許多帳戶中啟用 Compute Optimizer Automation，但想要將一個團隊的資源排除在規則之外。團隊已經為其他用途使用`team`標籤來標記資源，但不是每個資源都攜帶它。他們想要廣泛套用自動化，同時排除任何標記 `team` = 的資源`TeamA`。

下列規則條件會在**資源標籤**屬性`StringNotEqualsIfExists`上使用 ，並搭配標籤索引鍵 `team` 和值 `TeamA`。當資源完全沒有`team`標籤，或當標籤設定為 以外的任何值時，會包含建議的動作`TeamA`。由於許多資源不會攜帶標籤，因此 `IfExists` 是將它們保持在範圍內的原因 - 如果沒有它，則會排除每個未標記的資源。

條件組態：


| 屬性 | 運算子 | 標籤鍵 | 值 | 
| --- | --- | --- | --- | 
| 資源標籤 | `StringNotEqualsIfExists` | `team` | `TeamA` | 

評估：


| 建議的動作狀態 | 結果 | 說明 | 
| --- | --- | --- | 
| 資源沒有 `team`標籤 | 匹配 | 屬性不存在，並將不存在的屬性`IfExists`評估為 true。 | 
| 資源的標籤 `team` = `web` | 匹配 | 標籤存在且值不符合 `TeamA`。 | 
| 資源的標籤 `team` = `TeamA` | 無相符項目 | 標籤存在且值符合 `TeamA`，因此排除建議的動作。 | 

**範例：包含建議的動作，除非資源具有選擇退出標籤**

您可以套用專用選擇退出標籤，讓資源擁有者從自動化中排除個別資源。在此範例中，擁有者會將`automation-opt-out`標籤新增至他們想要捨棄的任何資源。

下列規則條件會在**資源標籤**屬性`StringNotLikeIfExists`上使用 ，並搭配標籤索引鍵 `automation-opt-out` 和值 `*`。`*` 萬用字元符合任何值，因此會排除任何攜帶標籤的資源。當資源沒有 `automation-opt-out`標籤時，會包含建議的動作。

條件組態：


| 屬性 | 運算子 | 標籤鍵 | 值 | 
| --- | --- | --- | --- | 
| 資源標籤 | `StringNotLikeIfExists` | `automation-opt-out` | `*` | 

評估：


| 建議的動作狀態 | 結果 | 說明 | 
| --- | --- | --- | 
| 資源沒有 `automation-opt-out`標籤 | 匹配 | 屬性不存在，並將不存在的屬性`IfExists`評估為 true。 | 
| 資源的標籤 `automation-opt-out` = `true` | 無相符項目 | 標籤存在，且`*`符合任何值，因此排除建議的動作。 | 
| 資源的標籤 `automation-opt-out` = `temporary` | 無相符項目 | 標籤存在，且`*`符合任何值，因此排除建議的動作。 | 

**範例：合併多個條件**

您可以結合多個條件來縮小規則的範圍。所有條件都必須符合，才能在規則中包含建議的動作 (AND 邏輯）。

下列組態會自動執行 EBS 磁碟區建議的動作：

1. 位於 us-east-1 和 us-west-2

1. 產生的回顧期間至少為 32 天；以及

1. 未選擇退出自動化 （無`automation-opt-out`標籤）。

此規則只有在同時符合所有三個條件時，才會包含建議的動作。

條件組態：


| 屬性 | 運算子 | 值 | 
| --- | --- | --- | 
| AWS區域 | `StringEquals` | `us-east-1`, `us-west-2` | 
| 回顧期間 （天） | `NumericGreaterThanEquals` | `32` | 
| 資源標籤 （索引鍵：`automation-opt-out`) | `StringNotLikeIfExists` | `*` | 

## Schedule
<a name="automation-rules-schedule"></a>

透過指定頻率 （每日、每週或每月）、開始時間、結束時間和時區，設定規則執行時的排程。在此時段內，Compute Optimizer 會開始實作符合您指定條件的建議動作。啟動的動作數量取決於排程時段的持續時間、運算最佳化工具自動化的並行限制，以及完成每個動作所需的時間。自動化動作會顯示為「進行中」，直到自動化工作流程中的所有步驟都完成為止。每個AWS區域的每個帳戶最多可同時進行 100 個動作。

## 規則順序
<a name="automation-rules-order"></a>

根據預設，規則會在其規則群組中以規則順序 1 （最高優先順序） 建立。例如，當管理帳戶建立設定為在成員帳戶規則之後套用的組織規則時，會收到規則順序 1，這是該群組中所有規則的最高優先順序。當帳戶中的建議動作符合多個規則時，規則群組和規則順序會決定套用哪個規則。Compute Optimizer 會將動作指派給規則順序值最低 （最高優先順序） 的作用中規則，無論該規則排定何時執行。

例如，如果建議的動作符合下表中的所有規則，Compute Optimizer 會將其指派給 Rule-C，並根據 Rule-C 的排程實作它。



- ** 成員帳戶規則之前評估的組織規則 **
  - **規則順序:** 1 / **規則名稱:** Rule-A / **狀態:** 非作用中 / **Schedule:** 每週一 12：00 到 13：00 UTC
  - **規則順序:** 2 / **規則名稱:** Rule-B / **狀態:** 非作用中 / **Schedule:** 每日 12：00 到 13：00 UTC

- ** 成員帳戶規則 **
  - **規則順序:** 1 / **規則名稱:** Rule-C / **狀態:** 作用中 / **Schedule:** 每月 15 日 12：00 到 13：00 UTC
  - **規則順序:** 2 / **規則名稱:** Rule-D / **狀態:** 非作用中 / **Schedule:** 每月 15 日 12：00 到 13：00 UTC

- ** 成員帳戶規則之前 之後的組織規則 **
  - **規則順序:** 1 / **規則名稱:** 規則 E / **狀態:** 非作用中 / **Schedule:** 每週一 12：00 到 13：00 UTC
  - **規則順序:** 2 / **規則名稱:** Rule-F / **狀態:** 作用中 / **Schedule:** 每日 12：00 到 13：00 UTC

