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

ファイルは構成データを格納する最も一般的な方法の 1 つです。 すばやく開始できるように、App Configuration には構成ファイルのインポートに役立つツールが用意されているため、データを手動で入力する必要はありません。 インポート後にデータを App Configuration で管理する予定の場合、この操作は 1 回限りのデータ移行です。 他のいくつかのケースでは、たとえば、コードとして構成を採用する場合、ファイル内の構成データを管理し続け、CI/CD プロセスの一部としてそれらを繰り返しインポートすることができます。 次の 2 つのシナリオのいずれかが該当する場合があります。

  • 構成ファイルは、以前の形式で保持します。 この形式は、開発中に、ファイルをアプリケーションまたはローカル構成のフォールバック構成として使用する場合に役立ちます。 構成ファイルをインポートする際に、データを App Configuration のキー値に変換する方法を指定します。 このオプションは、ポータル、Azure CLI、Azure パイプライン プッシュ タスク、GitHub アクションなどのアプリ構成インポート ツールの既定のファイル コンテンツ プロファイルです。
  • 構成ファイルは、すべての App Configuration キー値プロパティを含む形式で保持します。 ファイルをインポートする際に、キー値のすべてのプロパティが既にファイル内にあるため、変換規則を指定する必要はありません。 このオプションは、App Configuration インポート ツールでは KVSet ファイル コンテンツ プロファイルと呼ばれます。 通常のキー値、Key Vault 参照、機能フラグなど、すべての App Configuration データを 1 つのファイルで管理し、それらを 1 回でインポートする場合に役立ちます。

このドキュメントの残りの部分では、両方のファイル コンテンツ プロファイルについて詳しく説明し、Azure CLI を例として使用します。 他の App Configuration インポート ツールにも同じ概念が適用されます。

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

アプリ構成ツールの既定のファイル コンテンツ プロファイルは、既存のプログラミング フレームワークまたはシステムで広く採用されている従来の構成ファイル スキーマを参照しています。 App Configuration では、JSON、Yaml、または Properties のファイル形式がサポートされています。

次の例は、構成設定を 1 つと機能フラグを 1 つ含む appsettings.json という名前の構成ファイルです。

{
    "Logging": {
        "LogLevel": {
            "Default": "Warning"
        }
    },
    "FeatureManagement": {
        "Beta": false
    }
}

次の CLI コマンドを実行して、dev ラベルを付けてアプリ構成にインポートし、コロン (:) を区切り文字として使用してキー名をフラット化します。 オプションで、パラメーター "--profile appconfig/default" を追加できます。 それは既定値であるため、この例ではスキップされます。

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

Key Vault 参照にはインポート中に特定のコンテンツ タイプが必要であるため、それらは別のファイルに保存します。 次の例は、keyvault-refs.json という名前のファイルです。

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

次の CLI コマンドを実行して、test ラベルおよび Key Vault 参照コンテンツ タイプを使用してそれをインポートします。

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

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

キー Label Content type
.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://<your-vault-name>.vault.azure.net/secrets/db-secret"} テスト application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

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

App Configuration ツールの KVSet ファイル コンテンツ プロファイルからは、キー、値、ラベル、コンテンツタイプ、タグなど、App Configuration のキー値のすべてのプロパティを含むファイル スキーマが参照されます。 このファイルは 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://<your-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 ストアにデータがあると、CLI コマンドを使用してそれをファイルにエクスポートできます。

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

ファイルがエクスポートされたら、Beta 機能フラグ enabled プロパティを true に更新し、Logging:LogLevel:DefaultDebug に変更します。

パラメーター "--profile appconfig/kvset" で次の CLI コマンドを実行して、ファイルを App Configuration ストアにインポートします。 既定のファイル コンテンツ プロファイル セクションで行ったように、区切り記号、ラベル、コンテンツ タイプなどのデータ変換規則を指定する必要はありません。すべての情報は既にファイルに含まれているからです。

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

注意

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

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

キー Label Content type
.appconfig.featureflag/Beta {"id":"Beta","description":"Beta feature","enabled":true,"conditions":{"client_filters":[]}} dev application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default デバッグ dev
Database:ConnectionString {"uri":"https://<your-vault-name>.vault.azure.net/secrets/db-secret"} テスト application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

次の手順