

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

# 在個別堆疊資源上偵測偏離
<a name="detect-drift-resource"></a>

您可以在堆疊內的特定資源上偵測偏離，而非整個堆疊。當您只需要判斷特定資源現在是否再次符合其預期範本組態時，這特別有用。

在資源上執行漂移偵測時，CloudFormation 也會更新整體堆疊漂移狀態和 **Last drift check time (上次漂移檢查時間)** (如適用)。例如，假設堆疊的偏離狀態為 `IN_SYNC`。您讓 CloudFormation 在該堆疊包含的一個或多個資源上執行漂移偵測，CloudFormation 會偵測到其中一個或多個資源已漂移。CloudFormation 將堆疊漂移狀態更新為 `DRIFTED`。反之，假設堆疊因為單一偏離的資源而處於偏離狀態 `DRIFTED`。如果您將該資源設回其預期的屬性值，然後在資源再次偵測偏離，CloudFormation 就會將資源偏離狀態和堆疊偏離狀態都更新為 `IN_SYNC`，您也就不需要在整個堆疊上再次偵測偏離。

**使用 偵測個別資源上的偏離 AWS 管理主控台**

1. 在 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 開啟 CloudFormation 主控台。

1. 從堆疊清單中，選取包含資源的堆疊。CloudFormation 會顯示該堆疊的堆疊詳細資訊。

1. 在左側瀏覽窗格的**Stacks (堆疊)** 下，選擇 **Stack actions (堆疊動作)**，然後選擇 **Detect drift (偵測偏離)**。

1. 在 **Resource drift status (資源偏離狀態)** 下，選擇資源，然後選取**Detect drift for resource (偵測資源的偏離)**。

   CloudFormation 在所選資源上執行漂移偵測。如果成功，CloudFormation 會更新資源的漂移狀態，以及整體堆疊漂移狀態 (如有必要)。CloudFormation 還會更新上次在資源和整個堆疊上執行漂移偵測的時間戳記。如果已修改資源，CloudFormation 會顯示資源的預期和目前屬性值的詳細偏離資訊。

1. 檢閱資源的漂移偵測結果。

   1. 檢視已修改過的資源的詳細資訊。

     1. 在選取已修改資源的情況下，選取 **View drift details (檢視偏離詳細資訊)**。

       CloudFormation 會顯示該資源的偏離詳細資訊，包括資源的預期和目前屬性值，以及兩者間的任何差異。

       若要強調差異，請在 **Differences (差異)** 區段選取屬性名稱。
       + **Details** (詳細資訊) 區段的 **Current** (目前) 欄位會以綠色反白顯示新增的屬性。
       + **Details** (詳細資訊) 區段的 **Expected** (預期) 欄位會以紅色反白顯示刪除的屬性。
       + 值已變更的屬性在 **Expected (預期)** 和 **Current (目前)** 欄中以黃色醒目提示。  
![Drift Details (漂移詳細資訊) 的 Resource drift status (資源漂移狀態) 頁面，其中包含堆疊中每個支援漂移偵測的資源的漂移資訊。詳細資訊包括偏離狀態及預期與目前的屬性值。](http://docs.aws.amazon.com/zh_tw/AWSCloudFormation/latest/UserGuide/images/console-stacks-drifts-drift-details-differences-1.png)

**使用 偵測個別資源上的偏離 AWS CLI**
+ 
**重要**  
檢閱堆疊資源的**上次偏離檢查時間**，並確認其早於資源偏離結果中顯示的時間戳記，以防止使用過時資料。

  若要使用 偵測個別資源上的偏離 AWS CLI，請使用 **detect-stack-resource-drift**命令。指定資源的邏輯 ID，以及資源所在的堆疊。

  以下範例在特定堆疊資源 `my-drifted-resource` 上執行偏離偵測操作。回應傳回的資訊可確認資源已修改，包括值已變更的兩個屬性的詳細資訊。

  ```
  aws cloudformation detect-stack-resource-drift \
      --stack-name {{my-stack-with-resource-drift}} \
      --logical-resource-id {{my-drifted-resource}}
  ```

  輸出：

  ```
  {
      "StackResourceDrift": {
          "StackId": "arn:aws:cloudformation:us-east-1:099908667365:stack/my-stack-with-resource-drift/489e5570-df85-11e7-a7d9-50example", 
          "ActualProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":120,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":12},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", 
          "ResourceType": "AWS::SQS::Queue", 
          "Timestamp": "2018-03-26T18:54:28.462Z", 
          "PhysicalResourceId": "https://sqs.us-east-1.amazonaws.com/099908667365/my-stack-with-resource-drift-Queue-494PBHCO76H4", 
          "StackResourceDriftStatus": "MODIFIED", 
          "ExpectedProperties": "{\"ReceiveMessageWaitTimeSeconds\":0,\"DelaySeconds\":20,\"RedrivePolicy\":{\"deadLetterTargetArn\":\"arn:aws:sqs:us-east-1:099908667365:my-stack-with-resource-drift-DLQ-1BCY7HHD5QIM3\",\"maxReceiveCount\":10},\"MessageRetentionPeriod\":345600,\"MaximumMessageSize\":262144,\"VisibilityTimeout\":60,\"QueueName\":\"my-stack-with-resource-drift-Queue-494PBHCO76H4\"}", 
          "PropertyDifferences": [
              {
                  "PropertyPath": "/DelaySeconds", 
                  "ActualValue": "120", 
                  "ExpectedValue": "20", 
                  "DifferenceType": "NOT_EQUAL"
              }, 
              {
                  "PropertyPath": "/RedrivePolicy/maxReceiveCount", 
                  "ActualValue": "12", 
                  "ExpectedValue": "10", 
                  "DifferenceType": "NOT_EQUAL"
              }
          ], 
          "LogicalResourceId": "my-drifted-resource"
      }
  }
  ```