

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

# 创建多变体功能标志
<a name="appconfig-creating-multi-variant-feature-flags-procedures"></a>

使用本节中的过程创建功能标志的变体。

**开始前的准备工作**  
请注意以下重要信息。
+ 可以通过编辑现有功能标志来创建其变体。*创建新的配置文件时*，无法创建新功能标志的变体。首先必须完成创建新配置文件的工作流程。创建配置文件后，可以向配置文件中的任何标志添加变体。有关如何创建新的配置文件的信息，请参阅[在中创建功能标志配置文件 AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md)。
+ 要检索亚马逊 EC2、Amazon ECS 和 Amazon EKS 计算平台的功能标志变体数据，必须使用 AWS AppConfig 代理版本 2.0.4416 或更高版本。
+ 出于性能原因 AWS CLI ，SDK 调用时 AWS AppConfig 不要检索变体数据。有关 AWS AppConfig Agent 的更多信息，请参阅[如何使用 AWS AppConfig 代理检索配置数据](appconfig-agent-how-to-use.md)。
+ 在创建功能标志变体时，可以为其指定规则。规则是将请求上下文作为输入并生成布尔结果作为输出的表达式。在创建变体之前，请查看标志变体规则支持的操作数和运算符。可以在创建变体之前创建规则。有关更多信息，请参阅 [了解多变体功能标志规则](appconfig-creating-multi-variant-feature-flags-rules.md)。

