

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

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

# AWS CDK CLI 命令參考
<a name="ref-cli-cmd"></a>

本節包含 AWS 雲端開發套件 (AWS CDK) 命令列界面 (CLI) 的命令參考資訊。CDK CLI 也稱為 CDK Toolkit。

## 使用方式
<a name="ref-cli-cmd-usage"></a>

```
$ cdk <command> <arguments> <options>
```

## 命令
<a name="ref-cli-cmd-commands"></a><a name="ref-cli-cmd-commands-acknowledge"></a>

 ` acknowledge ack `   
依問題編號確認通知，並隱藏通知，使其無法再次顯示。<a name="ref-cli-cmd-commands-bootstrap"></a>

 ` bootstrap `   
透過將名為 的 CDK 引導堆疊部署到 AWS 環境中`CDKToolkit`，為 CDK 部署準備 AWS 環境。<a name="ref-cli-cmd-commands-context"></a>

 ` context `   
管理 CDK 應用程式的快取內容值。<a name="ref-cli-cmd-commands-deploy"></a>

 ` deploy `   
在您的 AWS 環境中部署一或多個 CDK 堆疊。<a name="ref-cli-cmd-commands-destroy"></a>

 ` destroy `   
從 AWS 環境中刪除一或多個 CDK 堆疊。<a name="ref-cli-cmd-commands-diff"></a>

 ` diff `   
執行差異以查看 CDK 堆疊之間的基礎設施變更。<a name="ref-cli-cmd-commands-docs"></a>

 ` docs doc `   
在瀏覽器中開啟 CDK 文件。<a name="ref-cli-cmd-commands-doctor"></a>

 ` doctor `   
檢查並顯示有關本機 CDK 專案和開發環境的實用資訊。<a name="ref-cli-cmd-commands-drift"></a>

 ` drift `   
偵測您使用 CDK 定義、管理和部署之資源的組態偏離。<a name="ref-cli-cmd-commands-flags"></a>

 ` flags `   
檢視和修改 CDK CLI 的功能旗標組態。<a name="ref-cli-cmd-commands-import"></a>

 ` import `   
Use AWS CloudFormation 資源匯入，將現有 AWS 資源匯入 CDK 堆疊。<a name="ref-cli-cmd-commands-init"></a>

 ` init `   
從範本建立新的 CDK 專案。<a name="ref-cli-cmd-commands-list"></a>

 ` list, ls `   
從 CDK 應用程式列出所有 CDK 堆疊及其相依性。<a name="ref-cli-cmd-commands-metadata"></a>

 ` metadata `   
顯示與 CDK 堆疊相關聯的中繼資料。<a name="ref-cli-cmd-commands-migrate"></a>

 ` migrate `   
將 AWS 資源、 AWS CloudFormation 堆疊和 AWS CloudFormation 範本遷移至新的 CDK 專案。<a name="ref-cli-cmd-commands-notices"></a>

 ` notices `   
顯示 CDK 應用程式的通知。<a name="ref-cli-cmd-commands-refactor"></a>

 ` refactor `   
在 CDK 應用程式中重構程式碼時保留已部署的資源。<a name="ref-cli-cmd-commands-synthesize"></a>

 ` synthesize, synth `   
合成 CDK 應用程式以產生雲端組件，包括每個堆疊的 an AWS CloudFormation 範本。<a name="ref-cli-cmd-commands-watch"></a>

 ` watch `   
持續監看本機 CDK 專案的變更，以執行部署和熱交換。

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

下列選項與所有 CDK CLI 命令相容。<a name="ref-cli-cmd-options-app"></a>

 `--app, -a <STRING>`   
提供執行應用程式或雲端組件目錄的 命令。  
 *必要*：是<a name="ref-cli-cmd-options-asset-metadata"></a>

 `--asset-metadata <BOOLEAN>`   
包含使用資產之資源的 `aws:asset:*` AWS CloudFormation 中繼資料。  
 *必要*：否  
 *預設值*：`true`<a name="ref-cli-cmd-options-build"></a>

 `--build <STRING>`   
執行預先合成建置的命令。  
 *必要*：否<a name="ref-cli-cmd-options-ca-bundle-path"></a>

 `--ca-bundle-path <STRING>`   
驗證 HTTPS 請求時要使用的 CA 憑證路徑。  
如果未提供此選項，CDK CLI 將從`AWS_CA_BUNDLE`環境變數讀取。  
 *必要*：是<a name="ref-cli-cmd-options-ci"></a>

 `--ci <BOOLEAN>`   
表示 CDK CLI 命令正在持續整合 (CI) 環境中執行。  
此選項會修改 CDK CLI 的行為，以更符合 CI 管道中典型的自動化操作。  
當您提供此選項時，日誌會傳送到 ，`stdout`而不是 `stderr`。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-context"></a>

 `--context, -c <ARRAY>`   
將內容字串參數新增為索引鍵/值對。<a name="ref-cli-cmd-options-debug"></a>

 `--debug <BOOLEAN>`   
啟用詳細的偵錯資訊。此選項會產生詳細輸出，其中包含有關 CDK CLI 在幕後執行的操作的更多詳細資訊。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-ec2creds"></a>

 `--ec2creds, -i <BOOLEAN>`   
強制 CDK CLI 嘗試並擷取 Amazon EC2 執行個體登入資料。  
根據預設，CDK CLI 會猜測 Amazon EC2 執行個體狀態。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示 CDK CLI 的命令參考資訊。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-ignore-errors"></a>

 `--ignore-errors <BOOLEAN>`   
忽略合成錯誤，這可能會產生無效的輸出。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-json"></a>

 `--json, -j <BOOLEAN>`   
使用 JSON 而非列印到標準輸出的 YAML for AWS CloudFormation 範本 (`stdout`)。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-lookups"></a>

 `--lookups <BOOLEAN>`   
執行內容查詢。  
如果此值為 `false`且需要執行內容查詢，則合成將會失敗。  
 *必要*：否  
 *預設值*：`true`<a name="ref-cli-cmd-options-no-color"></a>

 `--no-color <BOOLEAN>`   
從主控台輸出中移除顏色和其他樣式。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-notices"></a>

 `--notices <BOOLEAN>`   
顯示相關通知。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-output"></a>

 `--output, -o <STRING>`   
指定要輸出合成雲端組件的目錄。  
 *必要*：是  
 *預設值*：`cdk.out`<a name="ref-cli-cmd-options-path-metadata"></a>

 `--path-metadata <BOOLEAN>`   
包含每個資源的 `aws::cdk::path` AWS CloudFormation 中繼資料。  
 *必要*：否  
 *預設值*：`true`<a name="ref-cli-cmd-options-plugin"></a>

 `--plugin, -p <ARRAY>`   
延伸 CDK 功能的節點套件名稱或路徑。此選項可在單一命令中多次提供。  
您可以在專案的 `cdk.json` 檔案或本機開發機器`~/.cdk.json`上的 設定此選項：  

```
{
   // ...
   "plugin": [
      "module_1",
      "module_2"
   ],
   // ...
}
```
 *必要*：否<a name="ref-cli-cmd-options-profile"></a>

 `--profile <STRING>`   
指定 AWS 設定檔的名稱，其中包含要與 CDK CLI 搭配使用 AWS 的環境資訊。  
 *必要*：是<a name="ref-cli-cmd-options-proxy"></a>

 `--proxy <STRING>`   
使用指定的代理。  
如果未提供此選項，CDK CLI 將從`HTTPS_PROXY`環境變數讀取。  
 *必要*：是  
 *預設值*：讀取`HTTPS_PROXY`環境變數。<a name="ref-cli-cmd-options-role-arn"></a>

 `--role-arn, -r <STRING>`   
與 AWS CloudFormation 互動時，CDK CLI 將擔任之 IAM 角色的 ARN。  
 *必要*：否<a name="ref-cli-cmd-options-staging"></a>

 `--staging <BOOLEAN>`   
將資產複製到輸出目錄。  
指定 `false`以防止資產複製到輸出目錄。這可讓 AWS SAM CLI 在執行本機偵錯時參考原始來源檔案。  
 *必要*：否  
 *預設值*：`true`<a name="ref-cli-cmd-options-strict"></a>

 `--strict <BOOLEAN>`   
請勿建構包含警告的堆疊。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-trace"></a>

 `--trace <BOOLEAN>`   
列印堆疊警告的追蹤。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-verbose"></a>

 `--verbose, -v <COUNT>`   
顯示偵錯日誌。您可以多次指定此選項，以提高詳細程度。  
 *必要*：否<a name="ref-cli-cmd-options-version"></a>

 `--version <BOOLEAN>`   
顯示 CDK CLI 版本編號。  
 *必要*：否  
 *預設值*：`false`<a name="ref-cli-cmd-options-version-reporting"></a>

 `--version-reporting <BOOLEAN>`   
在合成的 AWS CloudFormation 範本中包含 ` AWS::CDK::Metadata` 資源。  
 *必要*：否  
 *預設值*：`true`

## 提供和設定選項
<a name="ref-cli-cmd-configure"></a>

您可以透過命令列引數傳遞選項。對於大多數選項，您可以在`cdk.json`組態檔案中設定它們。當您使用多個組態來源時，CDK CLI 會遵循下列優先順序：

1.  **命令列值** – 命令列提供的任何選項都會覆寫`cdk.json`檔案中設定的選項。

1.  **專案組態檔案** – `cdk.json` CDK 專案目錄中的檔案。

1.  **使用者組態檔案** – `cdk.json`位於本機電腦上 `~/.cdk.json`的檔案。

## 在命令列傳遞選項
<a name="ref-cli-cmd-pass"></a><a name="ref-cli-cmd-pass-bool"></a>

 **傳遞布林值**   
對於接受布林值的選項，您可以透過下列方式指定它們：  
+ 使用 `true`和 `false`值 – 使用 命令提供布林值。以下是範例：

  ```
  $ cdk deploy --watch=true
  $ cdk deploy --watch=false
  ```
+ 提供選項的對應項目 – 新增 `no`以指定`false`值來修改選項名稱。以下是範例：

  ```
  $ cdk deploy --watch
  $ cdk deploy --no-watch
  ```
+ 對於預設為 `true`或 的選項`false`，您不需要提供 選項，除非您想要從預設值變更。

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

依問題編號確認通知，並隱藏通知，使其無法再次顯示。

這有助於隱藏已處理或不適用於您的通知。

確認會儲存在 CDK 專案層級。如果您在一個 CDK 專案中確認通知，它仍會在其他專案中顯示，直到確認為止。

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

```
$ cdk acknowledge <arguments> <options>
```

## 引數
<a name="ref-cli-cmd-ack-args"></a><a name="ref-cli-cmd-ack-args-notice-id"></a>

 **通知 ID**   
通知的 ID。  
 *類型：*字串  
 *必要*：否

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

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

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

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

### 確認並隱藏執行另一個 CDK CLI 命令時顯示的通知
<a name="ref-cli-cmd-ack-examples-1"></a>

```
$ cdk deploy
... # Normal output of the command

NOTICES

16603   Toggling off auto_delete_objects for Bucket empties the bucket

        Overview: If a stack is deployed with an S3 bucket with
                  auto_delete_objects=True, and then re-deployed with
                  auto_delete_objects=False, all the objects in the bucket
                  will be deleted.

        Affected versions: <1.126.0.

        More information at: https://github.com/aws/aws-cdk/issues/16603


17061   Error when building EKS cluster with monocdk import

        Overview: When using monocdk/aws-eks to build a stack containing
                  an EKS cluster, error is thrown about missing
                  lambda-layer-node-proxy-agent/layer/package.json.

        Affected versions: >=1.126.0 <=1.130.0.

        More information at: https://github.com/aws/aws-cdk/issues/17061

$ cdk acknowledge 16603
```

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

透過將名為 的 CDK 引導堆疊部署到 AWS 環境中`CDKToolkit`，為 CDK 部署準備 AWS 環境。

