

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Crear un perfil de configuración de indicadores de características en AWS AppConfig
<a name="appconfig-creating-configuration-and-profile-feature-flags"></a>

Puede utilizar los indicadores de características para activar o desactivar las funciones de sus aplicaciones o para configurar diferentes características de las funciones de las aplicaciones mediante los atributos de los indicadores. AWS AppConfig almacena las configuraciones de las marcas de características en el almacén de configuraciones AWS AppConfig hospedado en un formato de marcas de características que contiene datos y metadatos sobre las marcas y los atributos de las marcas.

**nota**  
Al crear un perfil de configuración de indicadores de características, puede crear un indicador de característica básico como parte del flujo de trabajo del perfil de configuración. AWS AppConfig también admite indicadores de características con múltiples variantes. *Las marcas de características con múltiples variantes* permiten definir un conjunto de posibles valores de marcas para devolverlos en una solicitud. Al solicitar una marca configurada con variantes, la aplicación proporciona un contexto que se AWS AppConfig evalúa en función de un conjunto de reglas definidas por el usuario. Según el contexto especificado en la solicitud y las reglas definidas para la variante, AWS AppConfig devuelve diferentes valores de indicador a la aplicación.  
Para crear marcas de características con múltiples variantes, cree primero un perfil de configuración y, a continuación, edite las marcas del perfil de configuración para añadir variantes. Para obtener más información, consulte [Creación de marcas de características con múltiples variantes](appconfig-creating-multi-variant-feature-flags.md).

