

這是 AWS CDK v2 開發人員指南。較舊的 CDK v1 已於 2022 年 6 月 1 日進入維護，並於 2023 年 6 月 1 日結束支援。

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

# `cdk drift`
<a name="ref-cli-cmd-drift"></a>

使用 AWS 雲端開發套件 (AWS CDK) 偵測您定義、管理和部署之資源的組態偏離。當堆疊的實際組態與其預期組態不同時，就會發生漂移，當資源在 AWS CloudFormation 外部修改時就會發生。

此命令會比較資源目前的狀態與預期的組態，以識別已修改的資源 （例如，透過 AWS 主控台或 AWS CLI)。這些修改可能會在您的基礎設施中造成非預期的行為。

在偏離偵測期間，CDK CLI 會輸出進度指標和結果，顯示：
+ 偏離預期組態的資源。
+ 具有漂移的資源總數。
+ 指出堆疊中是否偵測到偏離的摘要。

**重要**  
`cdk drift` 和 `cdk diff`命令的運作方式不同：  
 `cdk drift` 會呼叫 CloudFormation 的偏離偵測操作，將 AWS ("reality") 中的資源實際狀態與 CloudFormation 中的預期組態進行比較。並非所有 AWS 資源都支援偏離偵測。如需支援的資源清單，請參閱《* AWS CloudFormation 使用者指南*》中的[資源類型支援](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html)。
 `cdk diff` 會將從本機 CDK 程式碼合成的 CloudFormation 範本與已部署 CloudFormation 堆疊的範本進行比較。
當您需要驗證資源是否已在 CloudFormation 外部修改`cdk drift`時 （例如，透過 AWS 主控台或 AWS CLI)，請使用 。當您想要預覽本機程式碼變更在部署之前如何影響您的基礎設施`cdk diff`時，請使用 。

## 用量
<a name="ref-cli-cmd-drift-usage"></a>

```
$ cdk drift <arguments> <options>
```

## 引數
<a name="ref-cli-cmd-drift-args"></a><a name="ref-cli-cmd-drift-args-stack-name"></a>

 **Stack name (堆疊名稱)**   
您要檢查漂移的堆疊名稱。堆疊先前必須部署到 CloudFormation，才能執行偏離偵測。  
 *類型：*字串  
 *必要*：否  
如果未指定堆疊，則會在 CDK 應用程式中定義的所有堆疊上執行偏離偵測。

## 選項
<a name="ref-cli-cmd-drift-options"></a>

如需適用於所有 CDK CLI 命令的全域選項清單，請參閱[全域選項](ref-cli-cmd.md#ref-cli-cmd-options)。<a name="ref-cli-cmd-drift-options-fail"></a>

 `--fail <BOOLEAN>`   
如果偵測到偏離，請使用結束代碼 1 傳回 。  
 *預設值*：`false`<a name="ref-cli-cmd-drift-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk drift`命令參考資訊。

## 範例
<a name="ref-cli-cmd-drift-examples"></a>

### 檢查特定堆疊的偏離
<a name="ref-cli-cmd-drift-examples-stack"></a>

```
$ cdk drift MyStackName
```

命令會輸出類似以下的結果：

```
Stack MyStackName
Modified Resources
[~] AWS::Lambda::Function MyFunction MyLambdaFunc1234ABCD
 └─ [~] /Description
     ├─ [-] My original hello world Lambda function
     └─ [+] My drifted hello world Lambda function

1 resource has drifted from their expected configuration

✨  Number of resources with drift: 1
```

### 刪除資源時檢查偏離
<a name="ref-cli-cmd-drift-examples-deleted"></a>

下列範例顯示當資源已修改和刪除時，輸出的外觀：

```
Stack MyStackName
Modified Resources
[~] AWS::Lambda::Function MyFunction MyLambdaFunc1234ABCD
 └─ [~] /Description
     ├─ [-] My original hello world Lambda function
     └─ [+] My drifted hello world Lambda function
Deleted Resources
[-] AWS::CloudWatch::Alarm MyAlarm MyCWAlarmABCD1234

2 resources have drifted from their expected configuration

✨  Number of resources with drift: 2
```

### 使用結束碼檢查偏離
<a name="ref-cli-cmd-drift-examples-fail"></a>

若要讓命令在偵測到偏離時傳回非零結束碼：

```
$ cdk drift MyStackName --fail
```

這有助於 CI/CD 管道自動偵測和回應基礎設施偏離。