

这是 AWS CDK v2 开发者指南。旧版 CDK v1 于 2022 年 6 月 1 日进入维护阶段，并于 2023 年 6 月 1 日终止支持。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

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

查看和修改 CDK CLI 的功能标志配置。

功能标志控制 CDK CLI 的行为，您可以使用它们来启用或禁用特定功能。请使用 `cdk flags` 命令查看您当前的功能标志配置并根据需要对其进行修改。

**警告**  
正在为 AWS CDK 开发 `cdk flags` 命令。此命令的当前功能被视为生产就绪，可以安全使用。但是，此命令的范围和功能可能会发生变化。因此，您必须通过提供 `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 功能标志配置保持同步。请注意，运行此命令可能会覆盖现有的配置值。

```
$ 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...
```