

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Creazione di un profilo di configurazione in AWS AppConfig
<a name="appconfig-creating-configuration-profile"></a>

*I dati di configurazione* sono una raccolta di impostazioni che influenzano il comportamento dell'applicazione. Un *profilo di configurazione* include, tra le altre cose, un URI che consente di AWS AppConfig localizzare i dati di configurazione nella posizione archiviata e un tipo di configurazione. AWS AppConfig supporta i seguenti tipi di profili di configurazione:
+ **Contrassegni di funzionalità**: è possibile utilizzare i flag di funzionalità per abilitare o disabilitare le funzionalità all'interno delle applicazioni o per configurare caratteristiche diverse delle funzionalità dell'applicazione utilizzando gli attributi dei flag. AWS AppConfig memorizza le configurazioni dei feature flag nell'archivio di configurazione AWS AppConfig ospitato in un formato di feature flag che contiene dati e metadati sui flag e sugli attributi dei flag. L'URI per le configurazioni dei feature flag è semplice. `hosted` 
+ **Configurazioni in formato libero**: una configurazione a forma libera può archiviare dati in uno dei seguenti strumenti e in uno qualsiasi degli strumenti di Systems Servizi AWS Manager seguenti:
  + AWS AppConfig archivio di configurazione ospitato
  + Amazon Simple Storage Service
  + AWS CodePipeline
  + Gestione dei segreti AWS
  + AWS Systems Manager (SSM) Parameter Store
  + Archivio documenti SSM

**Nota**  
Se possibile, consigliamo di ospitare i dati di configurazione nell'archivio di configurazione AWS AppConfig ospitato in quanto offre la maggior parte delle funzionalità e dei miglioramenti.

Ecco alcuni esempi di dati di configurazione per aiutarti a comprendere meglio i diversi tipi di dati di configurazione e come possono essere utilizzati in un feature flag o senza un profilo di configurazione.

 **Dati di configurazione dei flag di funzionalità** 

I seguenti dati di configurazione dei flag di funzionalità abilitano o disabilitano i pagamenti mobili e i pagamenti predefiniti in base alla regione.

------
#### [ JSON ]

```
{
  "allow_mobile_payments": {
    "enabled": false
  },
  "default_payments_per_region": {
    "enabled": true
  }
}
```

------
#### [ YAML ]

```
---
allow_mobile_payments:
  enabled: false
default_payments_per_region:
  enabled: true
```

------

 **Dati di configurazione operativa** 

I seguenti dati di configurazione in formato libero impongono limiti al modo in cui un'applicazione elabora le richieste.

------
#### [ JSON ]

```
{
  "throttle-limits": {
    "enabled": "true",
    "throttles": [
      {
        "simultaneous_connections": 12
      },
      {
        "tps_maximum": 5000
      }
    ],
    "limit-background-tasks": [
      true
    ]
  }
}
```

------
#### [ YAML ]

```
---
throttle-limits:
  enabled: 'true'
  throttles:
  - simultaneous_connections: 12
  - tps_maximum: 5000
  limit-background-tasks:
  - true
```

------

 **Accesso ai dati di configurazione della lista di controllo** 

I seguenti dati di configurazione in formato libero dell'elenco di controllo degli accessi specificano quali utenti o gruppi possono accedere a un'applicazione.

------
#### [ JSON ]

```
{
  "allow-list": {
    "enabled": "true",
    "cohorts": [
      {
        "internal_employees": true
      },
      {
        "beta_group": false
      },
      {
        "recent_new_customers": false
      },
      {
        "user_name": "Jane_Doe"
      },
      {
        "user_name": "John_Doe"
      }
    ]
  }
}
```

------
#### [ YAML ]

```
---
allow-list:
  enabled: 'true'
  cohorts:
  - internal_employees: true
  - beta_group: false
  - recent_new_customers: false
  - user_name: Jane_Doe
  - user_name: Ashok_Kumar
```

------

**Topics**
+ [Creazione di un profilo di configurazione del feature flag in AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md)
+ [Creazione di un profilo di configurazione in formato libero in AWS AppConfig](appconfig-free-form-configurations-creating.md)
+ [Creazione di un profilo di configurazione per fonti di dati non native](appconfig-creating-configuration-profile-other-data-sources.md)

# Creazione di un profilo di configurazione del feature flag in AWS AppConfig
<a name="appconfig-creating-configuration-and-profile-feature-flags"></a>

È possibile utilizzare i flag di funzionalità per abilitare o disabilitare funzionalità all'interno delle applicazioni o per configurare caratteristiche diverse delle funzionalità dell'applicazione utilizzando gli attributi dei flag. AWS AppConfig archivia le configurazioni dei flag di funzionalità nell'archivio di configurazione AWS AppConfig ospitato in un formato di feature flag che contiene dati e metadati sui flag e sugli attributi dei flag.

**Nota**  
Quando create un profilo di configurazione dei feature flag, potete creare un feature flag di base come parte del flusso di lavoro del profilo di configurazione. AWS AppConfig supporta anche i flag di funzionalità multivarianti. *I flag di funzionalità multivarianti* consentono di definire una serie di possibili valori di flag da restituire per una richiesta. Quando si richiede un flag configurato con varianti, l'applicazione fornisce un contesto che AWS AppConfig valuta in base a una serie di regole definite dall'utente. A seconda del contesto specificato nella richiesta e delle regole definite per la variante, AWS AppConfig restituisce valori di flag diversi all'applicazione.  
Per creare flag di funzionalità multivarianti, create prima un profilo di configurazione, quindi modificate tutti i flag all'interno del profilo di configurazione per aggiungere varianti. Per ulteriori informazioni, consulta [Creazione di flag di funzionalità multivarianti](appconfig-creating-multi-variant-feature-flags.md).

