

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

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

# AWS CDK 功能旗標
<a name="featureflags"></a>

 AWS CDK 使用*功能旗標*來啟用版本中可能中斷的行為。旗標會以[內容值和 AWS CDK ](context.md)值的形式儲存在 `cdk.json`（或 `~/.cdk.json`) 中。`cdk context --reset` 或 `cdk context --clear`命令不會移除它們。

功能旗標預設為停用。未指定旗標的現有專案將繼續像以前一樣使用較新的 AWS CDK 版本。使用 建立的新專案`cdk init`包含旗標，可啟用建立專案的發行版本中提供的所有功能。編輯 `cdk.json`以停用您偏好先前行為的任何旗標。您也可以在升級 AWS CDK 之後新增旗標以啟用新行為。

您可以在 [FEATURE\$1FLAGS.md](https://github.com/aws/aws-cdk/blob/main/packages/aws-cdk-lib/cx-api/FEATURE_FLAGS.md) 的 AWS CDK GitHub 儲存庫中找到所有目前功能旗標的清單。如需該版本中新增之任何新功能旗標的說明，請參閱`CHANGELOG`指定版本中的 。

## 還原至 v1 行為
<a name="featureflags-disabling"></a>

在 CDK v2 中，某些功能旗標的預設值已針對 v1 變更。您可以將這些設回 `false`，以還原至特定的 AWS CDK v1 行為。使用 `cdk diff`命令來檢查合成範本的變更，以查看是否需要任何這些旗標。

 `@aws-cdk/core:newStyleStackSynthesis`   
使用新的堆疊合成方法，以已知的名稱擔任引導資源。需要[現代引導](bootstrapping.md)，但又允許透過 [CDK 管道](cdk-pipeline.md)進行 CI/CD，並立即進行跨帳戶部署。

 `@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId`   
如果您的應用程式使用多個 Amazon API Gateway API 金鑰，並將其與用量計劃建立關聯。

 `@aws-cdk/aws-rds:lowercaseDbIdentifier`   
如果您的應用程式使用 Amazon RDS 資料庫執行個體或資料庫叢集， 會明確指定這些執行個體的識別符。

 `@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021`   
如果您的應用程式搭配 Amazon CloudFront 分佈使用 TLS\$1V1\$12\$12019 安全政策。CDK v2 預設使用安全政策 TLSv1.2\$12021。

 `@aws-cdk/core:stackRelativeExports`   
如果您的應用程式使用多個堆疊，並且您參考另一個堆疊中的資源，這將決定使用絕對或相對路徑來 construct AWS CloudFormation 匯出。

 `@aws-cdk/aws-lambda:recognizeVersionProps`   
如果設定為 `false`，CDK 會在偵測 Lambda 函數是否已變更時包含中繼資料。這可能會在只有中繼資料變更時導致部署失敗，因為不允許重複的版本。如果您已對應用程式中的所有 Lambda 函數進行至少一次變更，則不需要還原此旗標。

還原 中這些標記的語法`cdk.json`如下所示。

```
{
  "context": {
    "@aws-cdk/core:newStyleStackSynthesis": false,
    "@aws-cdk/aws-apigateway:usagePlanKeyOrderInsensitiveId": false,
    "@aws-cdk/aws-cloudfront:defaultSecurityPolicyTLSv1.2_2021": false,
    "@aws-cdk/aws-rds:lowercaseDbIdentifier": false,
    "@aws-cdk/core:stackRelativeExports": false,
    "@aws-cdk/aws-lambda:recognizeVersionProps": false
  }
}
```