Condividi tramite


Supporto di Configurazione app di Azuree per i file di configurazione

Un modo comune per archiviare i dati di configurazione consiste nell'usare i file. Se si vuole usare Configurazione app di Azure per gestire i dati di configurazione, ma attualmente si usano file, non è necessario immettere manualmente i dati. È possibile usare gli strumenti per importare i file di configurazione.

Se si prevede di gestire i dati in Configurazione app, l'operazione di importazione è una migrazione monouso dei dati. Un'altra opzione consiste nel continuare a gestire i dati di configurazione nei file e importare i file ricorrentemente come parte del processo di integrazione continua e recapito continuo (CI/CD). Questo caso si verifica quando si adotta la configurazione come codice.

Quando si usano i file di configurazione sono disponibili due profili di contenuto file:

  • Profilo del contenuto del file predefinito: schema convenzionale del file di configurazione
  • Profilo del contenuto del file KVSet: uno schema che contiene tutte le proprietà chiave-valore di Configurazione dell'app

Questo articolo illustra entrambi i profili di contenuto dei file. Fornisce anche esempi di importazione ed esportazione di file di configurazione. Gli esempi usano l'interfaccia della riga di comando di Azure, ma i concetti di questo articolo si applicano anche ad altri metodi di importazione di Configurazione app.

Profilo contenuto file: impostazione predefinita

Negli strumenti di Configurazione app il profilo di contenuto file predefinito è lo schema di file di configurazione convenzionale ampiamente adottato da framework e sistemi di programmazione esistenti. Questo profilo viene utilizzato negli strumenti di importazione di Configurazione App, come il portale di Azure, Azure CLI, l'attività di Importazione della Configurazione App di Azure in Azure Pipelines e GitHub Actions. La Configurazione App supporta i formati di file JSON, YAML e Properties.

Questo profilo è utile se si vuole usare un file come configurazione di fallback per l'applicazione o la configurazione locale durante lo sviluppo. Quando si importa il file di configurazione, si specifica come si desidera trasformare i dati nei key-values e nei feature flags di Configurazione dell'app.

Il file di configurazione seguente, appsettings.json, fornisce un esempio del profilo di contenuto file predefinito. Questo file contiene un'impostazione di configurazione e un flag di funzionalità.

{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "feature_management": {
        "feature_flags": [
            {
                "id": "Beta",
                "enabled": false
            }
        ]
    }
}

Per importare questo file in Configurazione app, eseguire il comando seguente dell'interfaccia della riga di comando di Azure. Applica un'etichetta dev all'impostazione e alla funzionalità e utilizza i due punti (:) come separatore per appiattire il nome della chiave.

az appconfig kv import --label dev --separator : --name <App-Configuration-store-name> --source file --path appsettings.json --format json

Facoltativamente, è possibile aggiungere il parametro seguente al comando precedente: --profile appconfig/default. Il parametro è facoltativo, perché il profilo predefinito è appconfig/default.

I riferimenti ad Azure Key Vault richiedono un tipo di contenuto specifico durante l'importazione. Di conseguenza, le si mantengono in un file separato, come illustrato nel file seguente, keyvault-refs.json:

{
    "Database:ConnectionString": {
        "uri": "https://<Key-Vault-name>.vault.azure.net/secrets/db-secret"
    }  
}

Per importare questo file, eseguire il comando seguente dell'interfaccia della riga di comando di Azure. Applica un'etichetta test al riferimento di Key Vault e utilizza il tipo di contenuto associato al riferimento di Key Vault.

az appconfig kv import --label test --content-type "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8" --name <App-Configuration-store-name> --source file --path keyvault-refs.json --format json

La tabella seguente mostra tutti i dati importati nell'archivio di Configurazione app:

Chiave valore Etichetta Tipo di contenuto
.appconfig.featureflag/Beta {"id":"Beta","description":"","enabled": false,"conditions":{"client_filters":[]}} sviluppo application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Avviso sviluppo
Database:ConnectionString {"uri":"https://<Key-Vault-name.vault.azure.net/secrets/db-secret>"} test application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

Profilo contenuto file: KVSet

Negli strumenti di Configurazione app, il profilo del contenuto del file KVSet è uno schema di file che contiene tutte le proprietà di una coppia chiave-valore di Configurazione app. Sono inclusi il nome della chiave, il relativo valore, l'etichetta, il tipo di contenuto e i relativi tag. Poiché tutte le proprietà di un valore chiave si trovano nel file, non è necessario specificare le regole di trasformazione quando si importa il file.

Quando si usa il profilo KVSet, è possibile definire valori chiave normali, riferimenti a Key Vault e flag di funzionalità in un unico file. Di conseguenza, questo profilo è utile se si vogliono gestire tutti i dati di Configurazione app in un unico file e importarli in un unico passaggio.

I file che usano questo profilo sono in formato JSON. Per la specifica dello schema, vedere lo schema del file KVSet.

Il file seguente, appconfigdata.json, si basa sul profilo di contenuto del file KVSet. Questo file contiene un flag di funzionalità, un riferimento a Key Vault e un valore chiave standard.

{
  "items": [
    {
      "key": ".appconfig.featureflag/Beta",
      "value": "{\"id\":\"Beta\",\"description\":\"Beta feature\",\"enabled\":true,\"conditions\":{\"client_filters\":[]}}",
      "label": "dev",
      "content_type": "application/vnd.microsoft.appconfig.ff+json;charset=utf-8",
      "tags": {}
    },
    {
      "key": "Database:ConnectionString",
      "value": "{\"uri\":\"https://<Key-Vault-name>.vault.azure.net/secrets/db-secret\"}",
      "label": "test",
      "content_type": "application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8",
      "tags": {}
    },
    {
      "key": "Logging:LogLevel:Default",
      "value": "Debug",
      "label": "dev",
      "content_type": null,
      "tags": {}
    }
  ]
}

Nella sezione precedente viene illustrato come importare dati nell'archivio di Configurazione app. È possibile esportare i dati in un file usando il comando dell'interfaccia della riga di comando di Azure seguente:

az appconfig kv export --profile appconfig/kvset --label * --name <App-Configuration-store-name> --destination file --path appconfigdata.json --format json 

Dopo aver esportato il file, aprirlo in un editor di testo e apportare le modifiche seguenti:

  • Imposta la proprietà Beta del flag di funzionalità enabled su true.
  • Impostare la proprietà Logging:LogLevel:Default su Debug.

Per importare il file aggiornato nel tuo archivio App Configuration, esegui il seguente comando CLI, che include il parametro --profile appconfig/kvset. Non è necessario specificare regole di trasformazione dei dati, ad esempio un separatore, un'etichetta o un tipo di contenuto come è stato fatto per il profilo di contenuto file predefinito. Tutte le informazioni necessarie sono già presenti nel file.

az appconfig kv import --profile appconfig/kvset --name <App-Configuration-store-name> --source file --path appconfigdata.json --format json

Note

Il profilo di contenuto del file KVSet è attualmente supportato in:

La tabella seguente mostra tutti i dati importati nell'archivio di Configurazione app:

Chiave valore Etichetta Tipo di contenuto
.appconfig.featureflag/Beta {"id":"Beta","description":"Funzionalità Beta","enabled":true,"conditions":{"client_filters":[]}} sviluppo application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Eseguire il debug sviluppo
Database:ConnectionString {"uri":"https://<Key-Vault-name.vault.azure.net/secrets/db-secret>"} test application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

Passaggi successivi