**Topics**
+ [

## 创建多变体功能标志（控制台）
](#appconfig-creating-multi-variant-feature-flags-procedures-console)
+ [

## 创建多变体功能标志（命令行）
](#appconfig-creating-multi-variant-feature-flags-procedures-commandline)

## 创建多变体功能标志（控制台）
<a name="appconfig-creating-multi-variant-feature-flags-procedures-console"></a>

以下过程介绍如何使用 AWS AppConfig 控制台为现有配置文件创建多变体功能标志。也可以编辑现有功能标志来创建变体。

**创建多变体功能标志**

1. 在 [https://console.aws.amazon.com/systems-manager/appconfig](https://console.aws.amazon.com/systems-manager/appconfig/)/上打开 AWS Systems Manager 控制台。

1. 在导航窗格中，选择**应用程序**，然后选择一个应用程序。

1. 在**配置文件和功能标志**选项卡上，选择现有的功能标志配置文件。

1. 在**标志**部分中，选择**添加新标志**。

1. 在**功能标志定义**部分中，对于**标志名称**输入名称。

1. 对于**标志键**，输入一个标志标识符来区分同一配置文件中的标志。相同配置文件中的标志不能具有相同的键。创建标志后，可以编辑标志名称，但不能编辑标志键。

1. （可选）在**描述**字段中，输入有关此标志的信息。

1. 在**变体**部分中，选择**多变体标志**。

1. （可选）在**功能标志属性**部分中，选择**定义属性**。属性使您能够在标志中提供其他值。有关属性和约束的更多信息，请参阅[了解功能标志属性](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes)。

   1. 对于**键**，指定一个标志键并从**类型**列表中选择其类型。有关**值**和**约束**字段支持的选项的信息，请参阅前面引用的有关属性的部分。

   1. 选择**必需值**以指定属性值是否为必需值。

   1. 选择**定义属性**来添加其它属性。

   1. 选择**应用**以保存属性更改。

1. 在**功能标志变体**部分中，选择**创建变体**。

   1. 对于**变体名称**，输入名称。

   1. 使用**已启用值**开关来启用该变体。

   1. 在**规则**文本框中，输入规则。

   1. 使用**创建变体** > **在上面创建变体**或**在下面创建变体**选项，来为该标志创建其它变体。

   1. 在**默认变体**部分中，使用**已启用值**开关来启用默认变体。（可选）为在步骤 10 中定义的属性提供值。

   1. 选择**应用**。

1. 验证标志及其变体的详细信息，然后选择**创建标志**。

有关部署带有变体的新功能标志的信息，请参阅[在中部署功能标志和配置数据 AWS AppConfig](deploying-feature-flags.md)。

## 创建多变体功能标志（命令行）
<a name="appconfig-creating-multi-variant-feature-flags-procedures-commandline"></a>

以下过程介绍如何使用 AWS Command Line Interface （在 Linux 或 Windows 上）或适用于 Windows PowerShell 的工具为现有配置文件创建多变体功能标志。也可以编辑现有功能标志来创建变体。

**开始前的准备工作**  
在使用 AWS CLI创建多变体功能标志之前，请完成以下任务。
+ 创建功能标志配置文件。有关更多信息，请参阅 [在中创建功能标志配置文件 AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md)。
+ 更新到 AWS CLI的最新版本。有关更多信息，请参阅《AWS Command Line Interface 用户指南》**中的 [Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)。

**创建多变体功能标志**

1. 在本地计算机上创建配置文件，该配置文件将指定要创建的多变体标志的详细信息。使用 `.json` 文件扩展名保存该文件。该文件必须符合 [https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-type-reference-feature-flags.html](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-type-reference-feature-flags.html) JSON 架构。配置文件的架构内容将类似于以下内容。

   ```
   {
     "flags": {
       "FLAG_NAME": {
         "attributes": {
             "ATTRIBUTE_NAME": {
             "constraints": {
               "type": "CONSTRAINT_TYPE"
             }
           }
         },
         "description": "FLAG_DESCRIPTION",
         "name": "VARIANT_NAME"
       }
     },
     "values": {
       "VARIANT_VALUE_NAME": {
         "_variants": [
           {
             "attributeValues": {
               "ATTRIBUTE_NAME": BOOLEAN
             },
             "enabled": BOOLEAN,
             "name": "VARIANT_NAME",
             "rule": "VARIANT_RULE"
           },
           {
             "attributeValues": {
               "ATTRIBUTE_NAME": BOOLEAN
             },
             "enabled": BOOLEAN,
             "name": "VARIANT_NAME",
             "rule": "VARIANT_RULE"
           },
           {
             "attributeValues": {
               "ATTRIBUTE_NAME": BOOLEAN
             },
             "enabled": BOOLEAN,
             "name": "VARIANT_NAME",
             "rule": "VARIANT_RULE"
           },
           {
             "attributeValues": {
               "ATTRIBUTE_NAME": BOOLEAN
             },
             "enabled": BOOLEAN,
             "name": "VARIANT_NAME",
             "rule": "VARIANT_RULE"
           }
         ]
       }
     },
     "version": "VERSION_NUMBER"
   }
   ```

   以下是包含三个变体和默认变体的示例。

   ```
   {
     "flags": {
       "ui_refresh": {
         "attributes": {
           "dark_mode_support": {
             "constraints": {
               "type": "boolean"
             }
           }
         },
         "description": "A release flag used to release a new UI",
         "name": "UI Refresh"
       }
     },
     "values": {
       "ui_refresh": {
         "_variants": [
           {
             "attributeValues": {
               "dark_mode_support": true
             },
             "enabled": true,
             "name": "QA",
             "rule": "(ends_with $email \"qa-testers.mycompany.com\")"
           },
           {
             "attributeValues": {
               "dark_mode_support": true
             },
             "enabled": true,
             "name": "Beta Testers",
             "rule": "(exists key::\"opted_in_to_beta\")"
           },
           {
             "attributeValues": {
               "dark_mode_support": false
             },
             "enabled": true,
             "name": "Sample Population",
             "rule": "(split pct::10 by::$email)"
           },
           {
             "attributeValues": {
               "dark_mode_support": false
             },
             "enabled": false,
             "name": "Default Variant"
           }
         ]
       }
     },
     "version": "1"
   }
   ```

1. 使用 `CreateHostedConfigurationVersion` API 将功能标志配置数据保存到 AWS AppConfig。

------
#### [ Linux ]

   ```
   aws appconfig create-hosted-configuration-version \
     --application-id APPLICATION_ID \
     --configuration-profile-id CONFIGURATION_PROFILE_ID \
     --content-type "application/json" \
     --content file://path/to/feature_flag_configuration_data.json \
     --cli-binary-format raw-in-base64-out \
     outfile
   ```

------
#### [ Windows ]

   ```
   aws appconfig create-hosted-configuration-version ^
     --application-id APPLICATION_ID ^
     --configuration-profile-id CONFIGURATION_PROFILE_ID ^
     --content-type "application/json" ^
     --content file://path/to/feature_flag_configuration_data.json ^
     --cli-binary-format raw-in-base64-out ^
     outfile
   ```

------
#### [ PowerShell ]

   ```
   New-APPCHostedConfigurationVersion `
     -ApplicationId APPLICATION_ID `
     -ConfigurationProfileId CONFIGURATION_PROFILE_ID `
     -ContentType "application/json" `
     -Content file://path/to/feature_flag_configuration_data.json `
     -Raw
   ```

------

   `service_returned_content_file`包含您的配置数据，其中包括一些 AWS AppConfig 生成的元数据。
**注意**  
创建托管配置版本时，请 AWS AppConfig 验证您的数据是否符合 [https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-type-reference-feature-flags.html](https://docs.aws.amazon.com/appconfig/latest/userguide/appconfig-type-reference-feature-flags.html)JSON 架构。 AWS AppConfig 此外，还会验证数据中的每个要素标志属性是否满足您为这些属性定义的约束条件。