**Topics**
+ [

## Descripción de los atributos de las marcas de características
](#appconfig-creating-configuration-profile-feature-flag-attributes)
+ [

# Creación de un perfil de configuración de marcas de características (consola)
](appconfig-creating-feature-flag-configuration-create-console.md)
+ [

# Creación de un perfil de configuración de marcas de características (línea de comandos)
](appconfig-creating-feature-flag-configuration-commandline.md)
+ [

# Creación de marcas de características con múltiples variantes
](appconfig-creating-multi-variant-feature-flags.md)
+ [

# Descripción de la referencia de tipo de AWS.AppConfig.FeatureFlags
](appconfig-type-reference-feature-flags.md)
+ [

# Guardado de una versión de marca de características anterior en una versión nueva
](appconfig-creating-configuration-profile-feature-flags-editing-version.md)

## Descripción de los atributos de las marcas de características
<a name="appconfig-creating-configuration-profile-feature-flag-attributes"></a>

Al crear un perfil de configuración de marca de características (o al crear una nueva marca en un perfil de configuración existente), puede especificar los atributos y las restricciones correspondientes de la marca. Un atributo es un campo que se asocia a la marca de características para expresar las propiedades relacionadas con la marca de características. Los atributos se envían a la aplicación con la clave de la marca y el valor `enable` o `disable` de la marca.

Las restricciones garantizan que no se implementen valores de atributo inesperados en la aplicación. En la siguiente imagen se muestra un ejemplo.

![\[Ejemplo de atributos de marca para una marca AWS AppConfig de entidad\]](http://docs.aws.amazon.com/es_es/appconfig/latest/userguide/images/appconfig-flag-attributes.png)


**nota**  
Tenga en cuenta la siguiente información sobre los atributos de marca.  
Para los nombres de atributos, la palabra “habilitado” es una palabra reservada. No se puede crear un atributo de marca de características denominado “habilitado”. No hay otras palabras reservadas.
Los atributos de una marca de características solo se incluyen en la respuesta `GetLatestConfiguration` si dicha marca está habilitada. 
Las claves de los atributos de una marca determinada deben ser únicas. 

AWS AppConfig admite los siguientes tipos de atributos de bandera y sus correspondientes restricciones.

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/es_es/appconfig/latest/userguide/appconfig-creating-configuration-and-profile-feature-flags.html)

# Creación de un perfil de configuración de marcas de características (consola)
<a name="appconfig-creating-feature-flag-configuration-create-console"></a>

Utilice el siguiente procedimiento para crear un perfil de configuración de indicadores de AWS AppConfig función mediante la AWS AppConfig consola. A la vez que crea el perfil de configuración, también puede crear una marca de características básica. 

**Para crear un perfil de configuración**

1. Abra la AWS Systems Manager consola en [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. En el panel de navegación, elija **Aplicaciones**, y, a continuación, seleccione una aplicación que haya creado en [Crear un espacio de nombres para la aplicación en AWS AppConfig](appconfig-creating-namespace.md).

1. En la pestaña **Perfiles de configuración y marcas de características**, elija **Crear configuración**.

1. En la sección **Opciones de configuración**, elija **Marca de características**.

1. En la sección **Perfil de configuración**, en **Nombre del perfil de configuración**, introduzca un nombre.

1. (Opcional) Amplíe **Descripción** e introduzca una descripción.

1. (Opcional) Amplíe **Opciones adicionales** y complete lo siguiente, según sea necesario.

   1. En la lista de **cifrado**, elija una clave AWS Key Management Service (AWS KMS) de la lista. Esta clave gestionada por el cliente le permite cifrar las nuevas versiones de los datos de configuración en el almacén de configuración AWS AppConfig alojado. Para obtener más información sobre esta clave, consulte **AWS AppConfig admite claves administradas por el cliente** en [Seguridad en AWS AppConfig](appconfig-security.md).

   1. En la sección **Etiquetas**, seleccione **Agregar nueva etiqueta** y, a continuación, especifique una clave y un valor opcional. 

1. Elija **Siguiente**.

1. En la sección **Definición de marca de características**, en **Nombre de la marca**, introduzca un nombre.

1. En **Clave de marca**, introduzca un identificador de marca para distinguir las marcas del mismo perfil de configuración. Las marcas del mismo perfil de configuración no puede tener la misma clave. Una vez creada la marca, puede editar el nombre de la marca, pero no su clave. 

1. (Opcional) Amplíe **Descripción** e introduzca información sobre esta marca.

1. Seleccione **Este indicador es de corta duración** y, si lo desea, elija una fecha en la que se debe deshabilitar o eliminar el indicador. AWS AppConfig *no* desactiva la marca en la fecha de caducidad. 

1. (Opcional) En la sección **Atributos de la marca de características**, elija **Definir atributo**. Los atributos le permiten proporcionar valores adicionales dentro de su marca. Para obtener más información sobre los atributos y las restricciones, consulte [Descripción de los atributos de las marcas de características](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes).

   1. En **Clave**, especifique una clave de marca y elija su tipo en la lista **Tipo**. Para obtener información sobre las opciones admitidas en los campos **Valor** y **Restricciones**, consulte la sección sobre los atributos a la que se ha hecho referencia anteriormente.

   1. Seleccione **Valor obligatorio** para especificar si se requiere un valor de atributo.

   1. Para añadir atributos adicionales, elija **Definir atributo**.

1. En la sección **Valor de la marca de características**, seleccione **Habilitado** para habilitar la marca. Use esta misma opción para deshabilitar una marca cuando alcance una fecha de baja especificada, si corresponde.

1. Elija **Siguiente**.

1. En la página **Revisar y guardar**, compruebe los detalles de la marca y, a continuación, elija **Guardar y continuar con la implementación**.

Continúe en [Implementación de indicadores de características y datos de configuración en AWS AppConfig](deploying-feature-flags.md).

# Creación de un perfil de configuración de marcas de características (línea de comandos)
<a name="appconfig-creating-feature-flag-configuration-commandline"></a>

El siguiente procedimiento describe cómo utilizar AWS Command Line Interface (en Linux o Windows) o las Herramientas para Windows PowerShell para crear un perfil de configuración de indicadores de AWS AppConfig características. A la vez que crea el perfil de configuración, también puede crear una marca de características básica.

**Cómo crear una configuración de una marca de características**

1. Abra el AWS CLI.

1. Cree un perfil de configuración de la marca de características especificando su **tipo** como `AWS.AppConfig.FeatureFlags`. El perfil de configuración debe usar `hosted` como URI de ubicación.

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

   ```
   aws appconfig create-configuration-profile \
     --application-id APPLICATION_ID \
     --name CONFIGURATION_PROFILE_NAME \
     --location-uri hosted \
     --type AWS.AppConfig.FeatureFlags
   ```

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

   ```
   aws appconfig create-configuration-profile ^
     --application-id APPLICATION_ID ^
     --name CONFIGURATION_PROFILE_NAME ^
     --location-uri hosted ^
     --type AWS.AppConfig.FeatureFlags
   ```

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

   ```
   New-APPCConfigurationProfile `
     -Name CONFIGURATION_PROFILE_NAME `
     -ApplicationId APPLICATION_ID `
     -LocationUri hosted `
     -Type AWS.AppConfig.FeatureFlags
   ```

------

1. Cree los datos de configuración de su marca de características. Los datos deben estar en formato JSON y ajustarse al esquema JSON de `AWS.AppConfig.FeatureFlags`. Para obtener más información acerca del nuevo esquema, consulte [Descripción de la referencia de tipo de AWS.AppConfig.FeatureFlags](appconfig-type-reference-feature-flags.md).

1. Utilice la API de `CreateHostedConfigurationVersion` para guardar los datos de configuración de su marca de características en 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
   ```

------
#### [ 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
   ```

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

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

------

   El comando carga el contenido especificado para el parámetro `Content` desde el disco. El contenido debe ser similar al del siguiente ejemplo.

   ```
   {
       "flags": {
           "ui_refresh": {
               "name": "UI Refresh"
           }
       },
       "values": {
           "ui_refresh": {
               "enabled": false,
               "attributeValues": {
                   "dark_mode_support": true
               }
           }
       },
       "version": "1"
   }
   ```

   El sistema devuelve información similar a la siguiente.

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

   ```
   {
      "ApplicationId"          : "ui_refresh",
      "ConfigurationProfileId" : "UI Refresh",
      "VersionNumber"          : "1",
      "ContentType"            : "application/json"
   }
   ```

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

   ```
   {
      "ApplicationId"          : "ui_refresh",
      "ConfigurationProfileId" : "UI Refresh",
      "VersionNumber"          : "1",
      "ContentType"            : "application/json"
   }
   ```

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

   ```
   ApplicationId          : ui_refresh
   ConfigurationProfileId : UI Refresh
   VersionNumber          : 1
   ContentType            : application/json
   ```

------

   `service_returned_content_file`Contiene sus datos de configuración, que incluyen algunos metadatos AWS AppConfig generados.
**nota**  
Al crear la versión de configuración alojada, AWS AppConfig verifica que los datos se ajusten al esquema `AWS.AppConfig.FeatureFlags` JSON. AWS AppConfig además, valida que cada atributo del indicador de entidad de sus datos satisfaga las restricciones que ha definido para esos atributos.

# Creación de marcas de características con múltiples variantes
<a name="appconfig-creating-multi-variant-feature-flags"></a>

Las variantes de una marca de características permiten definir un conjunto de posibles valores de marcas para devolverlos en una solicitud. También puede configurar diferentes estados (habilitada o deshabilitada) para las marcas con múltiples variantes. Al solicitar un indicador configurado con variantes, la aplicación proporciona un contexto que se AWS AppConfig evalúa en función de un conjunto de reglas definidas por el usuario. Según el contexto especificado en la solicitud y las reglas definidas para la variante, AWS AppConfig devuelve diferentes valores de indicador a la aplicación.

En la siguiente captura de pantalla, se muestra un ejemplo de marca de características con tres variantes definidas por el usuario y la variante por defecto.

![\[Un ejemplo de captura de pantalla de una marca de características con variantes.\]](http://docs.aws.amazon.com/es_es/appconfig/latest/userguide/images/flag-variant-example.png)


**Topics**
+ [

# Descripción de los conceptos y casos de uso comunes de las marcas de características con múltiples variantes
](appconfig-creating-multi-variant-feature-flags-concepts.md)
+ [

# Descripción de las reglas de marca de características con múltiples variantes
](appconfig-creating-multi-variant-feature-flags-rules.md)
+ [

# Creación de una marca de características con múltiples variantes
](appconfig-creating-multi-variant-feature-flags-procedures.md)

# Descripción de los conceptos y casos de uso comunes de las marcas de características con múltiples variantes
<a name="appconfig-creating-multi-variant-feature-flags-concepts"></a>

Para ayudarle a entender mejor las variantes de las marcas de características, en esta sección se explican los conceptos de las variantes de marca y los casos de uso más comunes.

**Conceptos**
+ **Indicador de función**: tipo de AWS AppConfig configuración que se utiliza para controlar el comportamiento de una función en una aplicación. Una marca tiene un estado (habilitado o deshabilitado) y un conjunto opcional de atributos que contienen valores arbitrarios de cadena, numéricos, booleanos o de matriz.
+ **Variante de marca de características**: combinación específica de valores de estado y atributo que pertenecen a una marca de características. Una marca de características puede tener varias variantes.
+ **Regla de variante**: expresión definida por el usuario que se utiliza para seleccionar una variante de una marca de características. Cada variante tiene su propia regla que AWS AppConfig evalúa si se debe devolver o no.
+ **Variante predeterminada**: una variante especial que se devuelve cuando no se selecciona ninguna otra variante. Todas las marcas de características con múltiples variantes tienen una variante predeterminada.

  Tenga en cuenta que la variante predeterminada debe ser la última de su orden de variantes y no puede tener reglas asociadas. Si no se define en último lugar, AWS AppConfig devuelve a `BadRequestException` cuando intentas crear la marca de variantes múltiples.
+ **Contexto**: claves y valores definidos por el usuario que se transfieren a AWS AppConfig en el momento de la recuperación de la configuración. Los valores de contexto se utilizan durante la evaluación de las reglas para seleccionar la variante de la marca de características que se va a devolver.

**nota**  
AWS AppConfig el agente evalúa las reglas de variantes y determina qué regla se aplica a la solicitud en función del contexto proporcionado. Para obtener más información sobre de la recuperación de marcas de características con múltiples variantes, consulte [Recuperación de marcas de características básicas y con múltiples variantes](appconfig-integration-retrieving-feature-flags.md).

**Casos de uso comunes**

En esta sección, se describen dos casos de uso comunes de las variantes de marcas de características.

*Segmentación de usuarios*

La segmentación de usuarios es el proceso de dividir a los usuarios en función de determinados atributos. Por ejemplo, puede usar variantes de marca para mostrar una característica a algunos usuarios, pero no a otros, en función de su ID de usuario, ubicación geográfica, tipo de dispositivo o frecuencia de compra.

Utilizando el ejemplo de la frecuencia de compra, supongamos que su aplicación de comercio admite una característica para aumentar la fidelidad de los clientes. Puede usar variantes de marca para configurar diferentes tipos de incentivos que se mostrarán a un usuario en función de la última vez que compró algo. A un nuevo usuario se le podría ofrecer un pequeño descuento para animarlo a convertirse en cliente, mientras que a un cliente habitual se le podría ofrecer un descuento mayor si compra algo de una nueva categoría.

*División de tráfico*

La división del tráfico es el proceso de seleccionar una variante de marca aleatoria pero coherente en función de un valor de contexto que usted defina. Por ejemplo, tal vez quiera realizar un experimento en el que un pequeño porcentaje de sus usuarios (identificados por su ID de usuario) vea una variante concreta. O bien, puede que desee implementar una característica de forma gradual, en la que una característica esté primero expuesta al 5 % de los usuarios, luego al 15 %, después al 40 % y, finalmente, al 100 %, manteniendo una experiencia de usuario coherente durante toda la implementación.

Usando el ejemplo de experimentación, podría utilizar variantes de marca para probar un nuevo estilo de botón para la acción principal en la página de inicio de la aplicación y comprobar si genera más clics. Para su experimento, podría crear una variante de marca con una regla de división del tráfico que seleccione al 5 % de los usuarios para ver el nuevo estilo, mientras que la variante predeterminada indicará los usuarios que deben seguir viendo el estilo existente. Si el experimento tiene éxito, puede aumentar el valor porcentual o incluso convertir esa variante en la predeterminada.

# Descripción de las reglas de marca de características con múltiples variantes
<a name="appconfig-creating-multi-variant-feature-flags-rules"></a>

Al crear una variante de marca de características, debe especificar una regla para ella. Las reglas son expresiones que toman valores de contexto como entrada y producen un resultado booleano como salida. Por ejemplo, puede definir una regla para seleccionar una variante de marca para los usuarios de la versión beta, identificados por su ID de cuenta, para probar una actualización de la interfaz de usuario. En esta situación, haga lo siguiente:

1. Cree un nuevo perfil de configuración de marca de características denominado *UI Refresh*.

1. Cree una nueva marca de características denominada *ui\$1refresh*.

1. Edite la marca de características después de crearla para añadir variantes.

1. Crea y habilita una nueva variante llamada *BetaUsers*.

1. Defina una regla para *BetaUsers*seleccionar la variante si el ID de cuenta del contexto de la solicitud aparece en una lista de cuentas IDs aprobadas para ver la nueva experiencia beta.

1. Confirme que el estado de la variante predeterminada sea **Deshabilitado**.

**nota**  
Las variantes se evalúan como una lista ordenada en función del orden en que están definidas en la consola. La variante que aparece en la parte superior de la lista se evalúa en primer lugar. Si ninguna regla coincide con el contexto proporcionado, AWS AppConfig devuelve la variante predeterminada.

Cuando AWS AppConfig procesa la solicitud de indicador de función, compara primero el contexto proporcionado, que incluye el AccountID (por ejemplo), con la variante. BetaUsers Si el contexto coincide con la regla BetaUsers, AWS AppConfig devuelve los datos de configuración de la experiencia beta. Si el contexto no incluye un identificador de cuenta o si el identificador de cuenta termina en un número distinto de 123, AWS AppConfig devuelve los datos de configuración de la regla predeterminada, lo que significa que el usuario ve la experiencia actual en producción.

**nota**  
Para obtener más información sobre de la recuperación de marcas de características con múltiples variantes, consulte [Recuperación de marcas de características básicas y con múltiples variantes](appconfig-integration-retrieving-feature-flags.md).

# Definición de reglas de marcas de características con múltiples variantes
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators"></a>

Una regla de variante es una expresión compuesta por uno o más operandos y un operador. Un operando es un valor específico que se utiliza durante la evaluación de una regla. Los valores de los operandos pueden ser estáticos, como un número literal o una cadena, o variables, como el valor encontrado en un contexto o el resultado de otra expresión. Un operador, como mayor que, es una prueba o acción que se aplica a sus operandos y que produce un valor. Para que sea válida, una expresión de regla de variante debe mostrar un valor verdadero o falso.

**Operandos**


****  

| Tipo | Description (Descripción) | Ejemplo | 
| --- | --- | --- | 
|  Cadena  |  Secuencia de caracteres UTF-8 entre comillas dobles.  |  <pre>"apple", "Ḽơᶉëᶆ ȋṕšᶙṁ"</pre>  | 
|  Entero  |  Valor entero de 64 bits.  |  <pre>-7, 42 </pre>  | 
|  Flotante  |  Valor de coma flotante de 64 bits según la norma IEEE 754.  |  <pre>3.14, 1.234e-5</pre>  | 
|  Timestamp  |  Un momento específico en el tiempo, tal como se describe en los [formatos de fecha y hora de la notación W3C](https://www.w3.org/TR/NOTE-datetime).  |  <pre>2012-03-04T05:06:07-08:00, 2024-01</pre>  | 
|  Booleano  |  Valor verdadero o falso.  |  <pre>true, false</pre>  | 
|  Valor de contexto  |  Un valor parametrizado en forma de \$1 *key* que se recupera del contexto durante la evaluación de la regla.  |  <pre>$country, $userId</pre>  | 

**Operadores de comparación**


****  

| Operador | Description (Descripción) | Ejemplo | 
| --- | --- | --- | 
|  eq  |  Determina si un valor de contexto es igual a un valor dado.  |  <pre>(eq $state "Virginia")</pre>  | 
|  gt  |  Determina si un valor de contexto es mayor que un valor dado.  |  <pre>(gt $age 65)</pre>  | 
|  gte  |  Determina si un valor de contexto es mayor que un valor dado o igual a él.  |  <pre>(gte $age 65)</pre>  | 
|  lt  |  Determina si un valor de contexto es menor que un valor dado.  |  <pre>(lt $age 65)</pre>  | 
|  lte  |  Determina si un valor de contexto es menor que un valor dado o igual a él.  |  <pre>(lte $age 65)</pre>  | 

**Logical operators** (Operadores lógicos)


****  

| Operador | Description (Descripción) | Ejemplo | 
| --- | --- | --- | 
|  and  |  Determina si ambos operandos son verdaderos.  |  <pre>(and <br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  o  |  Determina si al menos uno de los operandos es verdadero.  |  <pre>(or<br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  not  |  Invierte el valor de una expresión.  |  <pre>(not (eq $state "Virginia"))</pre>  | 

**Operadores personalizados**


****  

| Operador | Description (Descripción) | Ejemplo | 
| --- | --- | --- | 
|  begins\$1with  |  Determina si un valor de contexto comienza con un prefijo determinado.  |  <pre>(begins_with $state "A")</pre>  | 
|  ends\$1with  |  Determina si un valor de contexto acaba con un prefijo determinado.  |  <pre>(ends_with $email "amazon.com")</pre>  | 
|  contains  |  Determina si un valor de contexto contiene una subcadena determinada.  |  <pre>(contains $promoCode "WIN")</pre>  | 
|  in  |  Determina si un valor de contexto está incluida en una lista de constantes.  |  <pre>(in $userId ["123", "456"])</pre>  | 
|  matches  |  Determina si un valor de contexto coincide con un patrón de expresiones regulares determinado.  |  <pre>(matches in::$greeting pattern::"h.*y")</pre>  | 
|  exists  |  Determina si se ha proporcionado algún valor para una clave de contexto.  |  <pre>(exists key::"country")</pre>  | 
|  dividir  |  Evalúa como `true` un porcentaje de tráfico determinado en función de un hash coherente de los valores de contexto proporcionados. Para obtener una explicación detallada sobre el funcionamiento de `split`, consulte la siguiente sección de este tema, [Descripción del operador de división](appconfig-creating-multi-variant-feature-flags-rules.md#appconfig-creating-multi-variant-feature-flags-rules-operators-split). Tenga en cuenta que `seed` es una propiedad opcional. Si no lo especifica `seed`, el hash es coherente a nivel *local*, lo que significa que el tráfico se dividirá de forma coherente para esa marca, pero otras marcas que reciban el mismo valor de contexto pueden dividir el tráfico de forma diferente. Si se proporciona `seed`, se garantiza que cada valor único dividirá el tráfico de forma coherente entre las marcas de características, los perfiles de configuración y las Cuentas de AWS.  |  <pre>(split pct::10 by::$userId seed::"abc")</pre>  | 

## Descripción del operador de división
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators-split"></a>

En la siguiente sección se describe cómo se comporta el operador de `split` cuando se utiliza en diferentes escenarios. A modo de recordatorio, `split` evalúa como `true` un porcentaje de tráfico determinado en función de un hash coherente de los valores de contexto proporcionados. Para entenderlo mejor, considere el siguiente escenario de referencia, que utiliza la división con dos variantes:

```
A: (split by::$uniqueId pct::20)
C: <no rule>
```

Como cabe esperar, si se proporciona un conjunto de valores `uniqueId` aleatorio, se obtiene una distribución que es aproximadamente:

```
A: 20%
C: 80%
```

Si añade una tercera variante, pero utiliza el mismo porcentaje de división, de la siguiente manera:

```
A: (split by::$uniqueId pct::20)
B: (split by::$uniqueId pct::20)
C: <default>
```

Se obtiene la siguiente distribución:

```
A: 20%
B: 0%
C: 80%
```

Esta distribución, potencialmente inesperada, se obtiene porque cada regla de variante se evalúa en orden y la primera coincidencia determina la variante devuelta. Cuando se evalúa la regla A, el 20 % de los valores `uniqueId` coinciden con ella, por lo que se devuelve la primera variante. A continuación, se evalúa la regla B. Sin embargo, todos los valores `uniqueId` que habrían coincidido con la segunda instrucción de división ya coincidían con la regla A de variante, por lo que ningún valor coincide con la regla B. En su lugar, se devuelve la variante predeterminada.

Veamos ahora un tercer ejemplo.

```
A: (split by::$uniqueId pct::20)
B: (split by::$uniqueId pct::25)
C: <default>
```

Como en el ejemplo anterior, el primer 20 % de los valores `uniqueId` coinciden con la regla A. En el caso de la regla B de variante, el 25 % de todos los valores `uniqueId` coincidirían, pero la mayoría de los valores coincidieron previamente con la regla A. Eso deja un 5 % del total de los valores para la variante B y el resto recibirá la variante C. La distribución tendría el siguiente aspecto:

```
A: 20%
B: 5%
C: 75%
```

**Uso de la propiedad `seed`**  
Puede utilizar la propiedad `seed` para garantizar que el tráfico se divida de forma coherente para un valor de contexto determinado, independientemente de dónde se utilice el operador de división. Si no lo especifica `seed`, el hash es coherente a nivel *local*, lo que significa que el tráfico se dividirá de forma coherente para esa marca, pero otras marcas que reciban el mismo valor de contexto pueden dividir el tráfico de forma diferente. Si se proporciona `seed`, se garantiza que cada valor único dividirá el tráfico de forma coherente entre las marcas de características, los perfiles de configuración y las Cuentas de AWS.

Por lo general, los clientes utilizan el mismo valor `seed` en todas las variantes de una marca al dividir el tráfico en la misma propiedad de contexto. Sin embargo, en ocasiones puede tener sentido utilizar un valor de inicio diferente. Aquí se incluye un ejemplo que utiliza distintos valores de inicio para las reglas A y B:

```
A: (split by::$uniqueId pct::20 seed::"seed_one")
B: (split by::$uniqueId pct::25 seed::"seed_two")
C: <default>
```

Como en el ejemplo anterior, el 20 % de los valores `uniqueId` coincidentes coinciden con la regla A. Esto significa que el 80 % de los valores no coinciden y se comparan con la regla B de variante. Como el valor de inicio es diferente, no existe correlación entre los valores que coincidían con la regla A y los valores que coinciden con la regla B. Sin embargo, solo hay un 80 % de valores `uniqueId` para dividir, de modo que el 25 % de ese número coincide con la regla B y el 75 % no. Esto da lugar a la siguiente distribución:

```
A: 20%
B: 20% (25% of what falls through from A, or 25% of 80%) 
C: 60%
```

# Creación de una marca de características con múltiples variantes
<a name="appconfig-creating-multi-variant-feature-flags-procedures"></a>

Utilice los procedimientos de esta sección para crear variantes de una marca de características.

**Antes de empezar**  
Tenga en cuenta la siguiente información importante.
+ Puede crear variantes de marcas de características existentes editándolas. No puede crear variantes de una nueva marca de características *al crear un nuevo perfil de configuración*. Primero debe completar el flujo de trabajo de creación del nuevo perfil de configuración. Tras crear el perfil de configuración, puede añadir variantes a cualquier marca del perfil de configuración. Para obtener información acerca de cómo crear un nuevo perfil de configuración, consulte [Crear un perfil de configuración de indicadores de características en AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md).
+ Para recuperar datos de variantes de indicadores de características para las plataformas informáticas Amazon EC2, Amazon ECS y Amazon EKS, debe usar la versión 2.0.4416 o posterior del AWS AppConfig agente.
+ Por motivos de rendimiento, AWS CLI y el SDK exige AWS AppConfig no recuperar datos de variantes. Para obtener más información sobre AWS AppConfig Agent, consulte[Cómo usar el AWS AppConfig agente para recuperar los datos de configuración](appconfig-agent-how-to-use.md).
+ Al crear una variante de marca de características, debe especificar una regla para ella. Las reglas son expresiones que toman el contexto de la solicitud como entrada y producen un resultado booleano como salida. Antes de crear variantes, revise los operandos y operadores admitidos para las reglas de variantes de marca. Puede crear reglas antes de crear variantes. Para obtener más información, consulte [Descripción de las reglas de marca de características con múltiples variantes](appconfig-creating-multi-variant-feature-flags-rules.md).

**Topics**
+ [

## Creación de una marca de características con múltiples variantes (consola)
](#appconfig-creating-multi-variant-feature-flags-procedures-console)
+ [

## Creación de una marca de características con múltiples variantes (línea de comandos)
](#appconfig-creating-multi-variant-feature-flags-procedures-commandline)

## Creación de una marca de características con múltiples variantes (consola)
<a name="appconfig-creating-multi-variant-feature-flags-procedures-console"></a>

El siguiente procedimiento describe cómo crear un indicador de función con varias variantes para un perfil de configuración existente mediante la AWS AppConfig consola. También puede editar marcas de características existentes para crear variantes.

**Cómo crear una marca de características con múltiples variantes**

1. Abra la AWS Systems Manager consola en [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. En el panel de navegación, elija **Aplicaciones**, y, a continuación, seleccione una aplicación.

1. En la pestaña **Perfiles de configuración y marcas de características**, elija un perfil de configuración de marca de características existente.

1. En la sección **Marcas**, elija **Agregar nueva marca**.

1. En la sección **Definición de marca de características**, en **Nombre de la marca**, introduzca un nombre.

1. En **Clave de marca**, introduzca un identificador de marca para distinguir las marcas del mismo perfil de configuración. Las marcas del mismo perfil de configuración no puede tener la misma clave. Una vez creada la marca, puede editar el nombre de la marca, pero no su clave. 

1. (Opcional) En el campo **Descripción**, introduzca información sobre esta marca.

1. En la sección **Variantes**, seleccione **Marca multivariante**.

1. (Opcional) En la sección **Atributos de la marca de características**, elija **Definir atributo**. Los atributos le permiten proporcionar valores adicionales dentro de su marca. Para obtener más información sobre los atributos y las restricciones, consulte [Descripción de los atributos de las marcas de características](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes).

   1. En **Clave**, especifique una clave de marca y elija su tipo en la lista **Tipo**. Para obtener información sobre las opciones admitidas en los campos **Valor** y **Restricciones**, consulte la sección sobre los atributos a la que se ha hecho referencia anteriormente.

   1. Seleccione **Valor obligatorio** para especificar si se requiere un valor de atributo.

   1. Para añadir atributos adicionales, elija **Definir atributo**.

   1. Seleccione **Aplicar** para guardar los cambios en los atributos.

1. En la sección **Variantes de la marca de características**, seleccione **Crear variante**.

   1. En **Nombre de la variante**, introduzca un nombre.

   1. Use la opción **Valor activado** para habilitar la variante.

   1. En el cuadro de texto **Regla**, introduzca una regla.

   1. Use las opciones **Crear variante** > **Crear variante arriba** o **Crea una variante a continuación** para crear variantes adicionales para esta marca. 

   1. En la sección **Variante predeterminada**, use la opción **Valor activado** para habilitar la variante predeterminada. Si lo desea, proporcione valores para los atributos definidos en el paso 10.

   1. Seleccione **Aplicar**.

1. Compruebe los detalles de la marca y sus variantes, y elija **Crear marca**.

Para obtener información sobre cómo implementar su nueva marca de características con variantes, consulte [Implementación de indicadores de características y datos de configuración en AWS AppConfig](deploying-feature-flags.md).

## Creación de una marca de características con múltiples variantes (línea de comandos)
<a name="appconfig-creating-multi-variant-feature-flags-procedures-commandline"></a>

El siguiente procedimiento describe cómo utilizar AWS Command Line Interface (en Linux o Windows) o las Herramientas para Windows PowerShell para crear un indicador de función con varias variantes para un perfil de configuración existente. También puede editar marcas de características existentes para crear variantes.

**Antes de empezar**  
Complete las siguientes tareas antes de crear una marca de características con múltiples variantes utilizando AWS CLI.
+ Cree un perfil de configuración de marca de características. Para obtener más información, consulte [Crear un perfil de configuración de indicadores de características en AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md).
+ Actualice a la versión de AWS CLI más reciente. Para obtener más información, consulte [Instalación o actualización a la última versión de AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) en la *Guía del usuario de la AWS Command Line Interface *.

**Cómo crear una marca de características con múltiples variantes**

1. Cree un archivo de configuración en su equipo local que especifique los detalles de la marca con múltiples variantes que desea crear. Guarde el archivo con una extensión de archivo `.json`. El archivo debe cumplir con el esquema JSON de [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). El contenido del esquema del archivo de configuración será similar al siguiente.

   ```
   {
     "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"
   }
   ```

   A continuación, se muestra un ejemplo con tres variantes y la variante predeterminada.

   ```
   {
     "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. Utilice la API de `CreateHostedConfigurationVersion` para guardar los datos de configuración de su marca de características en 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`Contiene los datos de configuración, que incluyen algunos metadatos AWS AppConfig generados.
**nota**  
Al crear la versión de configuración alojada, AWS AppConfig verifica que los datos se ajusten al esquema [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 además, valida que cada atributo del indicador de entidad de sus datos satisfaga las restricciones que ha definido para esos atributos.

# Descripción de la referencia de tipo de AWS.AppConfig.FeatureFlags
<a name="appconfig-type-reference-feature-flags"></a>

Utilice el esquema JSON de `AWS.AppConfig.FeatureFlags` como referencia para crear los datos de configuración de su marca de características.

```
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "definitions": {
    "flagSetDefinition": {
      "type": "object",
      "properties": {
        "version": {
          "$ref": "#/definitions/flagSchemaVersions"
        },
        "flags": {
          "$ref": "#/definitions/flagDefinitions"
        },
        "values": {
          "$ref": "#/definitions/flagValues"
        }
      },
      "required": ["version"],
      "additionalProperties": false
    },
    "flagDefinitions": {
      "type": "object",
      "patternProperties": {
        "^[a-z][a-zA-Z\\d_-]{0,63}$": {
          "$ref": "#/definitions/flagDefinition"
        }
      },
      "additionalProperties": false
    },
    "flagDefinition": {
      "type": "object",
      "properties": {
        "name": {
          "$ref": "#/definitions/customerDefinedName"
        },
        "description": {
          "$ref": "#/definitions/customerDefinedDescription"
        },
        "_createdAt": {
          "type": "string"
        },
        "_updatedAt": {
          "type": "string"
        },
        "_deprecation": {
          "type": "object",
          "properties": {
            "status": {
              "type": "string",
              "enum": ["planned"]
            },
            "date": {
              "type": "string",
              "format": "date"
            }
          },
         "additionalProperties": false
        },
        "attributes": {
          "$ref": "#/definitions/attributeDefinitions"
        }
      },
      "additionalProperties": false
    },
    "attributeDefinitions": {
      "type": "object",
      "patternProperties": {
        "^[a-z][a-zA-Z\\d_-]{0,63}$": {
          "$ref": "#/definitions/attributeDefinition"
        }
      },
      "maxProperties": 25,
      "additionalProperties": false
    },
    "attributeDefinition": {
      "type": "object",
      "properties": {
        "description": {
          "$ref": "#/definitions/customerDefinedDescription"
        },
        "constraints": {
          "oneOf": [
            { "$ref": "#/definitions/numberConstraints" },
            { "$ref": "#/definitions/stringConstraints" },
            { "$ref": "#/definitions/arrayConstraints" },
            { "$ref": "#/definitions/boolConstraints" }
          ]
        }
      },
      "additionalProperties": false
    },
    "flagValues": {
      "type": "object",
      "patternProperties": {
        "^[a-z][a-zA-Z\\d_-]{0,63}$": {
          "$ref": "#/definitions/flagValue"
        }
      },
      "additionalProperties": false
    },
    "flagValue": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "_createdAt": {
          "type": "string"
        },
        "_updatedAt": {
          "type": "string"
        },
        "_variants": {
          "type": "array",
          "maxLength": 32,
          "items": {
            "$ref": "#/definitions/variant"
          }
        }
      },
      "patternProperties": {
        "^[a-z][a-zA-Z\\d_-]{0,63}$": {
          "$ref": "#/definitions/attributeValue",
          "maxProperties": 25
        }
      },
      "additionalProperties": false
    },
    "attributeValue": {
      "oneOf": [
        { "type": "string", "maxLength": 1024 },
        { "type": "number" },
        { "type": "boolean" },
        {
          "type": "array",
          "oneOf": [
            {
              "items": {
                "type": "string",
                "maxLength": 1024
              }
            },
            {
              "items": {
                "type": "number"
              }
            }
          ]
        }
      ],
      "additionalProperties": false
    },
    "stringConstraints": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": ["string"]
        },
        "required": {
          "type": "boolean"
        },
        "pattern": {
          "type": "string",
          "maxLength": 1024
        },
        "enum": {
          "type": "array",
          "maxLength": 100,
          "items": {
            "oneOf": [
              {
                "type": "string",
                "maxLength": 1024
              },
              {
                "type": "integer"
              }
            ]
          }
        }
      },
      "required": ["type"],
      "not": {
        "required": ["pattern", "enum"]
      },
      "additionalProperties": false
    },
    "numberConstraints": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": ["number"]
        },
        "required": {
          "type": "boolean"
        },
        "minimum": {
          "type": "integer"
        },
        "maximum": {
          "type": "integer"
        }
      },
      "required": ["type"],
      "additionalProperties": false
    },
    "arrayConstraints": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": ["array"]
        },
        "required": {
          "type": "boolean"
        },
        "elements": {
          "$ref": "#/definitions/elementConstraints"
        }
      },
      "required": ["type"],
      "additionalProperties": false
    },
    "boolConstraints": {
      "type": "object",
      "properties": {
        "type": {
          "type": "string",
          "enum": ["boolean"]
        },
        "required": {
          "type": "boolean"
        }
      },
      "required": ["type"],
      "additionalProperties": false
    },
    "elementConstraints": {
      "oneOf": [
        { "$ref": "#/definitions/numberConstraints" },
        { "$ref": "#/definitions/stringConstraints" }
      ]
    },
    "variant": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        },
        "name": {
          "$ref": "#/definitions/customerDefinedName"
        },
        "rule": {
          "type": "string",
          "maxLength": 16384
        },
        "attributeValues": {
          "type": "object", 
          "patternProperties": {
            "^[a-z][a-zA-Z\\d_-]{0,63}$": {
              "$ref": "#/definitions/attributeValue"
            }
          },
          "maxProperties": 25,
          "additionalProperties": false
        }
      },
      "required": ["name", "enabled"],
      "additionalProperties": false
    },
    "customerDefinedName": {
      "type": "string",
      "pattern": "^[^\\n]{1,64}$"
    },
    "customerDefinedDescription": {
      "type": "string",
      "maxLength": 1024
    },
    "flagSchemaVersions": {
      "type": "string",
      "enum": ["1"]
    }
  },
  "type": "object",
  "$ref": "#/definitions/flagSetDefinition",
  "additionalProperties": false
}
```

**importante**  
Para recuperar los datos de configuración de las marcas de características, su aplicación debe llamar a la API `GetLatestConfiguration`. No puede recuperar los datos de configuración de las marcas de características mediante una llamada a `GetConfiguration`, lo cual está obsoleto. Para obtener más información, consulta [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetLatestConfiguration.html) en la *AWS AppConfig Referencia de la API de *.

Cuando la aplicación llama [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetLatestConfiguration.html)y recibe una configuración recién implementada, se elimina la información que define los indicadores y atributos de las características. El JSON simplificado contiene un mapa de claves que coinciden con cada una de las claves de marca que especificó. El JSON simplificado también contiene valores asignados de `true` o `false` para el atributo `enabled`. Si una marca establece `enabled` en `true`, también estará presente cualquier atributo de la marca. El siguiente esquema JSON describe el formato de la salida JSON.

```
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "patternProperties": {
    "^[a-z][a-zA-Z\\d_-]{0,63}$": {
      "$ref": "#/definitions/attributeValuesMap"
    }
  },
  "additionalProperties": false,
  "definitions": {
    "attributeValuesMap": {
      "type": "object",
      "properties": {
        "enabled": {
          "type": "boolean"
        }
      },
      "required": ["enabled"],
      "patternProperties": {
        "^[a-z][a-zA-Z\\d_-]{0,63}$": {
          "$ref": "#/definitions/attributeValue"
        }
      },
      "maxProperties": 25,
      "additionalProperties": false
    },
    "attributeValue": {
      "oneOf": [
        { "type": "string","maxLength": 1024 },
        { "type": "number" },
        { "type": "boolean" },
        {
          "type": "array",
          "oneOf": [
            {
              "items": {
                "oneOf": [
                  {
                    "type": "string",
                    "maxLength": 1024
                  }
                ]
              }
            },
            {
              "items": {
                "oneOf": [
                  {
                    "type": "number"
                  }
                ]
              }
            }
          ]
        }
      ],
      "additionalProperties": false
    }
  }
}
```

# Guardado de una versión de marca de características anterior en una versión nueva
<a name="appconfig-creating-configuration-profile-feature-flags-editing-version"></a>

Al actualizar un indicador de función, guarda AWS AppConfig automáticamente los cambios en una nueva versión. Si desea utilizar una versión de marca de características anterior, debe copiarla en una versión preliminar y, a continuación, guardarla. No puede editar ni guardar los cambios de una versión de marca de características anterior sin guardarlos en una versión nueva. 

**Para editar una versión de marca de características anterior y guardarla en una versión nueva**

1. Abre la AWS Systems Manager consola en [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. En el panel de navegación, elija **Aplicaciones** y, a continuación, elija la aplicación con la marca de características que desea editar y guardar en una versión nueva.

1. En la pestaña **Perfiles de configuración y marcas de características**, elija el perfil de configuración con la marca de características que desea editar y guárdelo en una versión nueva.

1. En la pestaña **Marcas de características**, use la lista **Versión** para elegir la versión que desea editar y guardar en una versión nueva.

1. Seleccione **Copiar en versión preliminar**.

1. En el campo **Etiqueta de la versión**, introduzca una etiqueta nueva (opcional, pero recomendable).

1. En el campo **Descripción de la versión**, introduzca una descripción nueva (opcional, pero recomendable).

1. Seleccione **Guardar versión**.

1. Seleccione **Iniciar implementación** para implementar la nueva versión.