

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Criando um perfil de configuração de sinalizador de recurso no AWS AppConfig
<a name="appconfig-creating-configuration-and-profile-feature-flags"></a>

Você pode usar sinalizadores de recursos para ativar ou desativar recursos em seus aplicativos ou para configurar características diferentes dos recursos do seu aplicativo usando atributos de sinalizadores. AWS AppConfig armazena configurações de sinalizadores de recursos no repositório de configurações AWS AppConfig hospedado em um formato de sinalizador de recurso que contém dados e metadados sobre seus sinalizadores e os atributos do sinalizador.

**nota**  
Ao criar um perfil de configuração do sinalizador de recurso, você pode criar um sinalizador de recurso básico como parte do fluxo de trabalho do perfil de configuração. AWS AppConfig também oferece suporte a sinalizadores de recursos de várias variantes. Os *sinalizadores de atributos multivariante* permitem definir um conjunto de possíveis valores de sinalizador a serem exibidos para uma solicitação. Ao solicitar um sinalizador configurado com variantes, seu aplicativo fornece um contexto que é AWS AppConfig avaliado em relação a um conjunto de regras definidas pelo usuário. Dependendo do contexto especificado na solicitação e das regras definidas para a variante, AWS AppConfig retorna valores de sinalizadores diferentes para o aplicativo.  
Para criar sinalizadores de atributos multivariante, primeiro crie um perfil de configuração e, depois, edite todos os sinalizadores no perfil de configuração para adicionar variantes. Para obter mais informações, consulte [Criar sinalizadores de atributos multivariante](appconfig-creating-multi-variant-feature-flags.md).

