次の方法で共有


構成ファイルの Azure App Configuration サポート

構成データを格納する一般的な方法は、ファイルを使用することです。 Azure App Configuration を使用して構成データを管理するが、現在ファイルを使用している場合は、データを手動で入力する必要はありません。 ツールを使用して 構成ファイルをインポートできます

App Configuration でデータを管理する予定の場合、インポート操作は 1 回限りのデータ移行です。 もう 1 つのオプションは、ファイル内の構成データの管理を続行し、継続的インテグレーションと継続的デリバリー (CI/CD) プロセスの一環としてファイルを繰り返しインポートすることです。 このケースは、 コードとして構成を採用するときに発生します。

構成ファイルを使用する場合は、次の 2 つのファイル コンテンツ プロファイルを使用できます。

  • 既定のファイル コンテンツ プロファイル: 従来の構成ファイル スキーマ
  • KVSet ファイル コンテンツ プロファイル: すべての App Configuration のキー・バリューのプロパティを含むスキーマ

この記事では、両方のファイル コンテンツ プロファイルについて説明します。 また、構成ファイルのインポートとエクスポートの例も示します。 この例では Azure CLI を使用していますが、この記事の概念は他の App Configuration インポート方法にも適用されます。

ファイル コンテンツ プロファイル: 既定値

App Configuration ツールでは、既定のファイル コンテンツ プロファイルは、既存のプログラミング フレームワークやシステムで広く採用されている従来の構成ファイル スキーマです。 このプロファイルは、Azure portal、Azure CLI、Azure Pipelines の Azure App Configuration インポート タスク、GitHub Actions などの App Configuration インポート ツールで使用されます。 App Configuration では、JSON、YAML、およびプロパティのファイル形式がサポートされます。

このプロファイルは、開発中にアプリケーションまたはローカル構成のフォールバック構成としてファイルを使用する場合に役立ちます。 構成ファイルをインポートするときに、データを App Configuration のキー値と機能フラグに変換する方法を指定します。

次の構成ファイル appsettings.jsonでは、既定のファイル コンテンツ プロファイルの例を示します。 このファイルには、1 つの構成設定と 1 つの機能フラグが含まれています。

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

このファイルを App Configuration にインポートするには、次の Azure CLI コマンドを実行します。 設定と機能フラグに dev ラベルを適用し、区切り記号としてコロン (:) を使用してキー名をフラット化します。

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

必要に応じて、上記のコマンドに次のパラメーターを追加できます: --profile appconfig/default。 既定のプロファイルが appconfig/defaultされているため、パラメーターは省略可能です。

Azure Key Vault 参照では、インポート時に特定のコンテンツ タイプが必要です。 その結果、次のファイルに示すように、それらを別のファイルに保持 keyvault-refs.json

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

このファイルをインポートするには、次の Azure CLI コマンドを実行します。 test ラベルを Key Vault 参照に適用し、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

次の表は、App Configuration ストアにインポートされたすべてのデータを示しています。

キー Label コンテンツの種類
.appconfig.featureflag/Beta {"id":"Beta","description":"","enabled": false,"conditions":{"client_filters":[]}} dev application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default 警告 dev
Database:ConnectionString {"uri":"https://<Key-Vault-name>.vault.azure.net/secrets/db-secret"} テスト application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

ファイル コンテンツ プロファイル: KVSet

App Configuration ツールでは、KVSet ファイル コンテンツ プロファイルは、App Configuration キー値のすべてのプロパティを含むファイル スキーマです。 キー名、その値、ラベル、コンテンツ タイプ、およびタグが含まれます。 キー値のすべてのプロパティはファイル内にあるため、ファイルをインポートするときに変換ルールを指定する必要はありません。

KVSet プロファイルを使用する場合は、通常のキー値、Key Vault 参照、および機能フラグを 1 つのファイルに定義できます。 そのため、このプロファイルは、すべての App Configuration データを 1 つのファイルで管理し、1 つの手順でインポートする場合に役立ちます。

このプロファイルを使用するファイルは JSON 形式です。 スキーマの仕様については、 KVSet ファイルスキーマを参照してください。

次のファイル appconfigdata.jsonは、KVSet ファイルのコンテンツ プロファイルに基づいています。 このファイルには、機能フラグ、Key Vault 参照、標準のキー値が含まれています。

{
  "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": {}
    }
  ]
}

前のセクションでは、App Configuration ストアにデータをインポートする方法の例を示します。 次の Azure CLI コマンドを使用して、そのデータをファイルにエクスポートできます。

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

ファイルをエクスポートした後、テキスト エディターでファイルを開き、次の変更を行います。

  • Beta機能フラグenabledプロパティをtrueに設定します。
  • Logging:LogLevel:Default プロパティを Debugに設定します。

更新されたファイルを App Configuration ストアにインポートするには、 --profile appconfig/kvset パラメーターを含む次の CLI コマンドを実行します。 既定のファイル コンテンツ プロファイルの場合と同様に、区切り記号、ラベル、コンテンツ タイプなどのデータ変換ルールを指定する必要はありません。 必要なすべての情報が既にファイルに含まれています。

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

注意

KVSet ファイルのコンテンツ プロファイルは現在、次でサポートされています。

次の表は、App Configuration ストアにインポートされたすべてのデータを示しています。

キー Label コンテンツの種類
.appconfig.featureflag/Beta {"id":"Beta","description":"ベータ機能","enabled":true,"conditions":{"クライアントフィルター":[]}} dev application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default デバッグ dev
Database:ConnectionString {"uri":"https://<Key-Vault-name>.vault.azure.net/secrets/db-secret"} テスト application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

次の手順