**Topics**
+ [Comprensione degli attributi dei feature flag](#appconfig-creating-configuration-profile-feature-flag-attributes)
+ [Creazione di un profilo di configurazione del feature flag (console)](appconfig-creating-feature-flag-configuration-create-console.md)
+ [Creazione di un profilo di configurazione del feature flag (riga di comando)](appconfig-creating-feature-flag-configuration-commandline.md)
+ [Creazione di flag di funzionalità multivarianti](appconfig-creating-multi-variant-feature-flags.md)
+ [Comprensione del tipo di riferimento per AWS.AppConfig.FeatureFlags](appconfig-type-reference-feature-flags.md)
+ [Salvataggio di una versione precedente di Feature Flag in una nuova versione](appconfig-creating-configuration-profile-feature-flags-editing-version.md)

## Comprensione degli attributi dei feature flag
<a name="appconfig-creating-configuration-profile-feature-flag-attributes"></a>

Quando create un profilo di configurazione del feature flag o create un nuovo flag all'interno di un profilo di configurazione esistente, potete specificare gli attributi e i vincoli corrispondenti per il flag. Un attributo è un campo che si associa al feature flag per esprimere le proprietà relative al feature flag. Gli attributi vengono forniti all'applicazione con la chiave flag e il `disable` valore `enable` or del flag.

I vincoli assicurano che nell'applicazione non vengano distribuiti valori di attributo imprevisti. Un esempio è illustrato nell'immagine seguente.

![\[Esempio di attributi di bandiera per un flag di funzionalità AWS AppConfig\]](http://docs.aws.amazon.com/it_it/appconfig/latest/userguide/images/appconfig-flag-attributes.png)


**Nota**  
Notate le seguenti informazioni sugli attributi dei flag.  
Per i nomi degli attributi, la parola «abilitato» è riservata. Non è possibile creare un attributo di feature flag chiamato «enabled». Non ci sono altre parole riservate.
Gli attributi di un flag di funzionalità sono inclusi nella `GetLatestConfiguration` risposta solo se tale flag è abilitato. 
Le chiavi degli attributi Flag per un determinato flag devono essere univoche. 

AWS AppConfig supporta i seguenti tipi di attributi di bandiera e i vincoli corrispondenti.

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

# Creazione di un profilo di configurazione del feature flag (console)
<a name="appconfig-creating-feature-flag-configuration-create-console"></a>

Utilizzate la seguente procedura per creare un profilo di configurazione dei AWS AppConfig feature flag utilizzando la AWS AppConfig console. Al momento della creazione del profilo di configurazione, è anche possibile creare un feature flag di base. 

**Come creare un profilo di configurazione**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. Nel riquadro di navigazione, scegli **Applicazioni**, quindi scegli un'applicazione in cui hai creato. [Creazione di uno spazio dei nomi per l'applicazione in AWS AppConfig](appconfig-creating-namespace.md)

1. Nella scheda **Profili di configurazione e bandiere di funzionalità**, scegli **Crea configurazione**.

1. Nella sezione **Opzioni di configurazione**, scegliete **Feature flag**.

1. Nella sezione **Profilo di configurazione**, per **Nome del profilo di configurazione**, inserisci un nome.

1. (Facoltativo) Espandi **Descrizione** e inserisci una descrizione.

1. (Facoltativo) **Espandi Opzioni aggiuntive** e completa quanto segue, se necessario.

   1. Nell'elenco **Crittografia**, scegliete una chiave AWS Key Management Service (AWS KMS) dall'elenco. Questa chiave gestita dal cliente consente di crittografare le nuove versioni dei dati di configurazione nell'archivio di configurazione AWS AppConfig ospitato. Per ulteriori informazioni su questa chiave, consulta **AWS AppConfig Supporta le chiavi di Customer Manager** in[Sicurezza in AWS AppConfig](appconfig-security.md).

   1. Nella sezione **Tag**, scegli **Aggiungi nuovo tag**, quindi specifica una chiave e un valore opzionale. 

1. Scegli **Next (Successivo)**.

1. Nella sezione **Definizione del flag di funzionalità**, per **Nome bandiera**, inserisci un nome.

1. Per la **chiave Flag**, inserite un identificatore di bandiera per distinguere i flag all'interno dello stesso profilo di configurazione. I flag all'interno dello stesso profilo di configurazione non possono avere la stessa chiave. Dopo aver creato il flag, è possibile modificare il nome del flag, ma non la chiave del flag. 

1. (Facoltativo) Espandi la **descrizione** e inserisci le informazioni su questo contrassegno.

1. Seleziona **Questo è un contrassegno a breve termine** e, facoltativamente, scegli una data in cui disattivare o eliminare il contrassegno. AWS AppConfig *non* disabilita il flag alla data di obsolescenza. 

1. **(Facoltativo) Nella sezione **Attributi del flag Feature, scegliete Definisci attributo**.** Gli attributi consentono di fornire valori aggiuntivi all'interno della bandiera. Per ulteriori informazioni su attributi e vincoli, vedere. [Comprensione degli attributi dei feature flag](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes)

   1. Per **Key**, specificate una chiave di bandiera e sceglietene il tipo dall'elenco **Tipo**. Per informazioni sulle opzioni supportate per i campi **Valore** e **Vincoli**, consultate la sezione precedentemente citata sugli attributi.

   1. Seleziona **Valore richiesto per specificare se il valore** di un attributo è obbligatorio.

   1. Scegliete **Definisci attributo** per aggiungere altri attributi.

1. Nella sezione **Feature flag value**, scegliete **Enabled** per abilitare il flag. Usa lo stesso interruttore per disabilitare un flag quando raggiunge una data di deprecazione specificata, se applicabile.

1. Scegli **Next (Successivo)**.

1. Nella pagina **Rivedi e salva**, verifica i dettagli del flag, quindi **Salva** e continua la distribuzione.

Passa a [Distribuzione di flag di funzionalità e dati di configurazione in AWS AppConfig](deploying-feature-flags.md).

# Creazione di un profilo di configurazione del feature flag (riga di comando)
<a name="appconfig-creating-feature-flag-configuration-commandline"></a>

La procedura seguente descrive come utilizzare AWS Command Line Interface (su Linux o Windows) o Tools for Windows per PowerShell creare un profilo di configurazione dei AWS AppConfig feature flag. Al momento della creazione del profilo di configurazione, è anche possibile creare un flag di funzionalità di base.

**Per creare una configurazione di feature flag**

1. Aprire il AWS CLI.

1. Crea un profilo di configurazione del feature flag specificandone il **tipo** come`AWS.AppConfig.FeatureFlags`. Il profilo di configurazione deve utilizzare `hosted` l'URI della posizione.

------
#### [ 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. Crea i dati di configurazione del tuo feature flag. I tuoi dati devono essere in formato JSON e conformi allo schema `AWS.AppConfig.FeatureFlags` JSON. Per ulteriori informazioni sullo schema, vedere. [Comprensione del tipo di riferimento per AWS.AppConfig.FeatureFlags](appconfig-type-reference-feature-flags.md)

1. Utilizza l'`CreateHostedConfigurationVersion`API per salvare i dati di configurazione del feature flag in 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
   ```

------

   Il comando carica il contenuto specificato per il `Content` parametro dal disco. Il contenuto deve essere simile all'esempio seguente.

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

   Il sistema restituisce informazioni simili alle seguenti.

------
#### [ 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 i dati di configurazione che includono alcuni metadati AWS AppConfig generati.
**Nota**  
Quando crei la versione di configurazione ospitata, AWS AppConfig verifica che i dati siano conformi allo `AWS.AppConfig.FeatureFlags` schema JSON. AWS AppConfig verifica inoltre che ogni attributo feature flag presente nei dati soddisfi i vincoli definiti per tali attributi.

# Creazione di flag di funzionalità multivarianti
<a name="appconfig-creating-multi-variant-feature-flags"></a>

Le varianti dei flag di funzionalità consentono di definire una serie di possibili valori di flag da restituire per una richiesta. È inoltre possibile configurare diversi stati (abilitati o disabilitati) per i flag multivarianti. Quando si richiede un flag configurato con varianti, l'applicazione fornisce un contesto che AWS AppConfig valuta in base a una serie di regole definite dall'utente. A seconda del contesto specificato nella richiesta e delle regole definite per la variante, AWS AppConfig restituisce valori di flag diversi all'applicazione.

La schermata seguente mostra un esempio di feature flag con tre varianti definite dall'utente e la variante predefinita.

![\[Uno screenshot di esempio di un flag di funzionalità con varianti.\]](http://docs.aws.amazon.com/it_it/appconfig/latest/userguide/images/flag-variant-example.png)


**Topics**
+ [Comprensione dei concetti dei feature flag multivarianti e dei casi d'uso comuni](appconfig-creating-multi-variant-feature-flags-concepts.md)
+ [Comprensione delle regole del feature flag multivariante](appconfig-creating-multi-variant-feature-flags-rules.md)
+ [Creazione di un flag di funzionalità multivariante](appconfig-creating-multi-variant-feature-flags-procedures.md)

# Comprensione dei concetti dei feature flag multivarianti e dei casi d'uso comuni
<a name="appconfig-creating-multi-variant-feature-flags-concepts"></a>

Per aiutarti a comprendere meglio le varianti dei flag di funzionalità, questa sezione spiega i concetti relativi alle varianti dei flag e i casi d'uso più comuni.

**Concetti**
+ **Feature flag**: un tipo di AWS AppConfig configurazione utilizzato per controllare il comportamento di una funzionalità in un'applicazione. Un flag ha uno stato (abilitato o disabilitato) e un set opzionale di attributi contenenti valori arbitrari di stringa, numerici, booleani o matrici.
+ **Variante del flag di funzionalità**: una combinazione specifica di valori di status e di attributo appartenenti a un flag di funzionalità. Un feature flag può avere più varianti.
+ **Regola di variante**: espressione definita dall'utente utilizzata per selezionare una variante del feature flag. Ogni variante ha una propria regola che AWS AppConfig valuta se restituirla o meno.
+ **Variante predefinita**: una variante speciale che viene restituita quando non viene selezionata nessun'altra variante. Tutti i flag di funzionalità multivarianti hanno una variante predefinita.

  Nota, la variante predefinita deve essere l'ultima nell'ordine delle varianti e non può avere regole associate. Se non è definita per ultima, AWS AppConfig restituisce a `BadRequestException` quando si tenta di creare il flag multivariante.
+ **Contesto**: chiavi e valori definiti dall'utente passati al AWS AppConfig momento del recupero della configurazione. I valori di contesto vengono utilizzati durante la valutazione delle regole per selezionare la variante del feature flag da restituire.

**Nota**  
AWS AppConfig l'agente valuta le regole delle varianti e determina quale regola si applica alla richiesta in base al contesto fornito. Per ulteriori informazioni sul recupero dei flag di funzionalità multivarianti, vedere. [Recupero dei flag delle funzionalità di base e multivarianti](appconfig-integration-retrieving-feature-flags.md)

**Casi d'uso comuni**

Questa sezione descrive due casi d'uso comuni per le varianti dei feature flag.

*Segmentazione degli utenti*

La segmentazione degli utenti è il processo di divisione degli utenti in base a determinati attributi. Ad esempio, puoi utilizzare le varianti flag per esporre una funzionalità ad alcuni utenti ma non ad altri in base all'ID utente, alla posizione geografica, al tipo di dispositivo o alla frequenza di acquisto.

Utilizzando l'esempio della frequenza di acquisto, supponiamo che l'applicazione di commercio supporti una funzionalità per aumentare la fidelizzazione dei clienti. Puoi utilizzare le varianti di bandiera per configurare diversi tipi di incentivi da mostrare a un utente in base all'ultima volta che ha acquistato qualcosa. A un nuovo utente potrebbe essere offerto un piccolo sconto per incoraggiarlo a diventare cliente, mentre a un cliente abituale potrebbe essere concesso uno sconto maggiore se acquista qualcosa da una nuova categoria.

*Suddivisione del traffico*

La suddivisione del traffico è il processo di selezione di una variante di bandiera casuale ma coerente in base a un valore di contesto definito dall'utente. Ad esempio, potresti voler eseguire un esperimento in cui una piccola percentuale dei tuoi utenti (identificati dal loro ID utente) vede una particolare variante. In alternativa, potresti voler eseguire un'implementazione graduale delle funzionalità in cui una funzionalità venga esposta prima al 5% degli utenti, poi al 15%, quindi al 40%, quindi al 100%, mantenendo un'esperienza utente coerente durante l'implementazione.

Utilizzando l'esempio di sperimentazione, potreste utilizzare le varianti dei flag per testare un nuovo stile di pulsante per l'azione principale sulla home page dell'applicazione e vedere se genera più clic. Per il vostro esperimento, potreste creare una variante di bandiera con una regola di suddivisione del traffico che indichi il 5% degli utenti a visualizzare il nuovo stile, mentre la variante predefinita indica gli utenti che dovrebbero continuare a vedere lo stile esistente. Se l'esperimento ha esito positivo, puoi aumentare il valore percentuale o persino impostare la variante come predefinita.

# Comprensione delle regole del feature flag multivariante
<a name="appconfig-creating-multi-variant-feature-flags-rules"></a>

Quando crei una variante del feature flag, specifichi una regola per essa. Le regole sono espressioni che accettano valori di contesto come input e producono un risultato booleano come output. Ad esempio, è possibile definire una regola per selezionare una variante di bandiera per gli utenti beta, identificata dall'ID dell'account, testando un aggiornamento dell'interfaccia utente. In questo scenario, procedi come segue:

1. Create un nuovo profilo di configurazione del feature flag chiamato *UI Refresh*.

1. Crea un nuovo flag di funzionalità chiamato *ui\$1refresh*.

1. Modifica il flag della funzionalità dopo averlo creato per aggiungere varianti.

1. Crea e abilita una nuova variante chiamata *BetaUsers*.

1. Definisci una regola per selezionare *BetaUsers*la variante se l'ID dell'account dal contesto della richiesta si trova in un elenco di account IDs approvati per visualizzare la nuova esperienza beta.

1. Verifica che lo stato della variante predefinita sia impostato su **Disabilitato**.

**Nota**  
Le varianti vengono valutate come un elenco ordinato in base all'ordine in cui sono definite nella console. La variante in cima all'elenco viene valutata per prima. Se nessuna regola corrisponde al contesto fornito, AWS AppConfig restituisce la variante predefinita.

Quando AWS AppConfig elabora la richiesta del feature flag, confronta prima il contesto fornito, che include l'AccountID (in questo esempio) con BetaUsers la variante. Se il contesto corrisponde alla regola per BetaUsers, AWS AppConfig restituisce i dati di configurazione per l'esperienza beta. Se il contesto non include un ID account o se l'ID dell'account termina con un valore diverso da 123, AWS AppConfig restituisce i dati di configurazione per la regola predefinita, il che significa che l'utente visualizza l'esperienza corrente in produzione.

**Nota**  
Per informazioni sul recupero dei flag di funzionalità multivarianti, consulta. [Recupero dei flag delle funzionalità di base e multivarianti](appconfig-integration-retrieving-feature-flags.md)

# Definizione delle regole per i flag di funzionalità multivarianti
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators"></a>

Una regola variante è un'espressione composta da uno o più operandi e un operatore. Un operando è un valore specifico utilizzato durante la valutazione di una regola. I valori degli operandi possono essere statici, ad esempio un numero letterale o una stringa, o variabili, ad esempio il valore trovato in un contesto o il risultato di un'altra espressione. Un operatore, ad esempio «maggiore di», è un test o un'azione applicata ai relativi operandi che produce un valore. Un'espressione di regola variante deve produrre un «vero» o un «falso» per essere valida.

**Operandi**


****  

| Tipo | Description | Esempio | 
| --- | --- | --- | 
|  Stringa  |  Una sequenza di caratteri UTF-8, racchiusa tra virgolette doppie.  |  <pre>"apple", "Ḽơᶉëᶆ ȋṕšᶙṁ"</pre>  | 
|  Numero intero  |  Un valore intero a 64 bit.  |  <pre>-7, 42 </pre>  | 
|  Float  |  Un valore a virgola mobile IEEE-754 a 64 bit.  |  <pre>3.14, 1.234e-5</pre>  | 
|  Time stamp  |  Un momento temporale specifico, come descritto dalla nota del [W3C](https://www.w3.org/TR/NOTE-datetime) sui formati di data e ora.  |  <pre>2012-03-04T05:06:07-08:00, 2024-01</pre>  | 
|  Booleano  |  Un valore vero o falso.  |  <pre>true, false</pre>  | 
|  Valore di contesto  |  Un valore parametrizzato sotto forma di \$1 *key* che viene recuperato dal contesto durante la valutazione della regola.  |  <pre>$country, $userId</pre>  | 

**Operatori di confronto**


****  

| Operatore | Description | Esempio | 
| --- | --- | --- | 
|  eq  |  Determina se un valore di contesto è uguale a un determinato valore.  |  <pre>(eq $state "Virginia")</pre>  | 
|  gt  |  Determina se un valore di contesto è maggiore di un determinato valore.  |  <pre>(gt $age 65)</pre>  | 
|  gte  |  Determina se un valore di contesto è maggiore o uguale a un determinato valore.  |  <pre>(gte $age 65)</pre>  | 
|  lt  |  Determina se un valore di contesto è inferiore a un determinato valore.  |  <pre>(lt $age 65)</pre>  | 
|  lte  |  Determina se un valore di contesto è minore o uguale a un determinato valore.  |  <pre>(lte $age 65)</pre>  | 

**Operatori logici**


****  

| Operatore | Description | Esempio | 
| --- | --- | --- | 
|  and  |  Determina se entrambi gli operandi sono veri.  |  <pre>(and <br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  or  |  Determina se almeno uno degli operandi è vero.  |  <pre>(or<br />    (eq $state "Virginia") <br />    (gt $age 65)<br />)</pre>  | 
|  not  |  Inverte il valore di un'espressione.  |  <pre>(not (eq $state "Virginia"))</pre>  | 

**Operatori personalizzati**


****  

| Operatore | Description | Esempio | 
| --- | --- | --- | 
|  inizia\$1con  |  Determina se un valore di contesto inizia con un determinato prefisso.  |  <pre>(begins_with $state "A")</pre>  | 
|  termina\$1con  |  Determina se un valore di contesto termina con un determinato prefisso.  |  <pre>(ends_with $email "amazon.com")</pre>  | 
|  contiene  |  Determina se un valore di contesto contiene una determinata sottostringa.  |  <pre>(contains $promoCode "WIN")</pre>  | 
|  in  |  Determina se un valore di contesto è contenuto in un elenco di costanti.  |  <pre>(in $userId ["123", "456"])</pre>  | 
|  fiammiferi  |  Determina se un valore di contesto corrisponde a un determinato modello di espressione regolare.  |  <pre>(matches in::$greeting pattern::"h.*y")</pre>  | 
|  exists  |  Determina se è stato fornito un valore per una chiave di contesto.  |  <pre>(exists key::"country")</pre>  | 
|  dividi  |  Restituisce una determinata percentuale di traffico in base a un hash coerente dei valori di contesto forniti. `true` Per una spiegazione dettagliata di come `split` funziona, consultate la sezione successiva di questo argomento,. [Comprensione dell'operatore split](appconfig-creating-multi-variant-feature-flags-rules.md#appconfig-creating-multi-variant-feature-flags-rules-operators-split) Si noti che `seed` si tratta di una proprietà facoltativa. Se non lo specifichi`seed`, l'hash è coerente a *livello locale*, il che significa che il traffico verrà suddiviso in modo coerente per quel flag, ma altri flag che ricevono lo stesso valore di contesto potrebbero suddividere il traffico in modo diverso. Se fornito, `seed` è garantito che ogni valore univoco suddividerà il traffico in modo uniforme tra feature flag, profili di configurazione e. Account AWS  |  <pre>(split pct::10 by::$userId seed::"abc")</pre>  | 

## Comprensione dell'operatore split
<a name="appconfig-creating-multi-variant-feature-flags-rules-operators-split"></a>

La sezione seguente descrive come si comporta l'`split`operatore quando viene utilizzato in diversi scenari. Come promemoria, `split` calcola una determinata percentuale di traffico sulla base di un hash coerente del valore di contesto fornito. `true` Per capirlo meglio, considera il seguente scenario di base che utilizza la divisione con due varianti:

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

Come previsto, fornendo un insieme casuale di `uniqueId` valori si ottiene una distribuzione che è approssimativamente:

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

Se aggiungi una terza variante, ma usi la stessa percentuale di suddivisione in questo modo:

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

Si ottiene la seguente distribuzione:

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

Questa distribuzione potenzialmente inaspettata si verifica perché ogni regola di variante viene valutata in ordine e la prima corrispondenza determina la variante restituita. Quando viene valutata la regola A, il 20% dei `uniqueId` valori corrisponde, quindi viene restituita la prima variante. Successivamente, viene valutata la regola B. Tuttavia, tutti i `uniqueId` valori che avrebbero dovuto corrispondere alla seconda istruzione split corrispondevano già alla regola della variante A, quindi nessun valore corrisponde a B. Viene invece restituita la variante predefinita.

Consideriamo ora un terzo esempio.

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

Come nell'esempio precedente, il primo 20% dei `uniqueId` valori corrisponde alla regola A. Per la regola della variante B, il 25% di tutti i `uniqueId` valori corrisponderebbe, ma la maggior parte di quelli precedentemente corrispondenti alla regola A. Ciò lascia il 5% del totale per la variante B, mentre il resto riceve la variante C. La distribuzione sarebbe simile alla seguente:

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

**Utilizzo della proprietà `seed`**  
È possibile utilizzare la `seed` proprietà per garantire che il traffico venga suddiviso in modo coerente per un determinato valore di contesto indipendentemente da dove viene utilizzato l'operatore di divisione. Se non lo specifichi`seed`, l'hash è coerente a *livello locale*, il che significa che il traffico verrà suddiviso in modo coerente per quel flag, ma altri flag che ricevono lo stesso valore di contesto potrebbero suddividere il traffico in modo diverso. Se fornito, `seed` è garantito che ogni valore univoco suddividerà il traffico in modo uniforme tra feature flag, profili di configurazione e. Account AWS

In genere, i clienti utilizzano lo stesso `seed` valore tra le varianti all'interno di un flag quando suddividono il traffico sulla stessa proprietà di contesto. Tuttavia, a volte può avere senso utilizzare un valore iniziale diverso. Ecco un esempio che utilizza semi diversi per le regole A e B:

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

Come in precedenza, il 20% dei `uniqueId` valori corrispondenti corrisponde alla regola A. Ciò significa che l'80% dei valori soddisfa e viene testato in base alla regola variante B. Poiché il seme è diverso, non c'è correlazione tra i valori che corrispondono ad A e i valori che corrispondono alla regola B. Tuttavia, vi sono solo l'80% in più di `uniqueId` valori da dividere, il 25% di quel numero corrisponde alla regola B e il 75% no. Ciò si traduce nella seguente distribuzione:

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

# Creazione di un flag di funzionalità multivariante
<a name="appconfig-creating-multi-variant-feature-flags-procedures"></a>

Utilizzate le procedure in questa sezione per creare varianti di un feature flag.

**Prima di iniziare**  
Prendi nota delle seguenti informazioni importanti.
+ È possibile creare varianti di feature flag esistenti modificandole. Non è possibile creare varianti di un nuovo feature flag *quando si crea un nuovo profilo di configurazione*. È necessario prima completare il flusso di lavoro di creazione del nuovo profilo di configurazione. Dopo aver creato il profilo di configurazione, è possibile aggiungere varianti a qualsiasi flag all'interno del profilo di configurazione. Per informazioni su come creare un nuovo profilo di configurazione, vedere[Creazione di un profilo di configurazione del feature flag in AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md).
+ Per recuperare i dati delle varianti di feature flag per le piattaforme di calcolo Amazon EC2, Amazon ECS e Amazon EKS, è necessario AWS AppConfig utilizzare la versione dell'agente 2.0.4416 o successiva.
+ Per motivi di prestazioni e le chiamate SDK per non AWS CLI recuperare i dati delle varianti. AWS AppConfig Per ulteriori informazioni su AWS AppConfig Agent, consulta. [Come utilizzare AWS AppConfig Agent per recuperare i dati di configurazione](appconfig-agent-how-to-use.md)
+ Quando create una variante del feature flag, specificate una regola per essa. Le regole sono espressioni che prendono il contesto della richiesta come input e producono un risultato booleano come output. Prima di creare varianti, esamina gli operandi e gli operatori supportati per le regole delle varianti di bandiera. È possibile creare regole prima di creare varianti. Per ulteriori informazioni, consulta [Comprensione delle regole del feature flag multivariante](appconfig-creating-multi-variant-feature-flags-rules.md).

**Topics**
+ [Creazione di un flag di funzionalità multivariante (console)](#appconfig-creating-multi-variant-feature-flags-procedures-console)
+ [Creazione di un flag di funzionalità multivariante (riga di comando)](#appconfig-creating-multi-variant-feature-flags-procedures-commandline)

## Creazione di un flag di funzionalità multivariante (console)
<a name="appconfig-creating-multi-variant-feature-flags-procedures-console"></a>

La procedura seguente descrive come creare un flag di funzionalità multivariante per un profilo di configurazione esistente utilizzando la AWS AppConfig console. È inoltre possibile modificare i flag di funzionalità esistenti per creare varianti.

**Per creare un flag di funzionalità multivariante**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. Nel riquadro di navigazione, scegli **Applicazioni**, quindi scegli un'applicazione.

1. Nella scheda **Profili di configurazione e flag di funzionalità**, scegliete un profilo di configurazione dei feature flag esistente.

1. Nella sezione **Bandiere**, scegli **Aggiungi nuova** bandiera.

1. Nella sezione **Definizione della bandiera della caratteristica**, per **Nome bandiera**, inserisci un nome.

1. Per la **chiave Flag**, inserite un identificatore di bandiera per distinguere i flag all'interno dello stesso profilo di configurazione. I flag all'interno dello stesso profilo di configurazione non possono avere la stessa chiave. Dopo aver creato il flag, è possibile modificare il nome del flag, ma non la chiave del flag. 

1. (Facoltativo) Nel campo **Descrizione**, inserisci le informazioni su questo contrassegno.

1. Nella sezione **Varianti**, scegli **Contrassegno multivariante**.

1. (Facoltativo) Nella sezione **Attributi del flag Feature**, scegliete **Definisci attributo**. Gli attributi consentono di fornire valori aggiuntivi all'interno della bandiera. Per ulteriori informazioni su attributi e vincoli, vedere. [Comprensione degli attributi dei feature flag](appconfig-creating-configuration-and-profile-feature-flags.md#appconfig-creating-configuration-profile-feature-flag-attributes)

   1. Per **Key**, specificate una chiave di bandiera e sceglietene il tipo dall'elenco **Tipo**. Per informazioni sulle opzioni supportate per i campi **Valore** e **Vincoli**, consultate la sezione precedentemente citata sugli attributi.

   1. Seleziona **Valore richiesto per specificare se il valore** di un attributo è obbligatorio.

   1. Scegliete **Definisci attributo** per aggiungere altri attributi.

   1. Scegliete **Applica** per salvare le modifiche agli attributi.

1. Nella sezione **Varianti del Feature flag**, scegliete **Crea variante**.

   1. Per **Nome variante**, inserisci un nome.

   1. Utilizzate l'interruttore **Valore abilitato** per abilitare la variante.

   1. Nella casella di testo **Regola**, inserisci una regola.

   1. Utilizzate le opzioni **Crea variante** > **Crea variante sopra** o **Crea variante sotto** per creare varianti aggiuntive per questo contrassegno. 

   1. Nella sezione **Variante predefinita**, utilizzate l'interruttore **Valore abilitato** per abilitare la variante predefinita. Facoltativamente, fornite i valori per gli attributi definiti nel passaggio 10.

   1. Scegli **Applica**.

1. Verifica i dettagli del contrassegno e delle sue varianti e scegli **Crea bandiera**.

Per informazioni sulla distribuzione del nuovo flag di funzionalità con varianti, consulta[Distribuzione di flag di funzionalità e dati di configurazione in AWS AppConfig](deploying-feature-flags.md).

## Creazione di un flag di funzionalità multivariante (riga di comando)
<a name="appconfig-creating-multi-variant-feature-flags-procedures-commandline"></a>

La procedura seguente descrive come utilizzare AWS Command Line Interface (su Linux o Windows) o Tools for Windows per PowerShell creare un flag di funzionalità multivariante per un profilo di configurazione esistente. È inoltre possibile modificare i flag di funzionalità esistenti per creare varianti.

**Prima di iniziare**  
Completate le seguenti attività prima di creare un feature flag multivariante utilizzando il. AWS CLI
+ Create un profilo di configurazione del feature flag. Per ulteriori informazioni, consulta [Creazione di un profilo di configurazione del feature flag in AWS AppConfig](appconfig-creating-configuration-and-profile-feature-flags.md).
+ Effettua l'aggiornamento alla versione più recente di AWS CLI. Per ulteriori informazioni, consulta [Install or update to the latest version of the AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) nella *Guida per l’utente di AWS Command Line Interface *.

**Per creare un flag di funzionalità multivariante**

1. Create un file di configurazione sul computer locale che specifichi i dettagli del flag multivariante che desiderate creare. Salvate il file con un'`.json`estensione. Il file deve aderire allo schema [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. Il contenuto dello schema del file di configurazione sarà simile al seguente.

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

   Ecco un esempio con tre varianti e la variante predefinita.

   ```
   {
     "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. Utilizza l'`CreateHostedConfigurationVersion`API per salvare i dati di configurazione del feature flag in 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 i dati di configurazione che includono alcuni metadati AWS AppConfig generati.
**Nota**  
Quando crei la versione di configurazione ospitata, AWS AppConfig verifica che i dati siano conformi allo [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)schema JSON. AWS AppConfig verifica inoltre che ogni attributo feature flag presente nei dati soddisfi i vincoli definiti per tali attributi.

# Comprensione del tipo di riferimento per AWS.AppConfig.FeatureFlags
<a name="appconfig-type-reference-feature-flags"></a>

Utilizzate lo schema `AWS.AppConfig.FeatureFlags` JSON come riferimento per creare i dati di configurazione dei feature flag.

```
{
  "$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**  
Per recuperare i dati di configurazione dei feature flag, l'applicazione deve chiamare l'`GetLatestConfiguration`API. Non è possibile recuperare i dati di configurazione dei feature flag chiamando`GetConfiguration`, il che è obsoleto. Per ulteriori informazioni, consulta [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetLatestConfiguration.html) nella *documentazione di riferimento dell’API AWS AppConfig *.

Quando l'applicazione chiama [GetLatestConfiguration](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_GetLatestConfiguration.html)e riceve una configurazione appena distribuita, le informazioni che definiscono i flag e gli attributi delle funzionalità vengono rimosse. Il JSON semplificato contiene una mappa di chiavi che corrispondono a ciascuna delle chiavi flag specificate. Il JSON semplificato contiene anche i valori mappati di `true` o per l'attributo. `false` `enabled` Se un flag è `enabled` impostato su`true`, saranno presenti anche tutti gli attributi del flag. Lo schema JSON seguente descrive il formato dell'output 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
    }
  }
}
```

# Salvataggio di una versione precedente di Feature Flag in una nuova versione
<a name="appconfig-creating-configuration-profile-feature-flags-editing-version"></a>

Quando aggiorni un feature flag, salva AWS AppConfig automaticamente le modifiche in una nuova versione. Se desiderate utilizzare una versione precedente del feature flag, dovete copiarla in una versione bozza e salvarla. Non potete modificare e salvare le modifiche a una versione precedente del flag senza salvarla in una nuova versione. 

**Per modificare una versione precedente del Feature Flag e salvarla in una nuova versione**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. Nel pannello di navigazione, scegli **Applicazioni**, quindi scegli l'applicazione con il contrassegno di funzionalità che desideri modificare e salvare in una nuova versione.

1. Nella scheda **Profili di configurazione e bandiere di funzionalità**, scegliete il profilo di configurazione con il flag di funzionalità che desiderate modificare e salvatelo in una nuova versione.

1. Nella scheda **Feature flags**, utilizzate l'elenco **Versione** per scegliere la versione da modificare e salvare in una nuova versione.

1. Scegliete **Copia nella versione bozza**.

1. Nel campo **Etichetta della versione**, inserisci una nuova etichetta (facoltativa, ma consigliata).

1. Nel campo **Descrizione della versione**, inserisci una nuova descrizione (facoltativa, ma consigliata).

1. Scegli **Salva versione**.

1. Scegli **Avvia distribuzione** per distribuire la nuova versione.

# Creazione di un profilo di configurazione in formato libero in AWS AppConfig
<a name="appconfig-free-form-configurations-creating"></a>

*I dati di configurazione* sono una raccolta di impostazioni che influenzano il comportamento dell'applicazione. Un *profilo di configurazione* include, tra le altre cose, un URI che consente di AWS AppConfig localizzare i dati di configurazione nella posizione archiviata e un tipo di configurazione. Con i profili di configurazione in formato libero, è possibile archiviare i dati nell'archivio di configurazione AWS AppConfig ospitato o in uno dei seguenti strumenti Servizi AWS e negli strumenti di Systems Manager:


****  

| Location (Ubicazione) | Tipi di file supportati | 
| --- | --- | 
|  AWS AppConfig archivio di configurazione ospitato  |  YAML, JSON e testo se aggiunti utilizzando. Console di gestione AWS Qualsiasi tipo di file se aggiunto utilizzando l' AWS AppConfig [CreateHostedConfigurationVersion](https://docs.aws.amazon.com/appconfig/2019-10-09/APIReference/API_CreateHostedConfigurationVersion.html)azione API.  | 
|  [Amazon Simple Storage Service (Amazon S3)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/Welcome.html)  |  Qualsiasi  | 
|  [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html)  |  Pipeline (come definita dal servizio)  | 
|  [Gestione dei segreti AWS](https://docs.aws.amazon.com/secretsmanager/latest/userguide/intro.html)  |  Segreto (come definito dal servizio)  | 
|  [AWS Systems Manager Archivio parametri](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)  |  Parametri di stringa standard e sicuri (come definiti da Parameter Store)  | 
|  [AWS Systems Manager archivio documenti (documenti SSM)](https://docs.aws.amazon.com/systems-manager/latest/userguide/documents.html)  |  YAML, JSON, testo  | 

Un profilo di configurazione può anche includere validatori opzionali per garantire che i dati di configurazione siano corretti dal punto di vista sintattico e semantico. AWS AppConfig esegue un controllo utilizzando i validatori quando si avvia una distribuzione. Se vengono rilevati errori, la distribuzione si interrompe prima di apportare modifiche ai target di configurazione.

**Nota**  
Se possibile, consigliamo di ospitare i dati di configurazione nell'archivio di configurazione AWS AppConfig ospitato in quanto offre la maggior parte delle funzionalità e dei miglioramenti.

Per le configurazioni in formato libero archiviate nell'archivio di configurazione AWS AppConfig ospitato o nei documenti SSM, è possibile creare la configurazione in formato libero utilizzando la console Systems Manager al momento della creazione di un profilo di configurazione. Il processo è descritto più avanti in questo argomento. 

Per le configurazioni in formato libero archiviate in Parameter Store, Secrets Manager o Amazon S3, devi prima creare il parametro, il segreto o l'oggetto e archiviarlo nell'archivio di configurazione pertinente. Dopo aver archiviato i dati di configurazione, utilizza la procedura descritta in questo argomento per creare il profilo di configurazione.

**Topics**
+ [Comprendere i validatori](appconfig-creating-configuration-and-profile-validators.md)
+ [Informazioni sulle quote e le limitazioni dell'archivio di configurazione](appconfig-creating-configuration-and-profile-quotas.md)
+ [Informazioni sull'archivio di configurazione AWS AppConfig ospitato](appconfig-creating-configuration-and-profile-about-hosted-store.md)
+ [Informazioni sulle configurazioni archiviate in Amazon S3](appconfig-creating-configuration-and-profile-S3-source.md)
+ [Creazione di un profilo AWS AppConfig di configurazione in formato libero (console)](appconfig-creating-free-form-configuration-and-profile-create-console.md)
+ [Creazione di un profilo di configurazione in AWS AppConfig formato libero (riga di comando)](appconfig-creating-free-form-configuration-and-profile-create-commandline.md)

# Comprendere i validatori
<a name="appconfig-creating-configuration-and-profile-validators"></a>

Quando crei un profilo di configurazione, hai la possibilità di specificare fino a due validatori. Un validatore assicura che i dati di configurazione siano sintatticamente e semanticamente corretti. Se prevedi di utilizzare un validatore, devi crearlo prima di creare il profilo di configurazione. AWS AppConfig supporta i seguenti tipi di validatori:
+ **AWS Lambda funzioni**: supportate per i contrassegni delle funzionalità e le configurazioni in formato libero.
+ **Schema JSON**: supportato per configurazioni in formato libero. (convalida AWS AppConfig automaticamente i flag delle funzionalità rispetto a uno schema JSON.)

**Topics**
+ [AWS Lambda validatori di funzioni](#appconfig-creating-configuration-and-profile-validators-lambda)
+ [validatori dello schema JSON](#appconfig-creating-configuration-and-profile-validators-json-schema)

## AWS Lambda validatori di funzioni
<a name="appconfig-creating-configuration-and-profile-validators-lambda"></a>

I validatori delle funzioni Lambda devono essere configurati con il seguente schema di eventi. AWS AppConfig utilizza questo schema per richiamare la funzione Lambda. Il contenuto è una stringa con codifica base64 e l'uri è una stringa. 

```
{
    "applicationId": "The application ID of the configuration profile being validated", 
    "configurationProfileId": "The ID of the configuration profile being validated",
    "configurationVersion": "The version of the configuration profile being validated",
    "content": "Base64EncodedByteString", 
    "uri": "The configuration uri"    
}
```

AWS AppConfig verifica che l'intestazione `X-Amz-Function-Error` Lambda sia impostata nella risposta. Lambda imposta questa intestazione se la funzione genera un'eccezione. *Per ulteriori informazioni in merito`X-Amz-Function-Error`, consulta la sezione [Gestione degli errori e tentativi automatici AWS Lambda nella Guida](https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html) per gli sviluppatori.AWS Lambda *

Ecco un semplice esempio di codice di risposta Lambda per una convalida corretta.

```
import json

def handler(event, context):
     #Add your validation logic here
     print("We passed!")
```

Ecco un semplice esempio di codice di risposta Lambda per una convalida non riuscita.

```
def handler(event, context):
     #Add your validation logic here
     raise Exception("Failure!")
```

Ecco un altro esempio che convalida solo se il parametro di configurazione è un numero primo.

```
function isPrime(value) {
    if (value < 2) {
        return false;
    }

    for (i = 2; i < value; i++) {
        if (value % i === 0) {
            return false;
        }
    }

    return true;
}

exports.handler = async function(event, context) {
    console.log('EVENT: ' + JSON.stringify(event, null, 2));
    const input = parseInt(Buffer.from(event.content, 'base64').toString('ascii'));
    const prime = isPrime(input);
    console.log('RESULT: ' + input + (prime ? ' is' : ' is not') + ' prime');
    if (!prime) {
        throw input + "is not prime";
    }
}
```

AWS AppConfig chiama la tua Lambda di convalida quando richiama `StartDeployment` le operazioni `ValidateConfigurationActivity` e API. Devi fornire `appconfig.amazonaws.com` le autorizzazioni per richiamare la tua Lambda. Per ulteriori informazioni, consulta [Concessione dell'accesso alle funzioni ai servizi. AWS](https://docs.aws.amazon.com/lambda/latest/dg/access-control-resource-based.html#permissions-resource-serviceinvoke) AWS AppConfig limita il tempo di esecuzione Lambda di convalida a 15 secondi, inclusa la latenza di avvio.

## validatori dello schema JSON
<a name="appconfig-creating-configuration-and-profile-validators-json-schema"></a>

Se crei una configurazione in un documento SSM, devi specificare o creare uno schema JSON per la configurazione. Uno schema JSON definisce le proprietà consentite per ogni impostazione di configurazione dell'applicazione. Lo schema JSON funziona come un set di regole per garantire che le impostazioni di configurazione nuove o aggiornate siano conformi alle best practice richieste dall'applicazione. Ecco un esempio. 

```
    {
      "$schema": "http://json-schema.org/draft-04/schema#",
      "title": "$id$",
      "description": "BasicFeatureToggle-1",
      "type": "object",
      "additionalProperties": false,
      "patternProperties": {
          "[^\\s]+$": {
              "type": "boolean"
          }
      },
      "minProperties": 1
    }
```

Quando si crea una configurazione da un documento SSM, il sistema verifica automaticamente che la configurazione sia conforme ai requisiti dello schema. In caso contrario, AWS AppConfig restituisce un errore di convalida.

**Importante**  
Nota le seguenti informazioni importanti sui validatori dello schema JSON:  
I dati di configurazione archiviati nei documenti SSM devono essere convalidati rispetto a uno schema JSON associato prima di poter aggiungere la configurazione al sistema. I parametri SSM non richiedono un metodo di convalida, ma si consiglia di creare un controllo di convalida per le configurazioni dei parametri SSM nuove o aggiornate utilizzando. AWS Lambda
Una configurazione in un documento SSM utilizza il tipo di documento. `ApplicationConfiguration` Lo schema JSON corrispondente utilizza il tipo di `ApplicationConfigurationSchema` documento.
AWS AppConfig supporta lo schema JSON versione 4.X per lo schema in linea. Se la configurazione dell'applicazione richiede una versione diversa di JSON Schema, devi creare un validatore Lambda.

# Informazioni sulle quote e le limitazioni dell'archivio di configurazione
<a name="appconfig-creating-configuration-and-profile-quotas"></a>

Gli archivi di configurazione supportati da AWS AppConfig hanno le seguenti quote e limitazioni.


****  

|  | AWS AppConfig archivio di configurazione ospitato | Simple Storage Service (Amazon S3) | Systems Manager Parameter Store | Gestione dei segreti AWS | Systems Manager Archivio documenti | AWS CodePipeline | 
| --- | --- | --- | --- | --- | --- | --- | 
|  **Limite di dimensione della configurazione**  | 2 MB per impostazione predefinita, 4 MB massimi |  2 MB Applicato da AWS AppConfig, non da S3  |  4 KB (piano gratuito)/8 KB (parametri avanzati)  | 64 KB |  64 KB  | 2 MBApplicato da, non AWS AppConfig CodePipeline | 
|  **Limite di storage delle risorse**  | 1 GB |  Illimitato  |  10.000 parametri (piano gratuito)/100.000 parametri (parametri avanzati)  | 500.000 |  500 documenti  | Limitato dal numero di profili di configurazione per applicazione (100 profili per applicazione) | 
|  **Crittografia lato server**  | Sì |  [https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html](https://docs.aws.amazon.com/AmazonS3/latest/userguide/serv-side-encryption.html)  |  Sì   | Sì |  No  | Sì | 
|  **CloudFormation supporto**  | Sì |  Non per la creazione o l'aggiornamento dei dati  |  Sì   | Sì |  No  | Sì | 
|  **Prezzi**  | Gratuito |  Vedi i [prezzi di Amazon S3](https://aws.amazon.com//s3/pricing/)  |  [Vedi i prezzi AWS Systems Manager](https://aws.amazon.com//systems-manager/pricing/)  | Vedi [Gestione dei segreti AWS i prezzi](https://aws.amazon.com//secrets-manager/pricing/) |  Gratuito  |  Vedi [AWS CodePipeline i prezzi](https://aws.amazon.com//codepipeline/pricing/)  | 

# Informazioni sull'archivio di configurazione AWS AppConfig ospitato
<a name="appconfig-creating-configuration-and-profile-about-hosted-store"></a>

AWS AppConfig include un archivio di configurazione interno o ospitato. Le configurazioni devono pesare almeno 2 MB. L'archivio di configurazione AWS AppConfig ospitato offre i seguenti vantaggi rispetto ad altre opzioni dell'archivio di configurazione. 
+ Non è necessario impostare e configurare altri servizi come Amazon Simple Storage Service (Amazon S3) o Archivio parametri.
+ Non è necessario configurare le autorizzazioni AWS Identity and Access Management (IAM) per utilizzare l'archivio di configurazione.
+ Puoi memorizzare le configurazioni in YAML, JSON o come documenti di testo.
+ L'utilizzo dell'archivio è gratuito.
+ Puoi creare una configurazione e aggiungerla all'archivio quando crei un profilo di configurazione.

# Informazioni sulle configurazioni archiviate in Amazon S3
<a name="appconfig-creating-configuration-and-profile-S3-source"></a>

Puoi archiviare le configurazioni in un bucket Amazon Simple Storage Service (Amazon S3). Quando si crea il profilo di configurazione, si specifica l'URI di un singolo oggetto S3 in un bucket. È inoltre necessario specificare l'Amazon Resource Name (ARN) di un ruolo AWS Identity and Access Management (IAM) che AWS AppConfig autorizza a ottenere l'oggetto. Prima di creare un profilo di configurazione per un oggetto Amazon S3, tieni presente le seguenti restrizioni.


****  

| Limitazione | Informazioni | 
| --- | --- | 
|  Dimensione  |  Le configurazioni archiviate come oggetti S3 possono avere una dimensione massima di 1 MB.  | 
|  Crittografia degli oggetti  |  Un profilo di configurazione può avere come target oggetti crittografati SSE-S3 e SSE-KMS.  | 
|  Classi di archiviazione  |  AWS AppConfig supporta le seguenti classi di storage S3:,,, e. `STANDARD` `INTELLIGENT_TIERING` `REDUCED_REDUNDANCY` `STANDARD_IA` `ONEZONE_IA` Le seguenti classi non sono supportate: tutte le classi S3 Glacier (`GLACIER` e `DEEP_ARCHIVE`).  | 
|  Controllo delle versioni  |  AWS AppConfig richiede che l'oggetto S3 utilizzi il controllo delle versioni.  | 

## Configurazione delle autorizzazioni per una configurazione archiviata come oggetto Amazon S3
<a name="appconfig-creating-configuration-and-profile-S3-source-permissions"></a>

Quando crei un profilo di configurazione per una configurazione archiviata come oggetto S3, devi specificare un ARN per un ruolo IAM che AWS AppConfig dia il permesso di ottenere l'oggetto. Il ruolo deve includere le seguenti autorizzazioni:

Autorizzazioni per accedere all'oggetto S3
+ s3: GetObject
+ s3: GetObjectVersion

Autorizzazioni per elencare i bucket S3

s3: ListAllMyBuckets

Autorizzazioni per accedere al bucket S3 in cui è archiviato l'oggetto
+ s3: GetBucketLocation
+ s3: GetBucketVersioning
+ s3: ListBucket
+ s3: ListBucketVersions

Completa la seguente procedura per creare un ruolo che AWS AppConfig consenta di archiviare una configurazione in un oggetto S3.

**Creazione della policy IAM per l'accesso a un oggetto S3**  
Utilizza la seguente procedura per creare una policy IAM che AWS AppConfig consenta di archiviare una configurazione in un oggetto S3.

**Per creare una policy IAM per l'accesso a un oggetto S3**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Policy** e **Crea policy**.

1. Nella pagina **Crea policy**, scegli la scheda **JSON**.

1. Aggiornare la policy di esempio riportata di seguito con informazioni sul bucket S3 e sull'oggetto di configurazione. Quindi incollare il criterio nel campo di testo nella scheda **JSON** . Sostituisci *placeholder values* con le informazioni appropriate.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetObject",
           "s3:GetObjectVersion"
         ],
         "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/my-configurations/my-configuration.json"
       },
       {
         "Effect": "Allow",
         "Action": [
           "s3:GetBucketLocation",
           "s3:GetBucketVersioning",
           "s3:ListBucketVersions",
           "s3:ListBucket"
         ],
         "Resource": [
           "arn:aws:s3:::amzn-s3-demo-bucket"
         ]
       },
       {
         "Effect": "Allow",
         "Action": "s3:ListAllMyBuckets",
         "Resource": "*"
       } 
     ]
   }
   ```

------

1. Scegliere **Esamina policy**.

1. Nella pagina **Review (Revisione)** immettere un nome nella casella **Name (Nome)**, quindi digitare una descrizione.

1. Scegli **Crea policy**. Il sistema visualizza di nuovo la pagina **Ruoli**.

**Creazione del ruolo IAM per l'accesso a un oggetto S3**  
Utilizza la seguente procedura per creare un ruolo IAM che AWS AppConfig consenta di archiviare una configurazione in un oggetto S3.

**Per creare un ruolo IAM per l'accesso a un oggetto Amazon S3**

1. Aprire la console IAM all'indirizzo [https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/).

1. Nel pannello di navigazione, scegli **Ruoli** e quindi **Crea ruolo**.

1. Nella sezione **Seleziona il tipo di entità affidabile**, scegli il **AWS servizio**.

1. Nella sezione **Scegli un caso d'uso** in **Casi d'uso comuni**, scegliere **EC2**, e quindi scegliere **Next: Permissions**.

1. Nella pagina **Allega criteri autorizzazioni**, nella casella di ricerca, immettere il nome del criterio creato nella procedura precedente. 

1. Scegliere questa policy, quindi selezionare **Next: Tags**.

1. Nella pagina **Aggiungi tag (opzionale)**, inserisci una chiave e un valore opzionale, quindi scegli **Avanti: revisione**.

1. Nella pagina **Review (Revisione)** immettere un nome nella casella **Role name (Nome ruolo)**, quindi digitare una descrizione.

1. Scegliere **Create role** (Crea ruolo). Il sistema visualizza di nuovo la pagina **Roles** (Ruoli).

1. Nella pagina **Ruoli**, scegli il ruolo appena creato per aprire la pagina **Riepilogo**. Annotare i valori per **Role Name** (Nome ruolo) e **Role ARN** (ARN ruolo). Verrà specificato il ruolo ARN quando si crea il profilo di configurazione più avanti in questo argomento.

**Creazione di una relazione di trust**  
Utilizza la procedura seguente per configurare il ruolo appena creato per considerare attendibile AWS AppConfig.

**Per aggiungere una relazione di trust**

1. Nella pagina **Summary (Riepilogo)** per il ruolo creato in precedenza, scegliere la scheda **Trust Relationships (Relazioni di trust)**, quindi scegliere **Edit Trust Relationship (Modifica relazione di trust)**.

1. Eliminare `"ec2.amazonaws.com"` e aggiungere `"appconfig.amazonaws.com"` come mostrato nell'esempio seguente.

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Effect": "Allow",
         "Principal": {
           "Service": "appconfig.amazonaws.com"
         },
         "Action": "sts:AssumeRole"
       }
     ]
   }
   ```

------

1. Scegli **Update Trust Policy (Aggiorna policy di trust)**.

# Creazione di un profilo AWS AppConfig di configurazione in formato libero (console)
<a name="appconfig-creating-free-form-configuration-and-profile-create-console"></a>

Utilizzate la procedura seguente per creare un profilo di configurazione in AWS AppConfig formato libero e (facoltativamente) una configurazione in formato libero utilizzando la console. AWS Systems Manager 

**Per creare un profilo di configurazione a forma libera**

1. Apri la AWS Systems Manager console all'indirizzo [https://console.aws.amazon.com/systems-manager/appconfig/](https://console.aws.amazon.com/systems-manager/appconfig/).

1. Nel riquadro di navigazione, scegli **Applicazioni**, quindi scegli un'applicazione in cui hai creato. [Creazione di uno spazio dei nomi per l'applicazione in AWS AppConfig](appconfig-creating-namespace.md)

1. Scegliete la scheda **Profili di configurazione e bandiere di funzionalità**, quindi scegliete **Crea configurazione**.

1. Nella sezione **Opzioni di configurazione**, scegli Configurazione in **formato libero**.

1. Per **Nome del profilo di configurazione**, inserisci un nome per il profilo di configurazione.

1. (Facoltativo) Espandi **Descrizione** e inserisci una descrizione.

1. (Facoltativo) **Espandi Opzioni aggiuntive** e completa quanto segue, se necessario.

   1. Nella sezione **Associa estensioni**, scegliete un'estensione dall'elenco.

   1. Nella sezione **Tag**, scegli **Aggiungi nuovo tag**, quindi specifica una chiave e un valore opzionale. 

1. Scegli **Next (Successivo)**.

1. Nella pagina **Specificare i dati** di **configurazione, nella sezione Definizione** della configurazione, scegli un'opzione.

1. Completate i campi per l'opzione selezionata, come descritto nella tabella seguente.  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/appconfig/latest/userguide/appconfig-creating-free-form-configuration-and-profile-create-console.html)

1. Nella sezione **Ruolo di servizio**, scegli **Nuovo ruolo di servizio** per AWS AppConfig creare il ruolo IAM che fornisce l'accesso ai dati di configurazione. AWS AppConfig compila automaticamente il campo **Nome del ruolo** in base al nome inserito in precedenza. In alternativa, scegli **Ruolo di servizio esistente**. Scegliere il ruolo utilizzando l'elenco **Role ARN (Arn ruolo)**.

1. Facoltativamente, nella pagina **Aggiungi validatori**, scegli Schema **JSON** o. **AWS Lambda** Se si sceglie **JSON Scheme (Schema JSON)**, immettere lo schema JSON nel campo. Se scegli **AWS Lambda**, scegli la funzione Amazon Resource Name (ARN) e la versione dall'elenco. 
**Importante**  
I dati di configurazione archiviati nei documenti SSM devono essere convalidati rispetto a uno schema JSON associato prima di poter aggiungere la configurazione al sistema. I parametri SSM non richiedono un metodo di convalida, ma ti consigliamo di creare un controllo di convalida per configurazioni di parametri SSM nuove o aggiornate utilizzando. AWS Lambda

1. Scegli **Next (Successivo)**.

1. Nella pagina **Rivedi e salva, scegli **Salva** e** continua la distribuzione.

**Importante**  
*Se hai creato un profilo di configurazione per AWS CodePipeline, devi creare una pipeline in CodePipeline cui sia specificato AWS AppConfig come provider di distribuzione.* Non è necessario eseguire. [Distribuzione di flag di funzionalità e dati di configurazione in AWS AppConfig](deploying-feature-flags.md) Tuttavia, è necessario configurare un client per ricevere gli aggiornamenti della configurazione dell'applicazione come descritto in[Recupero dei dati di configurazione senza Agent AWS AppConfig](about-data-plane.md). *Per informazioni sulla creazione di una pipeline che viene specificata AWS AppConfig come provider di distribuzione, vedi [Tutorial: Create a Pipeline that Uses AWS AppConfig as a Deployment Provider](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-AppConfig.html) nella Guida per l'utente.AWS CodePipeline * 

Passa a [Distribuzione di flag di funzionalità e dati di configurazione in AWS AppConfig](deploying-feature-flags.md).

# Creazione di un profilo di configurazione in AWS AppConfig formato libero (riga di comando)
<a name="appconfig-creating-free-form-configuration-and-profile-create-commandline"></a>

La procedura seguente descrive come utilizzare AWS CLI (su Linux o Windows) o AWS Strumenti per PowerShell creare un profilo di configurazione in formato libero. AWS AppConfig Se preferisci, puoi usare AWS CloudShell per eseguire i comandi elencati di seguito. Per ulteriori informazioni, consulta [Che cos’è AWS CloudShell?](https://docs.aws.amazon.com//cloudshell/latest/userguide/welcome.html) nella *Guida per l’utente di AWS CloudShell *.

**Nota**  
Per le configurazioni in formato libero ospitate nell'archivio di configurazione AWS AppConfig ospitato, è necessario specificare l'`hosted`URI di posizione.

**Per creare un profilo di configurazione utilizzando AWS CLI**

1. Aprire il AWS CLI.

1. Esegui il comando seguente per creare un profilo di configurazione in formato libero. 

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

   ```
   aws appconfig create-configuration-profile \
     --application-id APPLICATION_ID \
     --name NAME \
     --description CONFIGURATION_PROFILE_DESCRIPTION \
     --location-uri CONFIGURATION_URI or hosted \
     --retrieval-role-arn IAM_ROLE_ARN \
     --tags TAGS \
     --validators "Content=SCHEMA_CONTENT or LAMBDA_FUNCTION_ARN,Type=JSON_SCHEMA or LAMBDA"
   ```

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

   ```
   aws appconfig create-configuration-profile ^
     --application-id APPLICATION_ID ^
     --name NAME ^
     --description CONFIGURATION_PROFILE_DESCRIPTION ^
     --location-uri CONFIGURATION_URI or hosted  ^
     --retrieval-role-arn IAM_ROLE_ARN ^
     --tags TAGS ^
     --validators "Content=SCHEMA_CONTENT or LAMBDA_FUNCTION_ARN,Type=JSON_SCHEMA or LAMBDA"
   ```

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

   ```
   New-APPCConfigurationProfile `
     -Name NAME `
     -ApplicationId APPLICATION_ID `
     -Description CONFIGURATION_PROFILE_DESCRIPTION `
     -LocationUri CONFIGURATION_URI or hosted `
     -RetrievalRoleArn IAM_ROLE_ARN `
     -Tag TAGS `
     -Validators "Content=SCHEMA_CONTENT or LAMBDA_FUNCTION_ARN,Type=JSON_SCHEMA or LAMBDA"
   ```

------

**Importante**  
Prendi nota delle seguenti informazioni importanti.  
*Se hai creato un profilo di configurazione per AWS CodePipeline, devi creare una pipeline in CodePipeline cui sia specificato AWS AppConfig come provider di distribuzione.* Non è necessario eseguire. [Distribuzione di flag di funzionalità e dati di configurazione in AWS AppConfig](deploying-feature-flags.md) Tuttavia, è necessario configurare un client per ricevere gli aggiornamenti della configurazione dell'applicazione come descritto in[Recupero dei dati di configurazione senza Agent AWS AppConfig](about-data-plane.md). *Per informazioni sulla creazione di una pipeline che viene specificata AWS AppConfig come provider di distribuzione, vedi [Tutorial: Create a Pipeline that Uses AWS AppConfig as a Deployment Provider](https://docs.aws.amazon.com/codepipeline/latest/userguide/tutorials-AppConfig.html) nella Guida per l'utente.AWS CodePipeline * 
Se hai creato una configurazione nell'archivio di configurazione AWS AppConfig ospitato, puoi creare nuove versioni della configurazione utilizzando le operazioni API. [CreateHostedConfigurationVersion](https://docs.aws.amazon.com//appconfig/2019-10-09/APIReference/API_CreateHostedConfigurationVersion.html) Per visualizzare AWS CLI i dettagli e i comandi di esempio per questa operazione API, consulta [create-hosted-configuration-version](https://docs.aws.amazon.com/cli/latest/reference/appconfig/create-hosted-configuration-version.html)la sezione *AWS CLI Command Reference*.

Passa a [Distribuzione di flag di funzionalità e dati di configurazione in AWS AppConfig](deploying-feature-flags.md).

# Creazione di un profilo di configurazione per fonti di dati non native
<a name="appconfig-creating-configuration-profile-other-data-sources"></a>

AWS AppConfig supporta la distribuzione dei dati di configurazione dalla maggior parte degli archivi di dati. A livello nativo, AWS AppConfig supporta la distribuzione dei dati di configurazione archiviati nei seguenti servizi:
+ L'archivio di configurazione AWS AppConfig ospitato
+ Simple Storage Service (Amazon S3)
+ Gestione dei segreti AWS
+ AWS Systems Manager Archivio dei parametri
+ Systems Manager Document Store
+ AWS CodePipeline

Se i dati di configurazione sono archiviati in una posizione non supportata nativamente da AWS AppConfig, puoi creare un'[AWS AppConfig estensione](https://docs.aws.amazon.com/appconfig/latest/userguide/working-with-appconfig-extensions.html) per recuperare i dati dalla fonte. Ad esempio, utilizzando un' AWS AppConfig estensione, puoi recuperare i dati di configurazione archiviati in Amazon Relational Database Service (Amazon RDS), Amazon DynamoDB (DynamoDB GitHub) o un repository locale GitLab, solo per citarne alcuni. Implementando un'estensione, puoi sfruttare la AWS AppConfig sicurezza e i miglioramenti per le tue applicazioni e DevOps il tuo ambiente informatico. È inoltre possibile utilizzare questo metodo per migrare i dati di configurazione da sistemi legacy a. AWS AppConfig

La creazione di un profilo di configurazione per fonti di dati non supportate nativamente AWS AppConfig implica i seguenti processi o azioni:

1. Crea una [AWS Lambda funzione](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) che recuperi i dati dalla tua fonte di dati. Finché una funzione Lambda può accedere all'origine dati, AWS AppConfig l'estensione sarà in grado di recuperare i dati. 

1. Crea un' AWS AppConfig estensione personalizzata che richiami la tua funzione Lambda. Per ulteriori informazioni, consulta [Procedura dettagliata: creazione di estensioni personalizzate AWS AppConfig](working-with-appconfig-extensions-creating-custom.md).

1. Crea un profilo di configurazione in formato AWS AppConfig libero. In particolare, crea un profilo di configurazione che utilizzi la definizione di **configurazione AWS AppConfig ospitata**. Il profilo di configurazione funge da archivio dati temporaneo dopo che la funzione Lambda ha recuperato la configurazione dall'origine. L'applicazione recupererà i dati di configurazione dall'archivio di configurazione AWS AppConfig ospitato. Per ulteriori informazioni, consulta [Creazione di un profilo di configurazione in formato libero in AWS AppConfig](appconfig-free-form-configurations-creating.md).

1. Crea un'associazione di estensioni che si attiva utilizzando il punto di `PRE_CREATE_HOSTED_CONFIGURATION_VERSION` azione. Per ulteriori informazioni, consulta [Fase 4: Creare un'associazione di estensioni per un'estensione personalizzata AWS AppConfig](working-with-appconfig-extensions-creating-custom-association.md).

Una volta configurata, quando l'applicazione richiede una nuova versione dei dati di configurazione, Lambda recupera i dati di configurazione e li inserisce nel profilo di configurazione. AWS AppConfig quindi salva il profilo di configurazione e i dati di terze parti.

Quando sei pronto, puoi distribuire il profilo di configurazione nelle tue applicazioni, proprio come qualsiasi altro tipo di dati di configurazione.

**Nota**  
Puoi scegliere di inserire dati di terze parti in linea con i dati di configurazione esistenti o fare in modo che l'intero contenuto dei dati di configurazione contenga solo dati di terze parti. Se desideri che i dati siano in linea con altri dati esistenti, tale logica deve far parte della funzione Lambda che importa i dati dalla fonte di terze parti.

## Migrazione AWS AppConfig da servizi di configurazione preesistenti e creati internamente
<a name="appconfig-creating-configuration-profile-other-data-sources-migrating"></a>

Se avete iniziato a utilizzare AWS AppConfig e avete ancora dati di configurazione o feature flag preesistenti in un altro sistema, potete utilizzare la procedura descritta in precedenza in questo argomento per migrare dal sistema esistente a un altro sistema. AWS AppConfigÈ possibile creare un'estensione che estragga i dati dal sistema legacy e li distribuisca. AWS AppConfig L'utilizzo AWS AppConfig in questo modo ti offre tutti i controlli e i vantaggi del guardrail di sicurezza pur continuando a utilizzare i tuoi archivi di dati legacy.