引導堆疊是 CloudFormation 堆疊，可在 AWS 環境中佈建 Amazon S3 儲存貯體和 Amazon ECR 儲存庫。 AWS CDK CLI 使用這些資源在部署期間存放合成的範本和相關資產。

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

```
$ cdk bootstrap <arguments> <options>
```

## 引數
<a name="ref-cli-cmd-bootstrap-args"></a><a name="ref-cli-cmd-bootstrap-args-env"></a>

 ** AWS 環境**   
以下列格式將引導堆疊部署至 的目標 AWS 環境：`aws://<account-id>/<region>`。  
範例：`aws://123456789012/us-east-1`  
此引數可在單一命令中提供多次，以將引導堆疊部署至多個環境。  
根據預設，CDK CLI 會引導 CDK 應用程式中參考的所有環境，或從預設來源判斷環境。這可能是使用 `--profile`選項、來自環境變數或預設 CLI AWS 來源指定的環境。

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

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

 `--bootstrap-bucket-name, --toolkit-bucket-name, -b <STRING>`   
CDK CLI 將使用的 Amazon S3 儲存貯體名稱。將會建立此儲存貯體，且目前不得存在。  
提供此選項可覆寫 Amazon S3 儲存貯體的預設名稱。  
使用此選項時，您可能需要自訂合成。若要進一步了解，請參閱[自訂 CDK 堆疊合成](configure-synth.md#bootstrapping-custom-synth)。  
 *預設值*：未定義<a name="ref-cli-cmd-bootstrap-options-bootstrap-customer-key"></a>

 `--bootstrap-customer-key <BOOLEAN>`   
為引導儲存貯體建立客戶主金鑰 (CMK) （將向您收取費用，但可以自訂許可，僅限現代引導）。  
此選項與 不相容`--bootstrap-kms-key-id`。  
 *預設值*：未定義<a name="ref-cli-cmd-bootstrap-options-bootstrap-kms-key-id"></a>

 `--bootstrap-kms-key-id <STRING>`   
用於`SSE-KMS`加密的 AWS KMS 主金鑰 ID。  
提供此選項可覆寫用於加密 Amazon S3 儲存貯體的預設 AWS KMS 金鑰。  
此選項與 不相容`--bootstrap-customer-key`。  
 *預設值*：未定義<a name="ref-cli-cmd-bootstrap-options-cloudformation-execution-policies"></a>

 `--cloudformation-execution-policies <ARRAY>`   
受管 IAM 政策 ARNs，應連接到 AWS CloudFormation 在堆疊部署期間擔任的部署角色。  
根據預設，堆疊會使用 `AdministratorAccess`政策以完整的管理員許可進行部署。  
您可以在單一命令中多次提供此選項。您也可以提供多個 ARNs 做為單一字串，並以逗號分隔個別 ARNs。以下是範例：  

```
$ cdk bootstrap --cloudformation-execution-policies "arn:aws:iam::aws:policy/AWSLambda_FullAccess,arn:aws:iam::aws:policy/AWSCodeDeployFullAccess"
```
為了避免部署失敗，請確定您指定的政策足以讓您對要引導的環境執行任何部署。  
此選項僅適用於現代引導。  
現代引導範本會有效地將 隱含的許可授予`--trust`清單中`--cloudformation-execution-policies`的任何 AWS 帳戶。根據預設，這會擴展讀取和寫入引導帳戶中任何資源的許可。請務必使用您熟悉的政策和信任帳戶來[設定引導堆疊](bootstrapping-customizing.md)。
 *預設值*：`[]`<a name="ref-cli-cmd-bootstrap-options-custom-permissions-boundary"></a>

 `--custom-permissions-boundary, -cpb <STRING>`   
指定要使用的許可界限名稱。  
此選項與 不相容`--example-permissions-boundary`。  
 *預設值*：未定義<a name="ref-cli-cmd-bootstrap-options-example-permissions-boundary"></a>

 `--example-permissions-boundary, -epb <BOOLEAN>`   
使用 AWS CDK 提供的範例許可界限。  
此選項與 不相容`--custom-permissions-boundary`。  
CDK 提供的許可界限政策應視為範例。如果您要測試功能，請編輯內容並參考範例政策。如果尚未存在，請將其轉換為實際部署的新政策。問題是避免偏離。很可能會維護許可界限，並具有專用慣例，包括命名。  
如需設定許可的詳細資訊，包括使用許可界限，請參閱 [安全與安全開發指南](https://github.com/aws/aws-cdk/wiki/Security-And-Safety-Dev-Guide)。  
 *預設值*：未定義<a name="ref-cli-cmd-bootstrap-options-execute"></a>

 `--execute <BOOLEAN>`   
設定是否要執行變更集。  
 *預設值*：`true`<a name="ref-cli-cmd-bootstrap-options-force"></a>

 `--force, -f <BOOLEAN>`   
一律引導，即使它會降級引導範本版本。  
 *預設值*：`false`<a name="ref-cli-cmd-bootstrap-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk bootstrap`命令參考資訊。<a name="ref-cli-cmd-bootstrap-options-previous-parameters"></a>

 `--previous-parameters <BOOLEAN>`   
對現有參數使用先前的值。  
使用一組參數部署引導範本後，您必須將此選項設定為 `false`，以變更未來部署的任何參數。當 時`false`，您必須重新提供先前提供的所有參數。  
 *預設值*：`true`<a name="ref-cli-cmd-bootstrap-options-public-access-block-configuration"></a>

 `--public-access-block-configuration <BOOLEAN>`   
封鎖由 CDK CLI 建立和使用的 Amazon S3 儲存貯體上的公有存取組態。  
 *預設值*：`true`<a name="ref-cli-cmd-bootstrap-options-qualifier"></a>

 `--qualifier <STRING>`   
每個引導堆疊的唯一九位數字串值。此值會新增至引導堆疊中資源的實體 ID。  
透過提供限定詞，您可以避免在相同環境中佈建多個引導堆疊時發生資源名稱衝突。  
當您變更限定詞時，您的 CDK 應用程式必須將變更的值傳遞至堆疊合成器。如需詳細資訊，請參閱[自訂 CDK 堆疊合成](configure-synth.md#bootstrapping-custom-synth)。  
 *預設值*：`hnb659fds`。此值沒有意義。<a name="ref-cli-cmd-bootstrap-options-show-template"></a>

 `--show-template <BOOLEAN>`   
將目前的引導範本列印為標準輸出 (`stdout`)，而不是引導。然後，您可以視需要複製和自訂範本。  
 *預設值*：`false`<a name="ref-cli-cmd-bootstrap-options-tags"></a>

 `--tags, -t <ARRAY>`   
要新增至引導堆疊的標籤，格式為 `KEY=VALUE`。  
 *預設值*：`[]`<a name="ref-cli-cmd-bootstrap-options-template"></a>

 `--template <STRING>`   
使用指定檔案中的 範本，而非內建的範本。<a name="ref-cli-cmd-bootstrap-options-termination-protection"></a>

 `--termination-protection <BOOLEAN>`   
引導堆疊上的 Toggle AWS CloudFormation 終止保護。  
當 時`true`，啟用終止保護。這可防止不小心刪除引導堆疊。  
若要進一步了解終止保護，請參閱《* AWS CloudFormation 使用者指南*》中的[保護堆疊不會被刪除](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-protect-stacks.html)。  
 *預設值*：未定義<a name="ref-cli-cmd-bootstrap-options-toolkit-stack-name"></a>

 `--toolkit-stack-name <STRING>`   
要建立的引導堆疊名稱。  
根據預設， 會將名為 `cdk bootstrap` 的堆疊部署`CDKToolkit`到指定的 AWS 環境中。使用此選項為您的引導堆疊提供不同的名稱。  
CDK CLI 使用此值來驗證您的引導堆疊版本。  
 *預設值*：`CDKToolkit`  
 *必要*：是<a name="ref-cli-cmd-bootstrap-options-trust"></a>

 `--trust <ARRAY>`   
應信任 AWS 的帳戶 IDs，才能在此環境中執行部署。  
一律信任執行引導的帳戶。  
此選項要求您也提供 `--cloudformation-execution-policies`。  
您可以在單一命令中多次提供此選項。  
此選項僅適用於現代引導。  
若要將信任的帳戶新增至現有的引導堆疊，您必須指定要信任的所有帳戶，包括您先前可能提供的帳戶。如果您只提供新帳戶來信任，先前信任的帳戶將被移除。  
以下是信任兩個帳戶的範例：  

```
$ cdk bootstrap aws://123456789012/us-west-2 --trust 234567890123 --trust 987654321098 --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess
 ⏳  Bootstrapping environment aws://123456789012/us-west-2...
Trusted accounts for deployment: 234567890123, 987654321098
Trusted accounts for lookup: (none)
Execution policies: arn:aws:iam::aws:policy/AdministratorAccess
CDKToolkit: creating CloudFormation changeset...
 ✅  Environment aws://123456789012/us-west-2 bootstrapped.
```
現代引導範本會有效地將 隱含的許可授予`--trust`清單中`--cloudformation-execution-policies`的任何 AWS 帳戶。根據預設，這會擴展讀取和寫入引導帳戶中任何資源的許可。請務必使用您熟悉的政策和信任帳戶來[設定引導堆疊](bootstrapping-customizing.md)。
 *預設值*：`[]`<a name="ref-cli-cmd-bootstrap-options-trust-for-lookup"></a>

 `--trust-for-lookup <ARRAY>`   
應信任 AWS 的帳戶 IDs可在此環境中查詢值。  
使用此選項可授予帳戶許可，以合成要部署到環境中的堆疊，而無需實際授予他們直接部署這些堆疊的許可。  
您可以在單一命令中多次提供此選項。  
此選項僅適用於現代引導。  
 *預設值*：`[]`

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

### 引導產品描述檔中指定的 AWS 環境
<a name="ref-cli-cmd-bootstrap-examples-1"></a>

```
$ cdk bootstrap --profile prod
```

### 將引導堆疊部署到環境 foo 和 bar
<a name="ref-cli-cmd-bootstrap-examples-2"></a>

```
$ cdk bootstrap --app='node bin/main.js' foo bar
```

### 匯出引導範本以進行自訂
<a name="ref-cli-cmd-bootstrap-examples-3"></a>

如果您有引導範本不符合的特定需求，您可以自訂它以符合您的需求。

您可以匯出引導範本、修改範本，以及使用 AWS CloudFormation 部署範本。以下是匯出現有範本的範例：

```
$ cdk bootstrap --show-template > bootstrap-template.yaml
```

您也可以指示 CDK CLI 使用自訂範本。以下是範例：

```
$ cdk bootstrap --template my-bootstrap-template.yaml
```

### 具有許可界限的引導。然後，移除該許可界限
<a name="ref-cli-cmd-bootstrap-examples-4"></a>

若要使用自訂許可界限引導，我們會執行下列動作：

```
$ cdk bootstrap --custom-permissions-boundary my-permissions-boundary
```

若要移除許可界限，我們會執行下列動作：

```
$ cdk bootstrap --no-previous-parameters
```

### 使用限定詞來區分為開發環境建立的資源
<a name="ref-cli-cmd-bootstrap-examples-5"></a>

```
$ cdk bootstrap --qualifier dev2024
```

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

管理 AWS CDK 應用程式的快取內容值。

 *內容*代表可能會影響堆疊合成和部署方式的組態和環境資訊。使用 `cdk context` 來執行以下操作：
+ 檢視您設定的內容值。
+ 設定和管理內容值。
+ 移除內容值。

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

```
$ cdk context <options>
```

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

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

 `--clear <BOOLEAN>`   
清除所有內容。<a name="ref-cli-cmd-context-options-force"></a>

 `--force, -f <BOOLEAN>`   
忽略遺失的金鑰錯誤。  
 *預設值*：`false`<a name="ref-cli-cmd-context-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk context`命令參考資訊。<a name="ref-cli-cmd-context-options-reset"></a>

 `--reset, -e <STRING>`   
要重設的內容索引鍵或其索引。

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

將一或多個 AWS CDK 堆疊部署到您的 AWS 環境中。

在部署期間，CDK CLI 會輸出進度指標，類似於可從 AWS CloudFormation 主控台觀察到的項目。

如果 AWS 環境未啟動，則只有不含資產和 51，200 個位元組以下合成範本的堆疊才會成功部署。

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

```
$ cdk deploy <arguments> <options>
```

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

 **CDK 堆疊 ID**   
要部署之應用程式中 CDK 堆疊的建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--all <BOOLEAN>`   
在 CDK 應用程式中部署所有堆疊。  
 *預設值*：`false`<a name="ref-cli-cmd-deploy-options-asset-parallelism"></a>

 `--asset-parallelism <BOOLEAN>`   
指定是否平行建置和發佈資產。<a name="ref-cli-cmd-deploy-options-asset-prebuild"></a>

 `--asset-prebuild <BOOLEAN>`   
指定是否要在部署第一個堆疊之前建置所有資產。此選項適用於失敗的 Docker 建置。  
 *預設值*：`true`<a name="ref-cli-cmd-deploy-options-build-exclude"></a>

 `--build-exclude, -E <ARRAY>`   
請勿以指定的 ID 重建資產。  
此選項可在單一命令中指定多次。  
 *預設值*：`[]`<a name="ref-cli-cmd-deploy-options-change-set-name"></a>

 `--change-set-name <STRING>`   
要建立的 AWS CloudFormation 變更集名稱。  
此選項與 不相容`--method='direct'`。<a name="ref-cli-cmd-deploy-options-concurrency"></a>

 `--concurrency <NUMBER>`   
平行部署多個堆疊，同時考慮堆疊間相依性。使用此選項可加速部署。您仍然必須將 in AWS CloudFormation 和其他 AWS 帳戶速率限制納入考量。  
提供數字以指定要同時執行的部署數目上限 （依存性允許）。  
 *預設值*：`1`<a name="ref-cli-cmd-deploy-options-exclusively"></a>

 `--exclusively, -e <BOOLEAN>`   
僅部署請求的堆疊，不包含相依性。<a name="ref-cli-cmd-deploy-options-force"></a>

 `--force, -f <BOOLEAN>`   
當您部署 以更新現有堆疊時，CDK CLI 會將已部署堆疊的範本和標籤與即將部署的堆疊進行比較。如果未偵測到任何變更，CDK CLI 會略過部署。  
若要覆寫此行為並一律部署堆疊，即使未偵測到任何變更，請使用此選項。  
 *預設值*：`false`<a name="ref-cli-cmd-deploy-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk deploy`命令參考資訊。<a name="ref-cli-cmd-deploy-options-hotswap"></a>

 `--hotswap <BOOLEAN>`   
熱插拔部署可加快開發速度。如果可能，此選項會嘗試執行更快速的熱插拔部署。例如，如果您在 CDK 應用程式中修改 Lambda 函數的程式碼，CDK CLI 將透過服務 APIs 直接更新資源，而不是執行 CloudFormation 部署。  
如果 CDK CLI 偵測到不支援熱插拔的變更，則會忽略這些變更，並顯示訊息。如果您偏好執行完整的 CloudFormation 部署做為回復，請`--hotswap-fallback`改用 。  
CDK CLI 會使用您目前的 AWS 登入資料來執行 API 呼叫。即使`@aws-cdk/core:newStyleStackSynthesis`功能旗標設定為 ，也不會從您的引導堆疊擔任角色`true`。這些角色沒有直接更新 AWS 資源的必要許可，無需使用 CloudFormation。因此，請確定您的登入資料與您執行熱插拔部署的堆疊 AWS 帳戶相同，而且它們具有更新資源所需的 IAM 許可。  
下列變更目前支援熱插拔：  
+ Lambda 函數的程式碼資產 （包括 Docker 影像和內嵌程式碼）、標籤變更和組態變更 （僅支援描述和環境變數）。
+ Lambda 版本和別名變更。
+  AWS Step Functions 狀態機器的定義變更。
+ Amazon ECS 服務的容器資產變更。
+ Amazon S3 儲存貯體部署的網站資產變更。
+  AWS CodeBuild 專案的來源和環境變更。
+ VTL 映射範本會變更 AWS AppSync 解析程式和函數。
+  AWS AppSync GraphQL APIs結構描述變更。
在熱插拔部署中，支援使用特定 CloudFormation 內部函數。其中包含：  
+  `Ref` 
+  `Fn::GetAtt` – 僅部分支援。如需支援的資源和屬性，請參閱[此實作](https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk/lib/api/evaluate-cloudformation-template.ts#L477-L492)。
+  `Fn::ImportValue` 
+  `Fn::Join` 
+  `Fn::Select` 
+  `Fn::Split` 
+  `Fn::Sub` 
此選項也與巢狀堆疊相容。  
+ 此選項刻意在 CloudFormation 堆疊中引入偏離，以加速部署。因此，請僅將其用於開發目的。請勿將此選項用於您的生產部署。
+ 此選項被視為實驗性，未來可能會有重大變更。
+ 某些參數的預設值可能與 hotswap 參數不同。例如，Amazon ECS 服務的運作狀態百分比下限目前將設定為 `0`。如果發生這種情況，請相應地檢閱來源。
 *預設值*：`false`<a name="ref-cli-cmd-deploy-options-hotswap-fallback"></a>

 `--hotswap-fallback <BOOLEAN>`   
此選項類似於 `--hotswap`。差別在於，如果偵測到變更需要它， `--hotswap-fallback`會回復為執行完整的 CloudFormation 部署。  
如需有關此選項的詳細資訊，請參閱 `--hotswap`。  
 *預設值*：`false`<a name="ref-cli-cmd-deploy-options-ignore-no-stacks"></a>

 `--ignore-no-stacks <BOOLEAN>`   
即使您的 CDK 應用程式不包含任何堆疊，也請執行部署。  
此選項在下列案例中很有用：您可能有一個具有多個環境的應用程式，例如 `dev`和 `prod`。開始開發時，您的 prod 應用程式可能沒有任何資源，或者資源可能會被註解掉。這將導致部署錯誤，並顯示訊息指出應用程式沒有堆疊。使用 `--ignore-no-stacks` 略過此錯誤。  
 *預設值*：`false`<a name="ref-cli-cmd-deploy-options-import-existing-resources"></a>

 `--import-existing-resources <BOOLEAN>`   
從 AWS 您的帳戶匯入現有、未受管的 AWS CloudFormation 資源。  
當您使用此選項時，來自合成 AWS CloudFormation 範本的資源與相同帳戶中現有的未受管資源具有相同的自訂名稱，將會匯入您的堆疊。  
您可以使用此選項，將現有資源匯入新的或現有的堆疊。  
您可以在相同的`cdk deploy`命令中匯入現有資源並部署新資源。  
若要進一步了解自訂名稱，請參閱 * AWS CloudFormation 使用者指南*中的[名稱類型](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-name.html)。  
若要進一步了解 `ImportExistingResources` CloudFormation 參數，請參閱 [AWS CloudFormation 使用 ChangeSets 的新參數簡化資源匯入](https://aws.amazon.com/about-aws/whats-new/2023/11/aws-cloudformation-import-parameter-changesets/)。  
如需使用此選項的詳細資訊，請參閱在 *aws-cdk-cli GitHub 儲存庫*中[匯入現有資源](https://github.com/aws/aws-cdk-cli/tree/main/packages/aws-cdk#import-existing-resources)。<a name="ref-cli-cmd-deploy-options-logs"></a>

 `--logs <BOOLEAN>`   
針對所選堆疊中所有資源的所有事件，在標準輸出 (`stdout`) 中顯示 Amazon CloudWatch 日誌。  
此選項僅與 相容`--watch`。  
 *預設值*：`true`<a name="ref-cli-cmd-deploy-options-method"></a>

 `--method, -m <STRING>`   
設定 方法來執行部署。  
+  `change-set` – 預設方法。CDK CLI 會使用將部署的變更建立 CloudFormation 變更集，然後執行部署。
+  `direct` – 請勿建立變更集。而是立即套用變更。這通常比建立變更集更快，但您會在 CLI 輸出中遺失部署進度詳細資訊。
+  `prepare-change-set` – 建立變更集，但不執行部署。如果您有會檢查變更集的外部工具，或如果您有變更集的核准程序，這很有用。
 *有效值*：`change-set`、`direct`、 `prepare-change-set`  
 *預設值*：`change-set`<a name="ref-cli-cmd-deploy-options-notification-arns"></a>

 `--notification-arns <ARRAY>`   
CloudFormation 將針對堆疊相關事件通知的 Amazon SNS 主題 ARNs。<a name="ref-cli-cmd-deploy-options-outputs-file"></a>

 `--outputs-file, -O <STRING>`   
要從部署寫入堆疊輸出的路徑。  
部署之後，堆疊輸出會以 JSON 格式寫入指定的輸出檔案。  
您可以在專案的 `cdk.json` 檔案或本機開發機器`~/.cdk.json`上的 設定此選項：  

```
{
   "app": "npx ts-node bin/myproject.ts",
   // ...
   "outputsFile": "outputs.json"
}
```
如果部署多個堆疊，輸出會寫入相同的輸出檔案，由代表堆疊名稱的索引鍵組織。<a name="ref-cli-cmd-deploy-options-parameters"></a>

 `--parameters <ARRAY>`   
在部署期間將其他參數傳遞至 CloudFormation。  
此選項接受以下格式的陣列：`STACK:KEY=VALUE`。  
+  `STACK` – 要與參數建立關聯的堆疊名稱。
+  `KEY` – 來自堆疊的 參數名稱。
+  `VALUE` – 部署時傳遞的值。
如果未提供堆疊名稱，或`*`提供 做為堆疊名稱，則參數會套用至正在部署的所有堆疊。如果堆疊未使用 參數，部署將會失敗。  
參數不會傳播至巢狀堆疊。若要將參數傳遞至巢狀堆疊，請使用 ` [NestedStack](https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.NestedStack.html) ` 建構。  
 *預設值*：`{}`<a name="ref-cli-cmd-deploy-options-previous-parameters"></a>

 `--previous-parameters <BOOLEAN>`   
針對現有參數使用先前的值。  
當此選項設定為 時`false`，您必須在每次部署上指定所有參數。  
 *預設值*：`true`<a name="ref-cli-cmd-deploy-options-progress"></a>

 `--progress <STRING>`   
設定 CDK CLI 顯示部署進度的方式。  
+  `bar` – 將堆疊部署事件顯示為進度列，其中資源的事件目前正在部署。
+  `events` – 提供完整的歷史記錄，包括所有 CloudFormation 事件。
您也可以在專案的 `cdk.json` 檔案或本機開發機器`~/.cdk.json`的 中設定此選項：  

```
{
   "progress": "events"
}
```
 *有效值*：`bar`、`events`  
 *預設值*：`bar`<a name="ref-cli-cmd-deploy-options-require-approval"></a>

 `--require-approval <STRING>`   
指定哪些安全敏感變更需要手動核准。  
+  `any-change` – 任何堆疊變更都需要手動核准。
+  `broadening` – 如果變更涉及許可或安全群組規則的擴大，則需要手動核准。
+  `never` – 不需要核准。
 *有效值*：`any-change`、`broadening`、 `never`  
 *預設值*：`broadening`<a name="ref-cli-cmd-deploy-options-rollback"></a>

 `--rollback` \$1 `--no-rollback`, `-R`   
在部署期間，如果資源無法建立或更新，部署會在 CDK CLI 傳回之前回復至最新的穩定狀態。在該時間點之前所做的所有變更都會復原。系統會刪除已建立的資源，並復原所做的更新。  
指定 `--no-rollback`以關閉此行為。如果資源無法建立或更新，CDK CLI 會保留在該時間點之前所做的變更並傳回。這將使您的部署處於失敗、暫停狀態。從這裡，您可以更新程式碼並再次嘗試部署。這在您快速迭代的開發環境中可能很有幫助。  
如果使用 執行的部署`--no-rollback`失敗，且您決定要轉返部署，您可以使用 `cdk rollback`命令。如需詳細資訊，請參閱 [cdk 轉返](ref-cli-cmd-rollback.md)。  
使用 時`--no-rollback`，導致資源取代的部署一律會失敗。您只能將此選項值用於更新或建立新資源的部署。
 *預設值*：`--rollback`<a name="ref-cli-cmd-deploy-options-toolkit-stack-name"></a>

 `--toolkit-stack-name <STRING>`   
現有 CDK Toolkit 堆疊的名稱。  
根據預設， 會將名為 `cdk bootstrap` 的堆疊部署`CDKToolkit`到指定的 AWS 環境中。使用此選項為您的引導堆疊提供不同的名稱。  
CDK CLI 使用此值來驗證您的引導堆疊版本。<a name="ref-cli-cmd-deploy-options-watch"></a>

 `--watch <BOOLEAN>`   
持續觀察 CDK 專案檔案，並在偵測到變更時自動部署指定的堆疊。  
此選項`--hotswap`預設表示 。  
此選項具有同等的 CDK CLI 命令。如需詳細資訊，請參閱 [cdk 手錶](ref-cli-cmd-watch.md)。

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

### 部署名為 MyStackName 的堆疊
<a name="ref-cli-cmd-deploy-examples-1"></a>

```
$ cdk deploy MyStackName --app='node bin/main.js'
```

### 在應用程式中部署多個堆疊
<a name="ref-cli-cmd-deploy-examples-2"></a>

使用 `cdk list` 列出您的堆疊：

```
$ cdk list
CdkHelloWorldStack
CdkStack2
CdkStack3
```

若要部署所有堆疊，請使用 `--all`選項：

```
$ cdk deploy --all
```

若要選擇要部署的堆疊，請提供堆疊名稱做為引數：

```
$ cdk deploy CdkHelloWorldStack CdkStack3
```

### 部署管道堆疊
<a name="ref-cli-cmd-deploy-examples-3"></a>

使用 `cdk list` 將堆疊名稱顯示為路徑，顯示它們在管道階層中的位置：

```
$ cdk list
PipelineStack
PiplelineStack/Prod
PipelineStack/Prod/MyService
```

使用 `--all`選項或萬用字元`*`來部署所有堆疊。如果您有上述的堆疊階層， `--all` `*`只會比對頂層的堆疊。若要符合階層中的所有堆疊，請使用 `**`。

您可以結合這些模式。以下內容會部署`Prod`階段中的所有堆疊：

```
$ cdk deploy PipelineStack/Prod/**
```

### 在部署時傳遞參數
<a name="ref-cli-cmd-deploy-examples-4"></a>

在 CDK 堆疊中定義參數。以下是為 Amazon SNS 主題建立名為 `TopicNameParam`之參數的範例：

```
new sns.Topic(this, 'TopicParameter', {
    topicName: new cdk.CfnParameter(this, 'TopicNameParam').value.toString()
});
```

若要提供 的參數值`parameterized`，請執行下列動作：

```
$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterized"
```

您可以使用 `--force`選項覆寫參數值。以下是從先前部署覆寫主題名稱的範例：

```
$ cdk deploy --parameters "MyStackName:TopicNameParam=parameterName" --force
```

### 部署後將堆疊輸出寫入檔案
<a name="ref-cli-cmd-deploy-examples-5"></a>

在 CDK 堆疊檔案中定義輸出。以下是為函數 ARN 建立輸出的範例：

```
const fn = new lambda.Function(this, "fn", {
  handler: "index.handler",
  code: lambda.Code.fromInline(`exports.handler = \${handler.toString()}`),
  runtime: lambda.Runtime.NODEJS_LATEST
});

new cdk.CfnOutput(this, 'FunctionArn', {
  value: fn.functionArn,
});
```

部署堆疊並將輸出寫入 `outputs.json`：

```
$ cdk deploy --outputs-file outputs.json
```

以下是部署`outputs.json`後 的範例：

```
{
  "MyStack": {
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK"
  }
}
```

在此範例中，金鑰`FunctionArn`對應至`CfnOutput`執行個體的邏輯 ID。

以下是`outputs.json`部署多個堆疊後部署 的範例：

```
{
  "MyStack": {
    "FunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:MyStack-fn5FF616E3-G632ITHSP5HK"
  },
  "AnotherStack": {
    "VPCId": "vpc-z0mg270fee16693f"
  }
}
```

### 修改部署方法
<a name="ref-cli-cmd-deploy-examples-6"></a>

若要更快速地部署，而不使用變更集，請使用 `--method='direct'`：

```
$ cdk deploy --method='direct'
```

若要建立變更集但不部署，請使用 `--method='prepare-change-set'`。根據預設，`cdk-deploy-change-set`將會建立名為 的變更集。如果具有此名稱的先前變更集存在，則會予以覆寫。如果未偵測到任何變更，仍會建立空白的變更集。

您也可以為變更集命名。以下是範例：

```
$ cdk deploy --method='prepare-change-set' --change-set-name='MyChangeSetName'
```

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

從 AWS 環境中刪除一或多個 AWS CDK 堆疊。

刪除堆疊時，除非已使用 `DeletionPolicy`的 設定，否則堆疊中的資源將會銷毀`Retain`。

在刪除堆疊期間，此命令會輸出類似`cdk deploy`行為的進度資訊。

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

```
$ cdk destroy <arguments> <options>
```

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

 **CDK 堆疊 ID**   
您應用程式要刪除之 CDK 堆疊的建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--all <BOOLEAN>`   
銷毀所有可用的堆疊。  
 *預設值*：`false`<a name="ref-cli-cmd-destroy-options-exclusively"></a>

 `--exclusively, -e <BOOLEAN>`   
僅銷毀請求的堆疊，不包含相依性。<a name="ref-cli-cmd-destroy-options-force"></a>

 `--force, -f <BOOLEAN>`   
在銷毀堆疊之前，請勿要求確認。<a name="ref-cli-cmd-destroy-options-help"></a>

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

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

### 刪除名為 MyStackName 的堆疊
<a name="ref-cli-cmd-destroy-examples-1"></a>

```
$ cdk destroy --app='node bin/main.js' <MyStackName>
```

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

執行差異以查看 AWS CDK 堆疊之間的基礎設施變更。

此命令通常用於比較本機 CDK 應用程式中堆疊目前狀態與已部署堆疊之間的差異。不過，您也可以將部署的堆疊與任何 local AWS CloudFormation 範本進行比較。

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

```
$ cdk diff <arguments> <options>
```

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

 **CDK 堆疊 ID**   
您應用程式中執行 diff 的 CDK 堆疊建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--change-set <BOOLEAN>`   
指定是否建立變更集以分析資源替換。  
當 時`true`，CDK CLI 會建立 an AWS CloudFormation 變更集，以顯示對堆疊所做的確切變更。此輸出包含要更新或取代的資源。CDK CLI 使用部署角色而非查詢角色來執行此動作。  
當 `false`時，透過比較 CloudFormation 範本來執行更快速但不準確的差異。偵測到任何需要資源取代的屬性變更都會顯示為資源取代，即使變更純粹是整容的，例如以硬式編碼的 ARN 取代資源參考。  
 *預設值*：`true`<a name="ref-cli-cmd-diff-options-context-lines"></a>

 `--context-lines <NUMBER>`   
要包含在任意 JSON 差異轉譯中的內容行數。  
 *預設值*：`3`<a name="ref-cli-cmd-diff-options-exclusively"></a>

 `--exclusively, -e <BOOLEAN>`   
只有 diff 請求的堆疊且不包含相依性。<a name="ref-cli-cmd-diff-options-fail"></a>

 `--fail <BOOLEAN>`   
`1` 如果偵測到差異，失敗並結束，程式碼為 。<a name="ref-cli-cmd-diff-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk diff`命令參考資訊。<a name="ref-cli-cmd-diff-options-processed"></a>

 `--processed <BOOLEAN>`   
指定是否將 範本與已處理的 CloudFormation 轉換進行比較。  
 *預設值*：`false`<a name="ref-cli-cmd-diff-options-quiet"></a>

 `--quiet, -q <BOOLEAN>`   
未偵測到變更`stdout`時，請勿列印 CDK 堆疊名稱和預設`cdk diff`訊息至 。  
 *預設值*：`false`<a name="ref-cli-cmd-diff-options-security-only"></a>

 `--security-only <BOOLEAN>`   
僅對更廣泛的安全性變更有所差異。  
 *預設值*：`false`<a name="ref-cli-cmd-diff-options-strict"></a>

 `--strict <BOOLEAN>`   
將`cdk diff`行為修改為更精確或更嚴格。若為 true，CDK CLI 不會篩選掉` AWS::CDK::Metadata`資源或無法讀取的非 ASCII 字元。  
 *預設值*：`false`<a name="ref-cli-cmd-diff-options-template"></a>

 `--template <STRING>`   
要與之比較 CDK 堆疊的 CloudFormation 範本路徑。

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

### 與名為 MyStackName 的目前部署堆疊不同
<a name="ref-cli-cmd-diff-examples-1"></a>

CDK CLI 在 diff 輸出中使用下列符號：
+  `[+]` – 識別部署變更時要新增的程式碼或資源。
+  `[-]` – 識別部署變更時將移除的程式碼或資源。
+  `[~]` – 識別如果您部署變更，將會修改的資源或屬性。

以下是顯示 Lambda 函數本機變更差異的範例：

```
$ cdk diff MyStackName
start: Building <asset-hash>:<account:Region>
success: Built <asset-hash>:<account:Region>
start: Publishing <asset-hash>:<account:Region>
success: Published <asset-hash>:<account:Region>
Hold on while we create a read-only change set to get a diff with accurate replacement information (use --no-change-set to use a less accurate but faster template-only diff)
Stack MyStackName
Resources
[~] AWS::Lambda::Function HelloWorldFunction <resource-logical-ID>
 └─ [~] Code
     └─ [~] .ZipFile:
         ├─ [-]
        exports.handler = async function(event) {
          return {
            statusCode: 200,
            body: JSON.stringify('Hello World!'),
          };
        };

         └─ [+]
        exports.handler = async function(event) {
          return {
            statusCode: 200,
            body: JSON.stringify('Hello from CDK!'),
          };
        };



✨  Number of stacks with differences: 1
```

將修改之資源的`[~]`指標並不表示完全取代資源：
+ 有些資源屬性，例如 `Code`，會更新資源。
+ 有些資源屬性，例如 `FunctionName`，可能會導致完整資源取代。

### 與特定 CloudFormation 範本的差異
<a name="ref-cli-cmd-diff-examples-2"></a>

```
$ cdk diff MyStackName --app='node bin/main.js' --template-path='./MyStackNameTemplate.yaml'
```

### 使用其部署的堆疊來區分本機堆疊。如果未偵測到任何變更，請勿列印至 stdout
<a name="ref-cli-cmd-diff-examples-3"></a>

```
$ cdk diff MyStackName --app='node bin/main.js' --quiet
```

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

在瀏覽器中開啟 AWS CDK 文件。

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

```
$ cdk docs <options>
```

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

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

 `--browser, -b <STRING>`   
用來開啟瀏覽器的 命令，使用 `%u`做為要開啟之檔案路徑的預留位置。  
 *預設值*：`open %u`<a name="ref-cli-cmd-docs-options-help"></a>

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

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

### 在 Google Chrome 中開啟 AWS CDK 文件
<a name="ref-cli-cmd-docs-examples-1"></a>

```
$ cdk docs --browser='chrome %u'
```

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

檢查並顯示有關本機 AWS CDK 專案和開發環境的實用資訊。

此資訊有助於對 CDK 問題進行故障診斷，並在提交錯誤報告時提供。

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

```
$ cdk doctor <options>
```

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

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

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

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

### `cdk doctor` 命令的簡單範例
<a name="ref-cli-cmd-doctor-examples-1"></a>

```
$ cdk doctor
ℹ️ CDK Version: 1.0.0 (build e64993a)
ℹ️ AWS environment variables:
  - AWS_EC2_METADATA_DISABLED = 1
  - AWS_SDK_LOAD_CONFIG = 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 管道自動偵測和回應基礎設施偏離。

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

檢視和修改 CDK CLI 的功能旗標組態。

功能旗標控制 CDK CLI 的行為，您可以使用它們來啟用或停用特定功能。使用 `cdk flags`命令來檢視您目前的特徵標記組態，並視需要修改它們。

**警告**  
`cdk flags` 命令正在開發 AWS CDK。此命令目前的功能被視為可立即生產且安全使用。不過，此命令的範圍及其功能可能會有所變更。因此，您必須提供使用此命令`unstable=flags`的選項來選擇加入。

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

```
$ cdk flags <arguments> <options>
```

## 引數
<a name="ref-cli-cmd-flags-args"></a><a name="ref-cli-cmd-flags-args-flagname"></a>

 **FLAGNAME**   
您要檢視或修改的特定功能旗標名稱。  
 *類型：*字串  
 *必要*：否

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

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

 `--set <BOOLEAN>`   
修改功能旗標組態。<a name="ref-cli-cmd-flags-options-all"></a>

 `--all <BOOLEAN>`   
修改或檢視所有功能旗標。<a name="ref-cli-cmd-flags-options-recommended"></a>

 `--recommended <BOOLEAN>`   
將旗標變更為建議狀態。<a name="ref-cli-cmd-flags-options-default"></a>

 `--default <BOOLEAN>`   
將旗標變更為預設狀態。<a name="ref-cli-cmd-flags-options-unconfigured"></a>

 `--unconfigured <BOOLEAN>`   
修改未設定的功能旗標。<a name="ref-cli-cmd-flags-options-value"></a>

 `--value <STRING>`   
要設定特徵標記組態的值。  
 *requiresArg*： true<a name="ref-cli-cmd-flags-options-safe"></a>

 `--safe <BOOLEAN>`   
啟用不影響應用程式的所有功能旗標。<a name="ref-cli-cmd-flags-options-interactive"></a>

 `--interactive, -i <BOOLEAN>`   
flags 命令的互動式選項。

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

### 檢視功能旗標組態
<a name="ref-cli-cmd-flags-examples-1"></a>

執行 `cdk flags`以檢視與建議狀態不同的功能旗標組態報告。未設定的旗標會標示為 `<unset>` ，表示該旗標目前沒有值。旗標會以下列順序顯示：
+ 旗標設定為不符合建議值的值
+ 您尚未設定的旗標

```
$ cdk flags --unstable=flags
Feature Flag                           Recommended                       User
* @aws-cdk/...                              true                         false
* @aws-cdk/...                              true                         false
* @aws-cdk/...                              true                         <unset>
```

您也可以執行 `cdk flags --all`來查看所有特徵標記的報告，順序如下：
+ 旗標設定為符合建議值的值
+ 旗標設定為不符合建議值的值
+ 您尚未設定的旗標

```
$ cdk flags --unstable=flags --all
Feature Flag                              Recommended                     User
@aws-cdk/...                                true                         true
* @aws-cdk/...                              true                         false
* @aws-cdk/...                              true                         false
* @aws-cdk/...                              true                         <unset>
```

### 修改特徵標記值
<a name="ref-cli-cmd-flags-examples-2"></a>

若要以互動方式修改您的功能旗標，請執行 `cdk flags --interactive`（或 `cdk flags -i`) 以檢視功能表選項清單。

若要將每個功能旗標變更為建議值，請執行 `cdk flags --set --recommended --all`。此命令會使用最新的 CDK 功能旗標組態，讓您的功能旗標組態保持up-to-date狀態。請注意，執行此命令可能會覆寫現有的設定值。

```
$ cdk flags --unstable=flags --set --recommended --all
Feature Flag                              Recommended Value            User Value
* @aws-cdk/...                              true                         false
* @aws-cdk/...                              true                         false
* @aws-cdk/...                              true                         <unset>
  Synthesizing...
    Resources
    [~] AWS::S3::Bucket MyBucket
    └─ [~] Properties
        └─ [~] Encryption
                ...
    Number of stacks with differences: 2
  Do you want to accept these changes? (y/n) y
  Resynthesizing...
```

如果您想要保留現有設定旗標的狀態，請執行 `cdk flags --set --recommended --unconfigured`。此選項只會將未設定的功能旗標變更為我們的建議值。

```
$ cdk flags --unstable=flags --set --recommended --unconfigured
Feature Flag                              Recommended Value            User Value
* @aws-cdk/...                              true                         <unset>
* @aws-cdk/...                              true                         <unset>
  Synthesizing...
    Resources
    [~] AWS::S3::Bucket MyBucket
    └─ [~] Properties
        └─ [~] Encryption
            ├─ [-] None
            └─ [+] ServerSideEncryptionConfiguration:
                    - ...
            ...
    Number of stacks with differences: 2
  Do you want to accept these changes? (y/n) y
  Resynthesizing...
```

如果您想要確保任何未設定的功能旗標不會干擾您的應用程式，請執行 `cdk flags --set --default --unconfigured`命令，將未設定的旗標變更為其預設值。例如，如果 `@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021` 未設定，則執行 後會顯示通知`cdk synth`。不過，如果您將旗標設定為其預設狀態 (false)，則會將其設定、關閉，且不會影響您的應用程式。

```
$ cdk flags --unstable=flags --set --default --unconfigured
Feature Flag                              Recommended Value            User Value
* @aws-cdk/...                              true                         <unset>
* @aws-cdk/...                              true                         <unset>
  Synthesizing...

  Do you want to accept these changes? (y/n) y
  Resynthesizing...
```

### 檢查特定功能旗標
<a name="ref-cli-cmd-flags-examples-3"></a>

#### 檢視有關旗標的詳細資訊
<a name="_view_more_information_about_a_flag"></a>

除了執行 `cdk flags`和 `cdk flags --all` 檢視您的特徵標記組態之外，您也可以使用 `cdk flags "FLAGNAME"` 來檢查特定特徵標記，並了解標記的功能。如果您想要了解特定旗標及其對應用程式的影響，這可能會有所幫助。

```
$ cdk flags --unstable=flags "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021"
    Description: Enable this feature flag to have cloudfront distributions use the security policy TLSv1.2_2021 by default.
    Recommended Value: true
    User Value: true
```

#### 依子字串篩選旗標
<a name="_filter_flags_by_substring"></a>

您也可以執行 `cdk flags substring`來檢視所有相符的功能旗標。如果只有一個符合該子字串的功能旗標，則會顯示特定詳細資訊。

```
$ cdk flags --unstable=flags ebs
@aws-cdk/aws-ec2:ebsDefaultGp3Volume
    Description: When enabled, the default volume type of the EBS volume will be GP3
    Recommended Value: true
    User Value: true
```

如果多個旗標符合子字串，則資料表中會顯示所有相符的旗標。如果您輸入多個子字串，則會傳回包含任何子字串的所有相符旗標。

```
$ cdk flags --unstable=flags s3 lambda
Feature Flag                              Recommended                     User
* @aws-cdk/s3...                            true                         false
* @aws-cdk/lambda...                        true                         false
* @aws-cdk/lambda...                        true                         <unset>
```

#### 修改特定旗標
<a name="_modify_a_specific_flag"></a>

如果您需要修改旗標的值，並希望確保將其設定為正確且支援的狀態，請執行 `cdk flags --set "FLAGNAME" --value="state"`。

```
$ cdk flags --unstable=flags --set "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021" --value="true"
  Synthesizing...
    Resources
    [~] AWS::CloudFront::Distribution MyDistribution
    └─ [~] Properties
        └─ [~] DefaultSecurityPolicy
            ├─ [-] TLSv1.0
            └─ [+] TLSv1.2_2021
                    - ...
    Number of stacks with differences: 2
  Do you want to accept these changes? (y/n) y
  Resynthesizing...
```

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

使用 AWS Cloud Development Kit (AWS CDK) 命令列界面 (CLI) `cdk gc`命令，對存放在引導堆疊資源中的未使用資產執行垃圾回收。使用此命令來檢視、管理和刪除您不再需要的資產。

對於 Amazon Simple Storage Service (Amazon S3) 資產，CDK CLI 會檢查相同環境中的現有 AWS CloudFormation 範本，以查看是否參考它們。如果未參考，它們將被視為未使用，並符合垃圾回收動作的資格。

**警告**  
`cdk gc` 命令正在開發 AWS CDK。此命令的目前功能被視為可立即生產且安全使用。不過，此命令的範圍及其功能可能會有所變更。因此，您必須提供使用此命令`unstable=gc`的選項來選擇加入。

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

```
$ cdk gc <arguments> <options>
```

## 引數
<a name="ref-cli-cmd-gc-args"></a><a name="ref-cli-cmd-gc-args-env"></a>

 ** AWS 環境**   
要在其中執行廢棄項目收集動作的目標 AWS 環境。  
提供環境時，請使用下列格式：`aws://<account-id>/<region>`。例如 `aws://<123456789012>/<us-east-1>`。  
此引數可在單一命令中提供多次，以在多個環境中執行垃圾回收動作。  
根據預設，CDK CLI 會在您在 CDK 應用程式中參考或作為引數提供的所有環境中執行廢棄項目收集動作。如果您不提供環境，CDK CLI 會從預設來源判斷環境。這些來源包括您使用 `--profile`選項、環境變數或預設 CLI AWS 來源指定的環境。

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

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

 `--action <STRING>`   
在垃圾回收期間對您的資產`cdk gc`執行的動作。  
+  `delete-tagged` – 刪除標記日期在您提供的緩衝天數範圍內的資產，但不標記新識別的未使用資產。
+  `full` – 執行所有垃圾回收動作。這包括在您提供的緩衝天數範圍內刪除資產，並標記新識別的未使用資產。
+  `print` – 在命令提示字元輸出未使用的資產數量，但不會在您的 AWS 環境中進行任何實際變更。
+  `tag` – 標記任何新識別的未使用資產，但不會在您提供的緩衝天數範圍內刪除任何資產。
 *接受的值*：`delete-tagged`、`full`、`print`、 `tag`  
 *預設值*：`full`<a name="ref-cli-cmd-gc-options-bootstrap-stack-name"></a>

 `--bootstrap-stack-name <STRING>`   
 AWS 環境中 CDK 引導堆疊的名稱。如果您自訂了引導堆疊名稱，請提供此選項。如果您使用的是預設`CDKToolkit`堆疊名稱，則不需要提供此選項。  
 *預設值*：`CDKToolkit`<a name="ref-cli-cmd-gc-options-confirm"></a>

 `--confirm <BOOLEAN>`   
指定 CDK CLI 是否會在刪除任何資產之前請求您的手動確認。  
指定 `false` 自動刪除資產，而不提示您手動確認。  
 *預設值*：`true`<a name="ref-cli-cmd-gc-options-created-buffer-days"></a>

 `--created-buffer-days <NUMBER>`   
資產在符合垃圾回收動作資格之前必須存在的天數。  
當您提供數字時，未超過指定天數的資產會從垃圾回收動作中篩選出。  
 *預設值*：`1`<a name="ref-cli-cmd-gc-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk gc`命令參考資訊。<a name="ref-cli-cmd-gc-options-rollback-buffer-days"></a>

 `--rollback-buffer-days <NUMBER>`   
資產必須標記為隔離的天數，才能符合垃圾回收動作的資格。  
當您提供數字時，CDK CLI 會使用目前日期標記未使用的資產，而不是刪除它們。CDK CLI 也會檢查是否有任何資產已在`cdk gc`命令的先前執行期間加上標籤。先前標記的資產若位於您提供的緩衝天數範圍內，將會遭到刪除。  
 *預設值*：`0`<a name="ref-cli-cmd-gc-options-type"></a>

 `--type <STRING>`   
引導堆疊中的引導資源類型，以在其中執行垃圾回收動作。  
+  `all` – 對所有引導的資源執行垃圾回收動作。
+  `ecr` – 在引導堆疊的 Amazon Elastic Container Registry (Amazon ECR) 儲存庫中的資產上執行垃圾回收動作。
+  `s3` – 對引導堆疊的 Amazon S3 儲存貯體中的資產執行垃圾回收動作。
 *接受的值*：`all`、`ecr`、 `s3`  
 *預設值*：`all`<a name="ref-cli-cmd-gc-options-unstable"></a>

 `--unstable <STRING>`   
允許使用仍在開發中的 CDK CLI 命令。  
必須使用此選項，才能使用仍在開發中且可能會有所變更的任何 CDK CLI 命令。  
此選項可在單一命令中多次提供。  
若要使用 `cdk gc`，請提供 `--unstable=gc`。

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

### 基本範例
<a name="ref-cli-cmd-gc-examples-basic"></a>

下列範例會提示您手動確認，以對引導堆疊的 Amazon S3 儲存貯體中的資產執行預設垃圾回收動作：

```
$ cdk gc --unstable=gc --type=s3

 ⏳  Garbage Collecting environment aws://<account-id>/<region>...
Found 99 assets to delete based off of the following criteria:
- assets have been isolated for > 0 days
- assets were created > 1 days ago

Delete this batch (yes/no/delete-all)?
```

下列範例會在引導堆疊的 Amazon S3 儲存貯體中的一系列資產上執行垃圾回收動作。此範圍包含先前已由 標記`cdk gc`超過 30 天的資產，且已建立 10 天或更早的資產。此命令會在刪除任何資產之前提示手動確認：

```
$ cdk gc --unstable=gc --type=s3 --rollback-buffer-days=30 --created-buffer-days=10
```

下列範例會執行在引導堆疊的 Amazon S3 儲存貯體中刪除先前已標記且已使用超過 30 天之資產的動作：

```
$ cdk gc --unstable=gc --type=s3 --action=delete-tagged --rollback-buffer-days=30
```

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

使用 [AWS CloudFormation 資源匯入](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import.html)將現有 AWS 資源匯入 CDK 堆疊。

使用此命令，您可以採用使用其他方法建立的現有資源，並使用 AWS CDK 開始管理這些資源。

考慮將資源移至 CDK 管理時，有時可以建立新的資源，例如使用 IAM 角色、Lambda 函數和事件規則。對於其他資源，例如 Amazon S3 儲存貯體和 DynamoDB 資料表等具狀態資源，建立新資源可能會對您的服務造成影響。您可以使用 `cdk import`匯入現有資源，將服務中斷降至最低。如需支援 AWS 的資源清單，請參閱《* AWS CloudFormation 使用者指南*》中的[資源類型支援](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/resource-import-supported-resources.html)。

 **將現有資源匯入 CDK 堆疊**   

1. 執行 `cdk diff`以確保您的 CDK 堆疊沒有待處理的變更。執行 時`cdk import`，匯入操作中允許的唯一變更是新增要匯入的資源。

1. 為您要匯入堆疊的資源新增建構。例如，為 Amazon S3 儲存貯體新增下列項目：

   ```
   new s3.Bucket(this, 'ImportedS3Bucket', {});
   ```

   請勿新增任何其他變更。您也必須確保 確切建立資源目前狀態的模型。對於儲存貯體範例，請務必包含 AWS KMS 金鑰、生命週期政策，以及與儲存貯體相關的任何其他項目。否則，後續的更新操作可能無法如預期般執行。

1. 執行 `cdk import`。如果 CDK 應用程式中有多個堆疊，請傳遞特定堆疊名稱做為引數。

1. CDK CLI 會提示您傳入要匯入之資源的實際名稱。在您提供此資訊後，匯入將會開始。

1. 當 `cdk import`報告成功時，資源將由 CDK 管理。建構組態中的任何後續變更都會反映在資源上。

這項功能目前具有下列限制：
+ 無法將資源匯入巢狀堆疊。
+ 對於匯入的資源，不會檢查您指定的屬性是否正確且完整。在匯入後嘗試啟動偏離偵測操作。
+ 依賴其他資源的資源都必須以正確的順序一起匯入或個別匯入。否則，CloudFormation 部署將使用未解析的參考失敗。
+ 此命令使用部署角色登入資料，這是讀取加密預備儲存貯體的必要項目。這需要引導範本的第 12 版，其中包含部署角色所需的 IAM 許可。

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

```
$ cdk import <arguments> <options>
```

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

 **CDK 堆疊 ID**   
要匯入資源之應用程式中 CDK 堆疊的建構 ID。此引數可在單一命令中提供多次。  
 *類型：*字串  
 *必要*：否

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

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

 `--change-set-name <STRING>`   
要建立的 CloudFormation 變更集名稱。<a name="ref-cli-cmd-import-options-execute"></a>

 `--execute <BOOLEAN>`   
指定是否執行變更集。  
 *預設值*：`true`<a name="ref-cli-cmd-import-options-force"></a>

 `--force, -f <BOOLEAN>`   
根據預設，如果範本差異包含更新或刪除，CDK CLI 會結束程序。指定 `true`覆寫此行為，並一律繼續匯入。<a name="ref-cli-cmd-import-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk import`命令參考資訊。<a name="ref-cli-cmd-import-options-record-resource-mapping"></a>

 `--record-resource-mapping, -r <STRING>`   
使用此選項可產生現有實體資源與要匯入之 CDK 資源的映射。映射將寫入您提供的檔案路徑。不會執行實際匯入操作。<a name="ref-cli-cmd-import-options-resource-mapping"></a>

 `--resource-mapping, -m <STRING>`   
使用此選項可指定定義資源映射的檔案。CDK CLI 將使用此檔案將實體資源映射至資源以進行匯入，而不是以互動方式詢問您。  
此選項可以從指令碼執行。<a name="ref-cli-cmd-import-options-rollback"></a>

 `--rollback <BOOLEAN>`   
在失敗時將堆疊復原至穩定狀態。  
若要指定 `false`，您可以使用 `--no-rollback`或 `-R`。  
指定 `false`以更快速地反覆運算。包含資源替換的部署一律會失敗。  
 *預設值*：`true`<a name="ref-cli-cmd-import-options-toolkit-stack-name"></a>

 `--toolkit-stack-name <STRING>`   
要建立的 CDK Toolkit 堆疊名稱。  
根據預設， 會將名為 `cdk bootstrap` 的堆疊部署`CDKToolkit`到指定的 AWS 環境中。使用此選項為您的引導堆疊提供不同的名稱。  
CDK CLI 使用此值來驗證您的引導堆疊版本。

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

從範本建立新的 AWS CDK 專案。

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

```
$ cdk init <arguments> <options>
```

## 引數
<a name="ref-cli-cmd-init-args"></a><a name="ref-cli-cmd-init-args-template-type"></a>

 **範本類型**   
初始化新 CDK 專案的 CDK 範本類型。  
+  `app` – CDK 應用程式的範本。
+  `lib` – AWS 建構程式庫的範本。
+  `sample-app` – 包含一些建構的範例 CDK 應用程式。
 *有效值*：`app`、`lib`、 `sample-app`

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

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

 `--generate-only <BOOLEAN>`   
指定此選項可在不啟動其他操作的情況下產生專案檔案，例如設定 git 儲存庫、安裝相依性或編譯專案。  
 *預設值*：`false`<a name="ref-cli-cmd-init-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk init`命令參考資訊。<a name="ref-cli-cmd-init-options-language"></a>

 `--language, -l <STRING>`   
用於新專案的語言。此選項可在專案的`cdk.json`組態檔案中設定，或在本機開發機器`~/.cdk.json`上的 設定。  
 *有效值*：`csharp`、`fsharp`、`go`、`java`、`javascript`、`python`、 `typescript`<a name="ref-cli-cmd-init-options-list"></a>

 `--list <BOOLEAN>`   
列出可用的範本類型和語言。

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

### 列出可用的範本類型和語言
<a name="ref-cli-cmd-init-examples-1"></a>

```
$ cdk init --list
Available templates:
* app: Template for a CDK Application
   └─ cdk init app --language=[csharp|fsharp|go|java|javascript|python|typescript]
* lib: Template for a CDK Construct Library
   └─ cdk init lib --language=typescript
* sample-app: Example CDK Application with some constructs
   └─ cdk init sample-app --language=[csharp|fsharp|go|java|javascript|python|typescript]
```

### 從程式庫範本在 TypeScript 中建立新的 CDK 應用程式
<a name="ref-cli-cmd-init-examples-2"></a>

```
$ cdk init lib --language=typescript
```

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

從 AWS CDK 應用程式列出所有 CDK 堆疊及其相依性。

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

```
$ cdk list <arguments> <options>
```

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

 **CDK 堆疊 ID**   
您應用程式執行此命令之 CDK 堆疊的建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk list`命令參考資訊。<a name="ref-cli-cmd-list-options-long"></a>

 `--long, -l <BOOLEAN>`   
顯示每個堆疊 AWS 的環境資訊。  
 *預設值*：`false`<a name="ref-cli-cmd-list-options-show-dependencies"></a>

 `--show-dependencies, -d <BOOLEAN>`   
顯示每個堆疊的堆疊相依性資訊。  
 *預設值*：`false`

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

### 列出 CDK 應用程式「節點 bin/main.js」中的所有堆疊
<a name="ref-cli-cmd-list-examples-1"></a>

```
$ cdk list --app='node bin/main.js'
Foo
Bar
Baz
```

### 列出所有堆疊，包括每個堆疊 AWS 的環境詳細資訊
<a name="ref-cli-cmd-list-examples-"></a>

```
$ cdk list --app='node bin/main.js' --long
-
    name: Foo
    environment:
        name: 000000000000/bermuda-triangle-1
        account: '000000000000'
        region: bermuda-triangle-1
-
    name: Bar
    environment:
        name: 111111111111/bermuda-triangle-2
        account: '111111111111'
        region: bermuda-triangle-2
-
    name: Baz
    environment:
        name: 333333333333/bermuda-triangle-3
        account: '333333333333'
        region: bermuda-triangle-3
```

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

顯示與 CDK 堆疊相關聯的中繼資料。

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

```
$ cdk metadata <arguments> <options>
```

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

 **CDK 堆疊 ID**   
要顯示中繼資料之應用程式中 CDK 堆疊的建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

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

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

將部署 AWS 的資源、 AWS CloudFormation 堆疊和 CloudFormation 範本遷移至新的 AWS CDK 專案。

此命令會建立新的 CDK 應用程式，其中包含以您使用 提供的值命名的單一堆疊`--stack-name`。您可以使用 `--from-scan`、 `--from-stack`或 來設定遷移來源`--from-path`。

如需使用 的詳細資訊`cdk migrate`，請參閱[將現有資源和 AWS CloudFormation 範本遷移至 AWS CDK](migrate.md)。

**注意**  
`cdk migrate` 命令是實驗性的，未來可能會有重大變更。

## 用量
<a name="ref-cli-cdk-migrate-usage"></a>

```
$ cdk migrate <options>
```

## 選項
<a name="ref-cli-cdk-migrate-options"></a>

如需適用於所有 CDK CLI 命令的全域選項清單，請參閱[全域選項](ref-cli-cmd.md#ref-cli-cmd-options)。

### 必要選項
<a name="ref-cli-cdk-migrate-options-required"></a><a name="ref-cli-cdk-migrate-options-stack-name"></a>

 `--stack-name <STRING>`   
遷移後將在 CDK 應用程式中建立的 AWS CloudFormation 堆疊名稱。  
 *必要*：是

### 條件式選項
<a name="ref-cli-cdk-migrate-options-conditional"></a><a name="ref-cli-cdk-migrate-options-from-path"></a>

 `--from-path <PATH>`   
要遷移之 AWS CloudFormation 範本的路徑。提供此選項以指定本機範本。  
 *必要*：有條件限制。如果從 local AWS CloudFormation 範本遷移，則為必要。<a name="ref-cli-cdk-migrate-options-from-scan"></a>

 `--from-scan <STRING>`   
從 AWS 環境遷移已部署的資源時，請使用此選項來指定是否應啟動新的掃描，或 AWS CDK CLI 是否應使用上次成功的掃描。  
 *必要*：有條件限制。從部署 AWS 的資源遷移時需要。  
 *接受的值*：`most-recent`、 `new`<a name="ref-cli-cdk-migrate-options-from-stack"></a>

 `--from-stack <BOOLEAN>`   
提供此選項從部署的 AWS CloudFormation 堆疊遷移。使用 `--stack-name`指定 deployed AWS CloudFormation 堆疊的名稱。  
 *必要*：有條件限制。如果從部署的 AWS CloudFormation 堆疊遷移，則為必要。

### 選用選項
<a name="ref-cli-cdk-migrate-options-optional"></a><a name="ref-cli-cdk-migrate-options-account"></a>

 `--account <STRING>`   
要從中擷取 AWS CloudFormation 堆疊範本的帳戶。  
 *必要*：否  
 *預設*： AWS CDK CLI 會從預設來源取得帳戶資訊。<a name="ref-cli-cdk-migrate-options-compress"></a>

 `--compress <BOOLEAN>`   
提供此選項將產生的 CDK 專案壓縮為 `ZIP` 檔案。  
 *必要*：否<a name="ref-cli-cdk-migrate-options-filter"></a>

 `--filter <ARRAY>`   
從 AWS 帳戶和 AWS 區域遷移部署的資源時使用 。此選項會指定篩選條件，以決定要遷移哪些部署的資源。  
此選項接受索引鍵/值對的陣列，其中索引**鍵**代表篩選條件類型，而**值**代表要篩選的值。  
以下是可接受的金鑰：  
+  `resource-identifier` – 資源的識別符。值可以是資源邏輯或實體 ID。例如 `resource-identifier="ClusterName"`。
+  `resource-type-prefix` – AWS CloudFormation 資源類型字首。例如，指定 `resource-type-prefix="AWS::DynamoDB::"`來篩選所有 Amazon DynamoDB 資源。
+  `tag-key` – 資源標籤的索引鍵。例如 `tag-key="myTagKey"`。
+  `tag-value` – 資源標籤的值。例如 `tag-value="myTagValue"`。
為`AND`條件式邏輯提供多個鍵值對。下列範例會篩選任何以 標記為標籤`myTagKey`索引鍵的 DynamoDB 資源：`--filter resource-type-prefix="AWS::DynamoDB::", tag-key="myTagKey"`。  
在`OR`條件式邏輯的單一命令中多次提供 `--filter`選項。下列範例會篩選屬於 DynamoDB 資源或標記為標籤`myTagKey`索引鍵的任何資源：`--filter resource-type-prefix="AWS::DynamoDB::" --filter tag-key="myTagKey"`。  
 *必要*：否<a name="ref-cli-cdk-migrate-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk migrate`命令參考資訊。<a name="ref-cli-cdk-migrate-options-language"></a>

 `--language <STRING>`   
用於遷移期間建立之 CDK 專案的程式設計語言。  
 *必要*：否  
 *有效值*：`typescript`、`python`、`java`、`csharp`、`go`。  
 *預設*：`typescript`<a name="ref-cli-cdk-migrate-options-output-path"></a>

 `--output-path <PATH>`   
已遷移 CDK 專案的輸出路徑。  
 *必要*：否  
 *預設*： AWS CDK CLI 預設將使用您目前的工作目錄。<a name="ref-cli-cdk-migrate-options-region"></a>

 `--region <STRING>`   
要從中擷取 AWS CloudFormation 堆疊範本 AWS 的區域。  
 *必要*：否  
 *預設*： AWS CDK CLI 會從預設來源取得 AWS 區域資訊。

## 範例
<a name="ref-cli-cdk-migrate-examples"></a>

### 從 CloudFormation 堆疊遷移的簡單範例
<a name="ref-cli-cdk-migrate-examples-1"></a>

使用 從特定 AWS 環境中部署的 CloudFormation 堆疊遷移`--from-stack`。提供 `--stack-name`以命名新的 CDK 堆疊。以下是遷移`myCloudFormationStack`至使用 TypeScript 的新 CDK 應用程式的範例：

```
$ cdk migrate --language typescript --from-stack --stack-name 'myCloudFormationStack'
```

### 從本機 CloudFormation 範本遷移的簡單範例
<a name="ref-cli-cdk-migrate-examples-2"></a>

使用 從本機 JSON 或 YAML CloudFormation 範本遷移`--from-path`。提供 `--stack-name`以命名新的 CDK 堆疊。以下是在 TypeScript 中建立新的 CDK 應用程式的範例，其中包含來自本機`template.json`檔案的`myCloudFormationStack`堆疊：

```
$ cdk migrate --stack-name "myCloudFormationStack" --language typescript --from-path "./template.json"
```

### 從部署 AWS 的資源遷移的簡單範例
<a name="ref-cli-cdk-migrate-examples-3"></a>

使用 從與 CloudFormation 堆疊沒有關聯的特定 AWS 環境遷移已部署 AWS 的資源`--from-scan`。CDK CLI 會利用 IaC generator服務來掃描資源並產生範本。然後，CDK CLI 會參考範本來建立新的 CDK 應用程式。以下是使用包含遷移 AWS 資源的新`myCloudFormationStack`堆疊在 TypeScript 中建立新的 CDK 應用程式的範例：

```
$ cdk migrate --language typescript --from-scan --stack-name "myCloudFormationStack"
```

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

顯示 CDK 應用程式的通知。

通知可以包含有關安全漏洞、迴歸和不受支援版本使用的重要訊息。

此命令會顯示相關通知，無論它們是否已獲得確認。根據預設，相關通知也可能出現在每個命令之後。

您可以透過下列方式隱藏通知：
+ 透過命令選項。以下是範例：

  ```
  $ cdk deploy --no-notices
  ```
+ 透過專案`cdk.json`檔案中的內容無限期隱藏所有通知：

  ```
  {
    "notices": false,
    "context": {
      // ...
    }
  }
  ```
+ 使用 `cdk acknowledge`命令確認每個通知。

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

```
$ cdk notices <options>
```

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

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

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

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

### 執行 cdk 部署命令後顯示的預設通知範例
<a name="ref-cli-cmd-notices-examples-1"></a>

```
$ cdk deploy

... # Normal output of the command

NOTICES

16603   Toggling off auto_delete_objects for Bucket empties the bucket

        Overview: If a stack is deployed with an S3 bucket with
                  auto_delete_objects=True, and then re-deployed with
                  auto_delete_objects=False, all the objects in the bucket
                  will be deleted.

        Affected versions: <1.126.0.

        More information at: https://github.com/aws/aws-cdk/issues/16603


17061   Error when building EKS cluster with monocdk import

        Overview: When using monocdk/aws-eks to build a stack containing
                  an EKS cluster, error is thrown about missing
                  lambda-layer-node-proxy-agent/layer/package.json.

        Affected versions: >=1.126.0 <=1.130.0.

        More information at: https://github.com/aws/aws-cdk/issues/17061


If you don’t want to see an notice anymore, use "cdk acknowledge ID". For example, "cdk acknowledge 16603"
```

### 執行 cdk 通知命令的簡單範例
<a name="ref-cli-cmd-notices-examples-2"></a>

```
$ cdk notices

NOTICES

16603   Toggling off auto_delete_objects for Bucket empties the bucket

        Overview: if a stack is deployed with an S3 bucket with
                  auto_delete_objects=True, and then re-deployed with
                  auto_delete_objects=False, all the objects in the bucket
                  will be deleted.

        Affected versions: framework: <=2.15.0 >=2.10.0

        More information at: https://github.com/aws/aws-cdk/issues/16603


If you don’t want to see a notice anymore, use "cdk acknowledge <id>". For example, "cdk acknowledge 16603"
```

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

**重要**  
`cdk refactor` 命令處於預覽版本中，可能會有所變更。  
使用此命令時，您必須提供 `--unstable=refactor`選項。

在 AWS 雲端開發套件 (AWS CDK) 應用程式中重構程式碼時保留已部署的資源。

當您重新命名建構模組或將其移動到 CDK 程式碼中的堆疊時，CloudFormation 通常會將這些資源視為新資源，導致可能導致服務中斷或資料遺失的替換。`cdk refactor` 命令會以智慧方式偵測這些變更，並使用 CloudFormation 的重構 API 來保留您的資源，同時更新其邏輯 IDs。

`cdk refactor` 可讓您：
+ 重新命名建構以更清楚說明程式碼基底，而不會造成資源替換。
+ 在堆疊之間移動資源，以改善組織和分離問題。
+ 重新組織建構階層 （例如在新的 L3 建構下將 AWS 資源分組），同時保留基礎雲端資源。
+ 安全地升級或切換建構程式庫，包括第三方相依性，而不會在版本之間變更邏輯 IDs 時觸發資源替換。

此命令會分析您的變更、顯示將變更位置 （堆疊和邏輯 ID) 的資源清單，並處理更新 CloudFormation 資源的複雜程序，同時維護其身分和狀態。

執行時， 命令會比較您目前的程式碼與部署狀態，以自動運算映射。它會驗證您的 CDK 應用程式是否包含與部署狀態完全相同的一組資源，僅在其在建構樹狀結構中的位置中有所不同。如果命令偵測到任何資源新增、刪除或修改，重構操作將被拒絕，並顯示錯誤訊息。

映射運算之後，命令會顯示提議的變更，並在使用者確認後套用重構。如果偵測到模棱兩可的情況 （其中可能有多個有效映射），您可以提供具有明確映射的覆寫檔案來解決這些案例。

如需簡介，請參閱[在重構 CDK 程式碼時保留已部署的資源](refactor.md)。

## 使用方式
<a name="ref-cli-cmd-refactor-usage"></a>

```
$ cdk refactor <arguments> <options>
```

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

 **CDK 堆疊 ID**   
要重構之應用程式中 CDK 堆疊的建構 ID。  
您可以指定多個堆疊 IDs，將重構操作集中在這些堆疊上。如果資源正在堆疊之間移動，且未明確包含其中一個堆疊，Refactor 命令會自動在 操作中包含額外的堆疊。  
如果您未提供任何堆疊 IDs，應用程式中的所有堆疊都會考慮進行重構。  
 *類型：*字串  
 *必要*：否

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

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

 `--dry-run`   
將映射列印到主控台而不套用。  
此選項有助於在實際執行重構之前驗證變更，特別是在使用複雜應用程式時。它確切顯示將要進行哪些變更，而不會修改任何資源。<a name="ref-cli-cmd-refactor-options-force"></a>

 `--force`   
繼續重構，而不提示使用者進行確認。  
當您對變更有信心時，這在互動式環境中非常有用。在非互動式環境中，例如 CI/CD 管道，CDK CLI 會自動繼續而不提示，因此不需要此選項。<a name="ref-cli-cmd-refactor-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk refactor`命令參考資訊。<a name="ref-cli-cmd-refactor-options-override-file"></a>

 `--override-file <FILE>`   
當 CDK CLI 無法判斷資源的重構解析時，提供覆寫。此檔案包含 JSON 格式的資源映射。以下是範例：  

```
{
    "environments": [
        {
            "account": "123456789012",
            "region": "us-east-2",
            "resources": {
                "StackA.OldName": "StackB.NewName",
                "StackC.Foo": "StackC.Bar"
            }
        }
    ]
}
```<a name="ref-cli-cmd-refactor-options-revert"></a>

 `--revert <FILE>`   
還原先前的重構。您必須提供具有資源映射的覆寫檔案。  
這不會完全復原先前的重構操作。若要完全還原重構，您需要將應用程式復原至先前的狀態，然後再次執行重構程序。

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

使用 AWS 雲端開發套件 (AWS CDK) 命令列界面 (CLI) `cdk rollback`命令，將失敗或暫停的堆疊從 an AWS CloudFormation 部署復原至其最後的穩定狀態。

**注意**  
若要使用此命令，您必須將引導範本的 v23 部署到您的環境。如需詳細資訊，請參閱[引導範本版本歷史記錄](bootstrapping-env.md#bootstrap-template-history)。

當您使用 部署時`cdk deploy`，CDK CLI 預設會復原失敗的部署。如果您`--no-rollback`使用 指定 `cdk deploy`，則可以使用 `cdk rollback`命令手動轉返失敗的部署。這將啟動回復至堆疊的最後一個穩定狀態。

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

```
$ cdk rollback <arguments> <options>
```

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

 **CDK 堆疊 ID**   
從您的應用程式轉返的 CDK 堆疊建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--all <BOOLEAN>`   
復原 CDK 應用程式中的所有堆疊。  
 *預設值*：`false`<a name="ref-cli-cmd-rollback-options-force"></a>

 `--force, -f <BOOLEAN>`   
當您使用 時`cdk rollback`，某些資源可能無法轉返。提供此選項可強制復原所有資源。這與為堆疊中的每個資源提供 `--orphan`選項的行為相同。  
 *預設值*：`false`<a name="ref-cli-cmd-rollback-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk rollback`命令參考資訊。<a name="ref-cli-cmd-rollback-options-orphan"></a>

 `--orphan <LogicalId>`   
當您使用 時`cdk rollback`，某些資源可能無法轉返。發生這種情況時，您可以使用此選項並提供無法轉返的資源邏輯 ID，嘗試強制轉返資源。  
此選項可在單一命令中提供多次。以下是範例：  

```
$ cdk rollback MyStack --orphan MyLambdaFunction --orphan MyLambdaFunction2
```
若要強制復原所有資源，請改用 `--force`選項。<a name="ref-cli-cmd-rollback-options-toolkit-stack-name"></a>

 `--toolkit-stack-name <STRING>`   
環境開機所用的現有 CDK Toolkit 堆疊名稱。  
根據預設， 會將名為 `cdk bootstrap` 的堆疊部署`CDKToolkit`到指定的 AWS 環境中。使用此選項為您的引導堆疊提供不同的名稱。  
CDK CLI 使用此值來驗證您的引導堆疊版本。<a name="ref-cli-cmd-rollback-options-validate-bootstrap-version"></a>

 `--validate-bootstrap-version <BOOLEAN>`   
指定是否要驗證引導堆疊版本。提供 `--validate-bootstrap-version=false`或 `--no-validate-bootsrap-version`以關閉此行為。  
 *預設值*：`true`

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

合成 CDK 應用程式以產生雲端組件，包括每個堆疊的 an AWS CloudFormation 範本。

雲端組件是包含將應用程式部署至 AWS 環境所需的一切檔案。例如，它包含應用程式中每個堆疊的 CloudFormation 範本，以及您在應用程式中參考的檔案資產或 Docker 映像的副本。

如果您的應用程式包含單一堆疊，或提供單一堆疊做為引數，CloudFormation 範本也會以 YAML 格式顯示在標準輸出 (`stdout`) 中。

如果您的應用程式包含多個堆疊， `cdk synth`會將雲端組件合成為 `cdk.out`。

## 使用方式
<a name="ref-cli-cmd-synth-usage"></a>

```
cdk synthesize <arguments> <options>
```

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

 **CDK 堆疊 ID**   
要合成之應用程式中 CDK 堆疊的建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--exclusively, -e <BOOLEAN>`   
僅合成請求的堆疊，不包含相依性。<a name="ref-cli-cmd-synth-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk synthesize`命令參考資訊。<a name="ref-cli-cmd-synth-options-quiet"></a>

 `--quiet, -q <BOOLEAN>`   
請勿將 CloudFormation 範本輸出至 `stdout`。  
此選項可在 CDK 專案的 `cdk.json`檔案中設定。以下是範例：  

```
{
   "quiet": true
}
```
 *預設值*：`false`<a name="ref-cli-cmd-synth-options-validation"></a>

 `--validation <BOOLEAN>`   
執行其他檢查，在合成後驗證產生的 CloudFormation 範本。  
您也可以透過 `validateOnSynth` 屬性或`CDK_VALIDATION`環境變數來設定此選項。  
 *預設值*：`true`

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

### 使用邏輯 ID MyStackName 合成 CDK 堆疊的雲端組件，並將 CloudFormation 範本輸出至 stdout
<a name="ref-cli-cmd-synth-examples-1"></a>

```
$ cdk synth MyStackName
```

### 合成 CDK 應用程式中所有堆疊的雲端組件，並將其儲存至 cdk.out
<a name="ref-cli-cmd-synth-examples-2"></a>

```
$ cdk synth
```

### 合成 MyStackName 的雲端組件，但不包含相依性
<a name="ref-cli-cmd-synth-examples-3"></a>

```
$ cdk synth MyStackName --exclusively
```

### 合成 MyStackName 的雲端組件，但不要將 CloudFormation 範本輸出至 stdout
<a name="ref-cli-cmd-synth-examples-4"></a>

```
$ cdk synth MyStackName --quiet
```

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

持續監看本機 AWS CDK 專案的變更，以執行部署和熱交換。

此命令類似於 `cdk deploy`，但它可以透過單一命令執行連續部署和熱交換。

此命令是 的捷徑`cdk deploy --watch`。

若要結束`cdk watch`工作階段，請按 以中斷程序`Ctrl+C`。

觀察到的檔案取決於檔案中`"watch"`的設定`cdk.json`。它有兩個子索引鍵 `"include"`和 `"exclude"`，接受單一字串或字串陣列。每個項目都會解譯為相對於`cdk.json`檔案位置的路徑。`**` 接受 `*`和 兩者。

如果您使用 `cdk init`命令建立專案，則會`cdk watch`在專案的 `cdk.json` 檔案中為 設定下列預設行為：
+  `"include"` 設定為 `"**/*"`，其中包含專案根目錄中的所有檔案和目錄。
+  `"exclude"` 是選用的，但預設已忽略的檔案和資料夾除外。這包括以 `.`、CDK 輸出目錄和 `node_modules` 目錄開頭的檔案和目錄。

要設定的最小設定`watch`是 `"watch": {}`。

如果您的 CDK 程式碼或應用程式程式碼在部署之前需要建置步驟， `cdk watch` 會使用 `cdk.json` 檔案中的 `"build"`金鑰。

**重要**  
此命令適用於 CDK 應用程式開發階段的快速部署，不建議用於生產部署。

的相同限制`cdk deploy --hotswap`適用於 `cdk watch`。如需詳細資訊，請參閱` cdk deploy --hotswap `。

## Usage
<a name="ref-cli-cmd-watch-usage"></a>

```
$ cdk watch <arguments> <options>
```

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

 **CDK 堆疊 ID**   
要監看之應用程式中 CDK 堆疊的建構 ID。  
 *類型：*字串  
 *必要*：否

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

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

 `--build-exclude, -E <ARRAY>`   
請勿以指定的 ID 重建資產。  
此選項可在單一命令中指定多次。  
 *預設值*：`[]`<a name="ref-cli-cmd-watch-options-change-set-name"></a>

 `--change-set-name <STRING>`   
要建立的 CloudFormation 變更集名稱。<a name="ref-cli-cmd-watch-options-concurrency"></a>

 `--concurrency <NUMBER>`   
平行部署和熱插拔多個堆疊，同時考慮堆疊間相依性。使用此選項可加速部署。您仍然必須將 CloudFormation 和其他 AWS 帳戶速率限制納入考量。  
提供數字以指定要同時執行的部署數目上限 （依存性允許）。  
 *預設值*：`1`<a name="ref-cli-cmd-watch-options-exclusively"></a>

 `--exclusively, -e <BOOLEAN>`   
僅部署請求的堆疊，不包含相依性。<a name="ref-cli-cmd-watch-options-force"></a>

 `--force, -f <BOOLEAN>`   
即使範本相同，也一律部署堆疊。  
 *預設值*：`false`<a name="ref-cli-cmd-watch-options-help"></a>

 `--help, -h <BOOLEAN>`   
顯示命令的`cdk watch`命令參考資訊。<a name="ref-cli-cmd-watch-options-hotswap"></a>

 `--hotswap <BOOLEAN>`   
根據預設， 會盡可能`cdk watch`使用熱插拔部署來更新您的資源。CDK CLI 將嘗試執行熱插拔部署，如果失敗，將不會回復到完整的 CloudFormation 部署。偵測到無法透過熱插拔更新的任何變更都會遭到忽略。  
 *預設值*：`true`<a name="ref-cli-cmd-watch-options-hotswap-fallback"></a>

 `--hotswap-fallback <BOOLEAN>`   
根據預設， `cdk watch`會嘗試執行熱插拔部署，並忽略需要 CloudFormation 部署的變更。如果熱插拔部署失敗，請提供 `--hotswap-fallback`以復原並執行完整的 CloudFormation 部署。<a name="ref-cli-cmd-watch-options-logs"></a>

 `--logs <BOOLEAN>`   
根據預設， 會`cdk watch`監控應用程式中的所有 CloudWatch 日誌群組，並將日誌事件本機串流至 `stdout`。  
 *預設值*：`true`<a name="ref-cli-cmd-watch-options-progress"></a>

 `--progress <STRING>`   
設定 CDK CLI 顯示部署進度的方式。  
+  `bar` – 將堆疊部署事件顯示為進度列，其中資源的事件目前正在部署。
+  `events` – 提供完整的歷史記錄，包括所有 CloudFormation 事件。
您也可以在專案的 `cdk.json` 檔案或本機開發機器`~/.cdk.json`的 中設定此選項：  

```
{
   "progress": "events"
}
```
 *有效值*：`bar`、`events`  
 *預設值*：`bar`<a name="ref-cli-cmd-watch-options-rollback"></a>

 `--rollback <BOOLEAN>`   
在部署期間，如果資源無法建立或更新，部署會在 CDK CLI 傳回之前回復至最新的穩定狀態。在該時間點之前所做的所有變更都會復原。系統會刪除已建立的資源，並復原所做的更新。  
使用 `--no-rollback`或 `-R` 停用此行為。如果資源無法建立或更新，CDK CLI 會保留到該時間點所做的變更並傳回。這在您快速迭代的開發環境中可能很有幫助。  
當 時`false`，造成資源取代的部署一律會失敗。您只能將此值用於更新或建立新資源的部署。
 *預設值*：`true`<a name="ref-cli-cmd-watch-options-toolkit-stack-name"></a>

 `--toolkit-stack-name <STRING>`   
現有 CDK Toolkit 堆疊的名稱。  
根據預設， 會將名為 `cdk bootstrap` 的堆疊部署`CDKToolkit`到指定的 AWS 環境中。使用此選項為您的引導堆疊提供不同的名稱。  
CDK CLI 使用此值來驗證您的引導堆疊版本。

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

### 使用邏輯 ID DevelopmentStack 觀看 CDK 堆疊以進行變更
<a name="ref-cli-cmd-watch-examples-1"></a>

```
$ cdk watch DevelopmentStack
Detected change to 'lambda-code/index.js' (type: change). Triggering 'cdk deploy'
DevelopmentStack: deploying...

 ✅  DevelopmentStack
```

### 設定 cdk.json 檔案來包含和排除哪些變更
<a name="ref-cli-cmd-watch-examples-2"></a>

```
{
   "app": "mvn -e -q compile exec:java",
   "watch": {
    "include": "src/main/**",
    "exclude": "target/*"
   }
}
```

### 透過設定 cdk.json 檔案，在部署之前使用 Java 建置 CDK 專案
<a name="ref-cli-cmd-watch-examples-3"></a>

```
{
  "app": "mvn -e -q exec:java",
  "build": "mvn package",
  "watch": {
    "include": "src/main/**",
    "exclude": "target/*"
  }
}
```