Azure DevOps의 Pipeline을 사용하여 Azure App Configuration 업데이트

Azure DevOps의 Pipeline을 사용하여 Git 리포지토리의 JSOn 파일에서 Azure App Configuration을 업데이트하는 방법을 알아봅니다.

환경


  • Azure DevOps
  • Repos
  • Pipelines (YAML)


  • Repos에 Git 리포지토리를 만들고 커밋 된 JSON 파일을 기반으로 App Configuration을 업데이트합니다.
    이 기사에서는 YAML 방식의 Pipeline 사용법이나 Azure DevOps의 Repos 사용법에 대해서는 언급하지 않습니다.

    도입하는 이점



    Git 저장소에 설정 파일을 넣으면,
  • App Configuration을 수동으로 업데이트하지 않아도 됩니다.
  • 설정 변경을 Git의 풀릭으로 체크할 수 있게 된다.

  • 등의 장점이 있습니다.

    JSON 파일의 예


    {
        "Integer": 1,
        "String": "string",
        "Object": {
            "Property1": 1,
            "Property2": "property",
            "Array": [
                1,
                2,
                3
            ],
            "ArrayObject": [
                {
                    "Aaa": 1,
                    "Bbb": 2
                },
                {
                    "Aaa": 3,
                    "Bbb": 4
                }
            ]
        }
    }
    

    Azure CLI 명령을 사용하여 App Configuration 업데이트



    App Configuration 업데이트는 Pipeline의 준비된 작업을 수행하는 것이 아니라 Azure CLI 명령의 az appconfig kv를 사용합니다.

    지정하는 방법은 여러 가지 있습니다만, 아래가 커맨드예입니다.
    az appconfig kv import --source file --name [App Configurationの名前] -s file --format json --path "[JSONファイルのパス" --content-type "application/json" --separator : --yes
    

    간단히 설명하면 JSON을 ':'로 구분하면서 가져올 수 있습니다. 실제로 가져온 후의 상태에 대해서는

    파이프라인 템플릿의 예



    다음과 같이 Azure CLI 명령을 호출하면 Pipeline에서 흘릴 수 있습니다.
    parameters:
      - name: subscriptionName
      - name: appConfigName
      - name: configFilePath
    
    steps:
    - task: AzureCLI@2
      displayName: 'Import: ${{ parameters.configFilePath }}'
      inputs:
        azureSubscription: '${{ parameters.subscriptionName }}'
        scriptType: ps
        scriptLocation: inlineScript
        inlineScript: |
          az appconfig kv import --source file --name ${{ parameters.appConfigName }} -s file --format json --path "${{ parameters.configFilePath }}" --content-type "application/json" --separator : --yes
    

    가져온 결과



    다음 이미지와 같이 ":"(콜론)으로 구분된 키로 각 ​​설정값이 저장됩니다. 배열은 퍼스되지 않고, 통째로 삽입되는 점은 주의입니다.



    로딩



    여기에서는 App Configuration에서 설정 로드를 생략합니다.

    다만, 「:」로 분할하는 메리트는 read측에도 있어, 예를 들어 "Object"의 부분 밖에 읽고 싶지 않는 경우, 다음과 같은 지정을 하는 것으로 불필요한 읽어들이기를 피할 수가 있습니다.
    builder.ConfigurationBuilder
        .AddAzureAppConfiguration(options =>
        {
            options
                .Connect("App Configurationの接続文字列")
                .Select("Object:*");
        })
        .Build();
    

    ※엄밀하게는 App Configuration의 접속 문자열이 아닌 AAD 인증으로 전환해야 할까 생각합니다

    좋은 웹페이지 즐겨찾기