구성 파일에 대한 Azure App Configuration 지원

파일은 구성 데이터를 저장하는 가장 일반적인 방법 중 하나입니다. 빠르게 시작할 수 있도록 App Configuration은 구성 파일을 가져오는 데 도움이 되는 도구가 있으므로 데이터를 수동으로 입력할 필요가 없습니다. 이 작업은 데이터를 가져온 후 App Configuration 데이터를 관리하려는 경우 일회성 데이터 마이그레이션입니다. 예를 들어 구성을 코드로 채택하는 다른 경우에는 파일에서 구성 데이터를 계속 관리하고 CI/CD 프로세스의 일부로 반복적으로 가져올 수 있습니다. 다음 두 가지 시나리오 중 하나가 적용되는 것을 확인할 수 있습니다.

  • 구성 파일을 이전 형식으로 유지합니다. 이 형식은 개발 중에 애플리케이션 또는 로컬 구성에 대한 대체 구성으로 파일을 사용하려는 경우에 유용합니다. 구성 파일을 가져올 때 데이터를 App Configuration 키 값으로 변환할 방법을 지정합니다. 이 옵션은 포털, Azure CLI, Azure Pipeline Push 작업, GitHub Actions 등과 같은 도구를 가져오는 App Configuration의 기본값 파일 콘텐츠 프로필입니다.
  • 모든 App Configuration 키-값 속성이 포함된 형식으로 구성 파일을 유지합니다. 파일을 가져올 때 키-값의 모든 속성이 이미 파일에 있으므로 변환 규칙을 지정할 필요가 없습니다. 이 옵션은 App Configuration 가져오기 도구에서 KVSet 파일 콘텐츠 프로필이라고 합니다. 일반 키-값, Key Vault 참조 및 기능 플래그를 포함한 모든 App Configuration 데이터를 한 파일로 관리하고 한 번에 가져오려는 경우에 유용합니다.

이 문서의 나머지 부분에는 두 파일 콘텐츠 프로필에 대해 자세히 설명하고 Azure CLI를 예로 사용합니다. 다른 App Configuration 가져오기 도구에도 동일한 개념이 적용됩니다.

파일 콘텐츠 프로필: 기본값

App Configuration 도구의 기본값 파일 콘텐츠 프로필은 기존 프로그래밍 프레임워크 또는 시스템에서 널리 채택된 기존 구성 파일 스키마를 나타냅니다. App Configuration 은 JSON, YAML 또는 속성 파일 형식을 지원합니다.

다음 예제는 하나의 구성 설정과 하나의 기능 플래그를 포함하는 appsettings.json 구성 파일입니다.

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

다음 CLI 명령을 실행하여 dev 레이블을 사용하여 App Configuration으로 가져오고 콜론(:)을 구분 기호로 사용하여 키 이름을 평면화합니다. 필요에 따라 "--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 내용 유형
.appconfig.featureflag/Beta {"id":"Beta","description":"","enabled":false,"conditions":{"client_filters":[]}} 개발 application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default Warning 개발
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 파일 스키마를 참조하세요.

다음 예제는 기능 플래그, Key Vault 참조 및 일반 키-값을 포함하는 KVSet 파일 콘텐츠 프로필을 기반으로 하는 파일 이름 appconfigdata.json의 파일입니다.

{
  "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:Default을(를) Debug(으)로 변경합니다.

"--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 내용 유형
.appconfig.featureflag/Beta {"id":"Beta","description":"Beta feature","enabled":true,"conditions":{"client_filters":[]}} 개발 application/vnd.microsoft.appconfig.ff+json;charset=utf-8
Logging:LogLevel:Default 디버그 개발
Database:ConnectionString {"uri":"https://<your-vault-name>.vault.azure.net/secrets/db-secret"} 테스트 application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8

다음 단계