**Topics**
+ [

## Noções básicas sobre atributos do sinalizador de atributos
](#appconfig-creating-configuration-profile-feature-flag-attributes)
+ [

# Criar um perfil de configuração de sinalizador de atributos (console)
](appconfig-creating-feature-flag-configuration-create-console.md)
+ [

# Criar um perfil de configuração de sinalizador de atributos (linha de comandos)
](appconfig-creating-feature-flag-configuration-commandline.md)
+ [

# Criar sinalizadores de atributos multivariante
](appconfig-creating-multi-variant-feature-flags.md)
+ [

# Noções básicas sobre a referência de tipo para AWS.AppConfig.FeatureFlags
](appconfig-type-reference-feature-flags.md)
+ [

# Salvar uma versão anterior do sinalizador de atributos em uma nova versão
](appconfig-creating-configuration-profile-feature-flags-editing-version.md)

## Noções básicas sobre atributos do sinalizador de atributos
<a name="appconfig-creating-configuration-profile-feature-flag-attributes"></a>

Ao criar um perfil de configuração de sinalizador de atributos ou criar outro sinalizador em um perfil de configuração existente, é possível especificar atributos e restrições correspondentes para o sinalizador. Atributo é um campo que você associa ao sinalizador de atributos para expressar propriedades relacionadas a ele. Os atributos são fornecidos à aplicação com a chave do sinalizador e o valor `enable` ou `disable` do sinalizador.

As restrições impedem que quaisquer valores de atributo inesperados sejam implantados na aplicação. A imagem a seguir mostra um exemplo.

![\[Exemplo de atributos de sinalizador para um sinalizador de AWS AppConfig recurso\]](http://docs.aws.amazon.com/pt_br/appconfig/latest/userguide/images/appconfig-flag-attributes.png)


**nota**  
Observe as informações a seguir sobre atributos do sinalizador.  
Para nomes de atributos, a palavra “ativado” é reservada. Você não pode criar nenhum atributo de sinalizadores de atributos chamado “ativado”. Não há outras palavras reservadas.
Os atributos de um sinalizador de atributos só são incluídos na resposta de `GetLatestConfiguration` se esse sinalizador estiver ativado. 
As chaves de atributo de um sinalizador específico devem ser exclusivas. 

AWS AppConfig suporta os seguintes tipos de atributos de bandeira e suas restrições correspondentes.

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

# Criar um perfil de configuração de sinalizador de atributos (console)
<a name="appconfig-creating-feature-flag-configuration-create-console"></a>

Use o procedimento a seguir para criar um perfil de configuração do sinalizador de AWS AppConfig recurso usando o AWS AppConfig console. Ao criar o perfil de configuração, você também pode criar um sinalizador de atributos básico. 

**Para criar um perfil de configuração**

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

1. No painel de navegação, escolha **Aplicações** e selecione uma aplicação que você criou em [Criando um namespace para seu aplicativo no AWS AppConfig](appconfig-creating-namespace.md).

1. Na guia **Perfis de configuração e sinalizadores de atributos**, selecione **Criar configuração**.

1. Na seção **Opções de configuração**, escolha **sinalizador de atributos**.

1. Na seção **Perfil de configuração**, em **ID do perfil de configuração**, insira um nome.

1. (Opcional) Expanda **Descrição** e insira uma descrição.

1. (Opcional) Expanda **Opções adicionais** e conclua o seguinte, conforme necessário.

   1. Na lista **Criptografia**, escolha uma chave AWS Key Management Service (AWS KMS) na lista. Essa chave gerenciada pelo cliente permite que você criptografe novas versões de dados de configuração no repositório de configuração AWS AppConfig hospedado. Para ter mais informações sobre essa chave, consulte **AWS AppConfig supports customer manager keys** em [Segurança em AWS AppConfig](appconfig-security.md).

   1. Na seção **Tags**, selecione **Adicionar nova tag** e especifique uma chave e um valor opcional. 

1. Escolha **Próximo**.

1. Na seção **Definição de sinalizador de atributos**, em **Nome do sinalizador**, insira um nome.

1. Em **Chave de sinalizador**, insira um identificador de sinalizador para distinguir os sinalizadores no mesmo perfil de configuração. Os sinalizadores no mesmo perfil de configuração não podem ter a mesma chave. Depois que o sinalizador for criado, você poderá editar o nome do sinalizador, mas não a chave do sinalizador. 

1. (Opcional) Expanda **Descrição** e insira informações sobre esse sinalizador.

1. Selecione **Este é um sinalizador de curto prazo** e, opcionalmente, escolha uma data em que o sinalizador deve ser desativado ou excluído. AWS AppConfig *não* desativa o sinalizador na data de suspensão de uso. 

1. (Opcional) Na seção **Atributos do sinalizador de atributos**, selecione **Definir atributo**. Os atributos permitem que você forneça valores adicionais em seu sinalizador. Para ter mais informações sobre atributos e restrições, consulte [Noções básicas sobre atributos do sinalizador de atributos](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes).

   1. Em **Chave**, especifique uma chave de sinalizador e escolha o tipo na lista **Tipo**. Para ter informações sobre as opções aceitas para os campos **Valor** e **Restrições**, consulte a seção mencionada anteriormente sobre atributos.

   1. Selecione **Valor obrigatório** para especificar se um valor de atributo é obrigatório.

   1. Selecione **Definir atributo** para adicionar outros atributos.

1. Na seção **Valor do sinalizador de atributos**, escolha **Habilitado** para habilitar o sinalizador. Use esse mesmo botão para desabilitar um sinalizador quando ele atingir uma data de depreciação especificada, se aplicável.

1. Escolha **Próximo**.

1. Na página **Revisar e salvar**, verifique os detalhes do sinalizador e **Salve e continue a implantação**.

Vá para [Implantando sinalizadores de recursos e dados de configuração no AWS AppConfig](deploying-feature-flags.md).

# Criar um perfil de configuração de sinalizador de atributos (linha de comandos)
<a name="appconfig-creating-feature-flag-configuration-commandline"></a>

O procedimento a seguir descreve como usar o AWS Command Line Interface (no Linux ou no Windows) ou o Tools for Windows PowerShell para criar um perfil de configuração do sinalizador de AWS AppConfig recurso. Ao criar o perfil de configuração, você também pode criar um sinalizador de atributos básico.

**Como criar uma configuração de sinalizador de atributos**

1. Abra AWS CLI o.

1. Crie um perfil de configuração de sinalizadores de atributos especificando seu **Tipo** como `AWS.AppConfig.FeatureFlags`. O perfil de configuração deve usar `hosted` para o URI de localização.

------
#### [ 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. Crie seus dados de configuração do sinalizador de atributos. Seus dados devem estar no formato JSON e estar em conformidade com o esquema JSON `AWS.AppConfig.FeatureFlags`. Para obter mais informações sobre o esquema, consulte [Noções básicas sobre a referência de tipo para AWS.AppConfig.FeatureFlags](appconfig-type-reference-feature-flags.md).

1. Use a API `CreateHostedConfigurationVersion` para salvar seus dados de configuração do sinalizador de atributos no 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
   ```

------

   O comando carrega o conteúdo especificado para o parâmetro `Content` do disco. O conteúdo deve ser semelhante ao exemplo a seguir.

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

   O sistema retorna informações como estas.

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

------

   O `service_returned_content_file` contém seus dados de configuração que incluem alguns metadados AWS AppConfig gerados.
**nota**  
Ao criar a versão de configuração hospedada, AWS AppConfig verifica se seus dados estão em conformidade com o esquema `AWS.AppConfig.FeatureFlags` JSON. AWS AppConfig além disso, valida se cada atributo do sinalizador de recurso em seus dados satisfaz as restrições que você definiu para esses atributos.

# Criar sinalizadores de atributos multivariante
<a name="appconfig-creating-multi-variant-feature-flags"></a>

As variantes de sinalizador de atributos permitem definir um conjunto de possíveis valores de sinalizador a serem exibidos para uma solicitação. Também é possível configurar diferentes status (habilitado ou desabilitado) para sinalizadores multivariante. Ao solicitar um sinalizador configurado com variantes, seu aplicativo fornece um contexto que é AWS AppConfig avaliado em relação a um conjunto de regras definidas pelo usuário. Dependendo do contexto especificado na solicitação e das regras definidas para a variante, AWS AppConfig retorna valores de sinalizadores diferentes para o aplicativo.

A captura de tela a seguir mostra um exemplo de sinalizador de atributos com três variantes definidas pelo usuário e a variante padrão.

![\[Um exemplo de captura de tela de um sinalizador de atributos com variantes.\]](http://docs.aws.amazon.com/pt_br/appconfig/latest/userguide/images/flag-variant-example.png)


**Topics**
+ [

# Noções básicas sobre conceitos de sinalizadores de atributos multivariante e casos de uso comuns
](appconfig-creating-multi-variant-feature-flags-concepts.md)
+ [

# Noções básicas sobre as regras de sinalizador de atributos multivariante
](appconfig-creating-multi-variant-feature-flags-rules.md)
+ [

# Criar um sinalizador de atributos multivariante
](appconfig-creating-multi-variant-feature-flags-procedures.md)

# Noções básicas sobre conceitos de sinalizadores de atributos multivariante e casos de uso comuns
<a name="appconfig-creating-multi-variant-feature-flags-concepts"></a>

Para ajudar você a entender melhor as variantes de sinalizador de atributos, esta seção explica os conceitos de variante de sinalizador e os casos de uso comuns.

**Conceitos**
+ **Sinalizador de recurso**: um tipo de AWS AppConfig configuração usado para controlar o comportamento de um recurso em um aplicativo. Um sinalizador tem um status (habilitado ou desabilitado) e um conjunto opcional de atributos que contém valores arbitrários de string, de matriz, numéricos ou boolianos.
+ **Variante de sinalizador de atributos**: uma combinação específica de valores de status e de atributos pertencentes a um sinalizador de atributos. Um sinalizador de atributos pode ter diversas variantes.
+ **Regra de variante**: uma expressão definida pelo usuário usada para selecionar uma variante de sinalizador de atributos. Cada variante tem sua própria regra que AWS AppConfig avalia para determinar se deve devolvê-la ou não.
+ **Variante padrão**: uma variante especial que é exibida quando nenhuma outra é selecionada. Todos os sinalizadores de atributos multivariante têm uma variante padrão.

  A variante padrão deve ser a última na sua ordem de variantes e não pode ter regras associadas a ela. Se não estiver definido por último, AWS AppConfig retornará a `BadRequestException` quando você tentar criar o sinalizador de várias variantes.
+ **Contexto**: chaves e valores definidos pelo usuário transmitidos ao AWS AppConfig no momento da recuperação da configuração. Os valores de contexto são usados durante a avaliação da regra para selecionar a variante de sinalizador de atributos a ser exibida.

**nota**  
AWS AppConfig o agente avalia as regras variantes e determina qual regra se aplica à solicitação com base no contexto fornecido. Para saber mais sobre como recuperar os sinalizadores de atributos multivariante, consulte [Recuperar sinalizadores de atributos básicos e multivariante](appconfig-integration-retrieving-feature-flags.md).

**Casos de uso comuns**

Esta seção descreve dois casos de uso comuns para variantes de sinalizador de atributos.

*Segmentação de usuários*

A segmentação de usuários é o processo de dividir usuários com base em determinados atributos. Por exemplo, é possível usar variantes de sinalizador para expor um recurso a alguns usuários, mas não a outros, com base em dados, como ID do usuário, localização geográfica, tipo de dispositivo ou frequência de compra.

Usando o exemplo da frequência de compra, suponha que sua aplicação de comércio eletrônico comporte um recurso para aumentar a fidelidade do cliente. É possível usar variantes de sinalizador para configurar diferentes tipos de incentivo a serem exibidos a um usuário com base na última vez em que ele comprou algo. Um novo usuário pode receber um pequeno desconto para incentivá-lo a se tornar um cliente, enquanto um cliente recorrente poderá receber um desconto maior se comprar algo de uma nova categoria.

*Divisão de tráfego*

Divisão de tráfego é o processo de selecionar uma variante de sinalizador aleatória, mas consistente, com base em um valor de contexto definido por você. Por exemplo, talvez você queira realizar um experimento em que uma pequena porcentagem de seus usuários (identificados pelo ID de usuário) veja uma variante específica. Ou talvez você queira realizar uma distribuição gradual de recursos, em que um deles seja exposto primeiro a 5% dos usuários, depois a 15%, depois a 40% e, por fim, a 100%, mantendo uma experiência de usuário consistente durante toda a distribuição.

Usando o exemplo de experimentação, é possível usar variantes de sinalizador para testar um novo estilo de botão para a ação principal na página inicial da aplicação e ver se ele gera mais cliques. Em seu experimento, você pode criar uma variante de sinalizador com uma regra de divisão de tráfego que selecione 5% dos usuários para ver o novo estilo, enquanto a variante padrão indica os usuários que devem continuar vendo o estilo existente. Se o experimento for bem-sucedido, você poderá aumentar o valor percentual ou até mesmo determinar que essa variante seja o padrão.

# Noções básicas sobre as regras de sinalizador de atributos multivariante
<a name="appconfig-creating-multi-variant-feature-flags-rules"></a>

Ao criar uma variante de sinalizador de atributos, especifique uma regra para ela. Regras são expressões que usam valores de contexto como entrada e produzem um resultado booliano como saída. Por exemplo, é possível definir uma regra para selecionar uma variante de sinalizador para usuários beta, identificada pelo ID da conta, testando uma atualização da interface de usuário. No caso desse cenário, faça o seguinte:

1. Crie um perfil de configuração de sinalizador de atributos chamado *Atualização da interface de usuário.*

1. Crie um sinalizador de atributos chamado *ui\$1refresh*.

1. Depois de criá-lo, edite-o para adicionar variantes.

1. Crie e habilite uma nova variante chamada *BetaUsers*.

1. Defina uma regra para selecionar *BetaUsers*a variante se o ID da conta do contexto da solicitação estiver em uma lista de contas IDs aprovadas para visualizar a nova experiência beta.

1. Confirme se o status da variante padrão está definido como **Desativado**.

**nota**  
As variantes são avaliadas como uma lista ordenada com base na ordem em que são definidas no console. A variante no início da lista será avaliada primeiro. Se nenhuma regra corresponder ao contexto fornecido, AWS AppConfig retornará a variante Default.

Quando AWS AppConfig processa a solicitação do sinalizador de recurso, ele compara primeiro o contexto fornecido, que inclui o accountId (neste exemplo) com a variante. BetaUsers Se o contexto corresponder à regra de BetaUsers, AWS AppConfig retornará os dados de configuração da experiência beta. Se o contexto não incluir uma ID da conta ou se a ID da conta terminar em algo diferente de 123, AWS AppConfig retornará os dados de configuração da regra padrão, o que significa que o usuário visualiza a experiência atual na produção.

**nota**  
Para obter mais informações sobre como recuperar os sinalizadores de atributos multivariante, consulte [Recuperar sinalizadores de atributos básicos e multivariante](appconfig-integration-retrieving-feature-flags.md).

# Definir regras para sinalizadores de atributos multivariante
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators"></a>

Regra de variante é uma expressão composta de um ou mais operandos e de um operador. Operando é um valor específico usado durante a avaliação de uma regra. Os valores de operando podem ser estáticos, como um número literal ou uma string, ou variáveis, como o valor encontrado em um contexto ou o resultado de outra expressão. Um operador, como “maior que”, é um teste ou uma ação aplicada aos respectivos operandos que produz um valor. Uma expressão de regra de variante deve produzir um valor “true” ou “false” para ser válida.

**Operandos**


****  

| Tipo | Description | Exemplo | 
| --- | --- | --- | 
|  String  |  Uma sequência de caracteres UTF-8, entre aspas duplas.  |  <pre>"apple", "Ḽơᶉëᶆ ȋṕšᶙṁ"</pre>  | 
|  Inteiro  |  Um valor inteiro de 64 bits.  |  <pre>-7, 42 </pre>  | 
|  Float  |  Um valor de ponto flutuante IEEE 754 de 64 bits.  |  <pre>3.14, 1.234e-5</pre>  | 
|  Timestamp  |  Um momento específico, conforme descrito na [nota do W3C sobre formatos de data e hora](https://www.w3.org/TR/NOTE-datetime).  |  <pre>2012-03-04T05:06:07-08:00, 2024-01</pre>  | 
|  Booleano  |  Um valor verdadeiro ou falso.  |  <pre>true, false</pre>  | 
|  Valor de contexto.  |  Um valor parametrizado na forma de \$1 *key* que é recuperado do contexto durante a avaliação da regra.  |  <pre>$country, $userId</pre>  | 

**Operadores de comparação**


****  

| Operador | Description | Exemplo | 
| --- | --- | --- | 
|  eq  |  Determina se um valor de contexto é igual a um valor específico.  |  <pre>(eq $state "Virginia")</pre>  | 
|  gt  |  Determina se um valor de contexto é maior do que um valor específico.  |  <pre>(gt $age 65)</pre>  | 
|  gte  |  Determina se um valor de contexto é maior ou igual a um valor específico.  |  <pre>(gte $age 65)</pre>  | 
|  lt  |  Determina se um valor de contexto é menor do que um valor específico.  |  <pre>(lt $age 65)</pre>  | 
|  lte  |  Determina se um valor de contexto é menor ou igual a um valor específico.  |  <pre>(lte $age 65)</pre>  | 

**Operadores lógicos**


****  

| Operador | Description | Exemplo | 
| --- | --- | --- | 
|  and  |  Determina se os dois operandos são verdadeiros.  |  <pre>(and <br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  or  |  Determina se pelo menos um dos operandos é verdadeiro.  |  <pre>(or<br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  not  |  Reverte o valor de uma expressão.  |  <pre>(not (eq $state "Virginia"))</pre>  | 

**Operadores personalizados**


****  

| Operador | Description | Exemplo | 
| --- | --- | --- | 
|  begins\$1with  |  Determina se um valor de contexto começa com um prefixo específico.  |  <pre>(begins_with $state "A")</pre>  | 
|  ends\$1with  |  Determina se um valor de contexto termina com um prefixo específico.  |  <pre>(ends_with $email "amazon.com")</pre>  | 
|  contém  |  Determina se um valor de contexto contém uma substring específica.  |  <pre>(contains $promoCode "WIN")</pre>  | 
|  in  |  Determina se um valor de contexto está contido em uma lista de constantes.  |  <pre>(in $userId ["123", "456"])</pre>  | 
|  matches  |  Determina se um valor de contexto corresponde a um padrão regex específico.  |  <pre>(matches in::$greeting pattern::"h.*y")</pre>  | 
|  exists  |  Determina se algum valor foi fornecido para uma chave de contexto.  |  <pre>(exists key::"country")</pre>  | 
|  dividir  |  Avalia uma porcentagem específica de tráfego como `true` com base em um hash consistente dos valores de contexto fornecidos. Para obter uma explicação detalhada sobre como o `split` funciona, confira a próxima seção deste tópico, [Entender o operador split](appconfig-creating-multi-variant-feature-flags-rules.md#appconfig-creating-multi-variant-feature-flags-rules-operators-split). Observe que `seed` é uma propriedade opcional. Se você não especificar `seed`, o hash será *localmente* consistente, o que significa que o tráfego será dividido de forma consistente para esse sinalizador, mas outros sinalizadores que receberem o mesmo valor de contexto poderão dividir o tráfego de maneira diferente. Se `seed` for fornecido, cada valor exclusivo dividirá o tráfego de forma consistente entre sinalizadores de atributos, perfis de configuração e Contas da AWS.  |  <pre>(split pct::10 by::$userId seed::"abc")</pre>  | 

## Entender o operador split
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators-split"></a>

A seção a seguir descreve como o operador `split` se comporta quando usado em diferentes cenários. Como lembrete, `split` é avaliado como `true` para uma determinada porcentagem de tráfego com base em um hash consistente do valor de contexto fornecido. Para entender melhor, considere o seguinte cenário de linha de base que usa a divisão com duas variantes:

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

Como esperado, fornecer um conjunto aleatório de valores `uniqueId` produz uma distribuição que é aproximadamente:

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

Se você adicionar uma terceira variante, mas usar a mesma porcentagem de divisão da seguinte maneira:

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

A distribuição fica da seguinte forma:

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

Essa distribuição possivelmente inesperada acontece porque cada regra de variante é avaliada em ordem, e a primeira correspondência define a variante retornada. Quando a regra A é avaliada, 20% dos valores `uniqueId` correspondem a ela, então a primeira variante é retornada. Em seguida, a regra B é avaliada. No entanto, todos os valores `uniqueId` que corresponderiam à segunda instrução dividida já foram correspondidos pela regra de variante A. Portanto, nenhum valor corresponde a B. Em vez disso, a variante padrão é retornada.

Agora, considere um terceiro exemplo.

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

Como no exemplo anterior, os primeiros 20% dos valores `uniqueId` correspondem à regra A. Para a regra da variante B, 25% de todos os valores `uniqueId` seriam correspondentes. Porém, a maioria deles correspondia à regra A. Isso deixa 5% do total para a variante B, com o restante recebendo a variante C. A distribuição teria a seguinte aparência:

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

**Usar a propriedade `seed`**  
Você pode usar a propriedade `seed` para garantir que o tráfego seja dividido de maneira consistente para um determinado valor de contexto, independentemente de onde o operador split seja usado. Se você não especificar `seed`, o hash será *localmente* consistente, o que significa que o tráfego será dividido de forma consistente para esse sinalizador, mas outros sinalizadores que receberem o mesmo valor de contexto poderão dividir o tráfego de maneira diferente. Se `seed` for fornecido, cada valor exclusivo dividirá o tráfego de forma consistente entre sinalizadores de atributos, perfis de configuração e Contas da AWS.

Os clientes costumam usar o mesmo valor `seed` em todas as variantes em um sinalizador ao dividir o tráfego na mesma propriedade de contexto. No entanto, às vezes pode fazer sentido usar um valor de semente diferente. Confira um exemplo que usa sementes diferentes para as regras A e B:

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

Como antes, 20% dos valores `uniqueId` equivalentes correspondem à regra A. Isso significa que 80% dos valores são aprovados e testados em relação à regra da variante B. Como a semente é diferente, não há correlação entre os valores que correspondem a A e os que correspondem a B. No entanto, existem somente 80% dos valores `uniqueId` a serem divididos com 25% desse número correspondente à regra B, e 75% não. Isso funciona para a seguinte distribuição:

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

# Criar um sinalizador de atributos multivariante
<a name="appconfig-creating-multi-variant-feature-flags-procedures"></a>

Use os procedimentos desta seção para criar variantes de um sinalizador de atributos.

**Antes de começar**  
Observe as seguintes informações importantes:
+ É possível criar variantes de sinalizadores de atributos existentes editando-os. Não é possível criar variantes de um novo sinalizador de atributos *ao criar um perfil de configuração*. Primeiro, é necessário concluir o fluxo de trabalho de criação do perfil de configuração. Após a criação do perfil de configuração, é possível adicionar variantes a qualquer sinalizador no perfil de configuração. Para ter informações sobre como criar um perfil de configuração, consulte [Criando um perfil de configuração de sinalizador de recurso no AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md).
+ Para recuperar dados de variantes de sinalização de recurso para as plataformas computacionais Amazon EC2, Amazon ECS e Amazon EKS, você deve AWS AppConfig usar a versão 2.0.4416 ou posterior do Agent.
+ Por motivos de desempenho AWS CLI e chamadas do SDK para AWS AppConfig não recuperar dados de variantes. Para obter mais informações sobre o AWS AppConfig Agente, consulte[Como usar o AWS AppConfig Agent para recuperar dados de configuração](appconfig-agent-how-to-use.md).
+ Ao criar uma variante de sinalizador de atributos, especifique uma regra para ela. Regras são expressões que usam o contexto da solicitação como entrada e produzem um resultado booliano como saída. Antes de criar variantes, revise os operandos e os operadores compatíveis para regras de variantes de sinalizador. É possível criar regras antes de criar variantes. Para obter mais informações, consulte [Noções básicas sobre as regras de sinalizador de atributos multivariante](appconfig-creating-multi-variant-feature-flags-rules.md).

**Topics**
+ [

## Criar um sinalizador de atributos multivariante (console)
](#appconfig-creating-multi-variant-feature-flags-procedures-console)
+ [

## Criar um sinalizador de atributos multivariante (linha de comandos)
](#appconfig-creating-multi-variant-feature-flags-procedures-commandline)

## Criar um sinalizador de atributos multivariante (console)
<a name="appconfig-creating-multi-variant-feature-flags-procedures-console"></a>

O procedimento a seguir descreve como criar um sinalizador de recurso de várias variantes para um perfil de configuração existente usando o AWS AppConfig console. Também é possível editar sinalizadores de atributos existentes para criar variantes.

**Como criar um sinalizador de atributos multivariante**

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

1. No painel de navegação, escolha **Aplicações** e selecione uma aplicação.

1. Na guia **Perfis de configuração e sinalizadores de atributoss**, escolha um perfil de configuração de sinalizador de atributos existente.

1. Na seção **Sinalizadores**, escolha **Adicionar novo sinalizador**.

1. Na seção **Definição de sinalizador de atributos**, em **Nome do sinalizador**, insira um nome.

1. Em **Chave de sinalizador**, insira um identificador de sinalizador para distinguir os sinalizadores no mesmo perfil de configuração. Os sinalizadores no mesmo perfil de configuração não podem ter a mesma chave. Depois que o sinalizador for criado, você poderá editar o nome do sinalizador, mas não a chave do sinalizador. 

1. (Opcional) No campo **Descrição**, insira informações sobre esse sinalizador.

1. Na seção **Variantes**, selecione **Sinalizador multivariante**.

1. (Opcional) Na seção **Atributos do sinalizador de atributos**, selecione **Definir atributo**. Os atributos permitem que você forneça valores adicionais em seu sinalizador. Para ter mais informações sobre atributos e restrições, consulte [Noções básicas sobre atributos do sinalizador de atributos](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes).

   1. Em **Chave**, especifique uma chave de sinalizador e escolha o tipo na lista **Tipo**. Para ter informações sobre as opções aceitas para os campos **Valor** e **Restrições**, consulte a seção mencionada anteriormente sobre atributos.

   1. Selecione **Valor obrigatório** para especificar se um valor de atributo é obrigatório.

   1. Selecione **Definir atributo** para adicionar outros atributos.

   1. Selecione **Aplicar** para salvar as alterações de atributo.

1. Na seção **Variantes de sinalizador de atributos**, selecione **Criar variante**.

   1. Em **Nome da variante**, insira um nome.

   1. Use o botão de alternância **Valor habilitado** para habilitar a variante.

   1. Na caixa de texto **Regra**, insira uma regra.

   1. Se quiser criar variantes adicionais para esse sinalizador, use as opções **Criar variante** > **Criar a variante acima** ou **Criar uma variante abaixo**. 

   1. Na seção **Variante padrão**, use a opção **Valor habilitado** para habilitar a variante padrão. Também é possível fornecer valores para os atributos definidos na Etapa 10.

   1. Escolha **Aplicar**.

1. Verifique os detalhes do sinalizador e as respectivas variantes e selecione **Criar sinalizador**.

Para ter informações sobre como implantar um novo sinalizador de atributos com variantes, consulte [Implantando sinalizadores de recursos e dados de configuração no AWS AppConfig](deploying-feature-flags.md).

## Criar um sinalizador de atributos multivariante (linha de comandos)
<a name="appconfig-creating-multi-variant-feature-flags-procedures-commandline"></a>

O procedimento a seguir descreve como usar o AWS Command Line Interface (no Linux ou no Windows) ou o Tools for Windows PowerShell para criar um sinalizador de recurso de várias variantes para um perfil de configuração existente. Também é possível editar sinalizadores de atributos existentes para criar variantes.

**Antes de começar**  
Realize as tarefas a seguir antes de criar um sinalizador de atributos multivariante usando a AWS CLI.
+ Crie um perfil de configuração de sinalizador de atributos. Para obter mais informações, consulte [Criando um perfil de configuração de sinalizador de recurso no AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md).
+ Atualize para a versão mais recente da AWS CLI. Para ter mais informações, consulte [Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) no *Guia do usuário da versão 2 da AWS Command Line Interface *.

**Como criar um sinalizador de atributos multivariante**

1. Crie um arquivo de configuração em sua máquina local que especifique os detalhes do sinalizador multivariante que você deseja criar. Salve o arquivo com a extensão `.json`. O arquivo deve seguir o esquema 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). O conteúdo do esquema do arquivo de configuração será semelhante ao seguinte:

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

   Veja um exemplo com três variantes e a variante padrão.

   ```
   {
     "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. Use a API `CreateHostedConfigurationVersion` para salvar seus dados de configuração do sinalizador de atributos no 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
   ```

------

   O `service_returned_content_file` contém seus dados de configuração que incluem alguns metadados AWS AppConfig gerados.
**nota**  
Ao criar a versão de configuração hospedada, AWS AppConfig verifica se seus dados estão em conformidade com o 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 além disso, valida se cada atributo do sinalizador de recurso em seus dados satisfaz as restrições que você definiu para esses atributos.

# Noções básicas sobre a referência de tipo para AWS.AppConfig.FeatureFlags
<a name="appconfig-type-reference-feature-flags"></a>

Use o esquema JSON `AWS.AppConfig.FeatureFlags` como referência para criar seus dados de configuração do sinalizador de atributos.

```
{
  "$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 dados de configuração do sinalizador de atributos, seu aplicativo deve chamar a API `GetLatestConfiguration`. Não é possível recuperar dados de configuração do sinalizador de atributos chamando `GetConfiguration`, que está obsoleto. Para obter mais informações, consulte [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetLatestConfiguration.html) na *Referência de APIs do AWS AppConfig *.

Quando seu aplicativo chama [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetLatestConfiguration.html)e recebe uma configuração recém-implantada, as informações que definem seus sinalizadores e atributos de recursos são removidas. O JSON simplificado contém um mapa de chaves que correspondem a cada uma das chaves de sinalizadores que você especificou. O JSON simplificado também contém valores `true` ou `false` mapeados para o atributo `enabled`. Se um sinalizador definir `enabled` como `true`, todos os atributos do sinalizador também estarão presentes. O esquema JSON a seguir descreve o formato da saída 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
    }
  }
}
```

# Salvar uma versão anterior do sinalizador de atributos em uma nova versão
<a name="appconfig-creating-configuration-profile-feature-flags-editing-version"></a>

Quando você atualiza um sinalizador de recurso, salva AWS AppConfig automaticamente suas alterações em uma nova versão. Se quiser usar uma versão anterior do sinalizador de atributos, copie-a para uma versão de rascunho e depois salve-a. Não é possível editar e salvar as alterações em uma versão anterior do sinalizador sem salvá-las em uma nova versão. 

**Para editar uma versão anterior do sinalizador de atributos e salvá-la em uma nova versão**

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

1. No painel de navegação, escolha **aplicativos** e, depois, o aplicativo com o sinalizador de atributos que deseja editar e salvar em uma nova versão.

1. Na guia **Perfis de configuração e sinalizadores de atributos**, escolha o perfil de configuração com o sinalizador de atributos que você quer editar e salvar em uma nova versão.

1. Na guia **Sinalizadores de atributos**, use a lista de **versões** para escolher a versão que você quer editar e salvar em uma nova versão.

1. Escolha **Copiar para a versão de rascunho**.

1. No campo **Rótulo da versão**, insira um novo rótulo (opcional, mas recomendado).

1. No campo **Descrição da versão**, insira uma nova descrição (opcional, mas recomendado).

1. Escolha **Salvar versão**.

1. Escolha **Iniciar implantação** para implantar a nova versão.