Início Rápido: Criar um armazenamento da Configuração de Aplicativos do Azure usando um modelo do ARM

Este guia de início rápido descreve como:

  • Implantar um repositório de Configuração de Aplicativos usando um modelo do ARM (modelo do Azure Resource Manager).
  • Criar pares chave/valor em um repositório de Configuração de Aplicativos usando um modelo do ARM.
  • Ler pares chave/valor em um repositório de Configuração de Aplicativos por meio do modelo do ARM.

Dica

Sinalizadores de recursos e referências do Key Vault são tipos especiais de chave-valor. Confira as Próximas etapas para obter exemplos de como criá-los usando o modelo do ARM.

Um Modelo do Azure Resource Manager é um arquivo JSON (JavaScript Object Notation) que define a infraestrutura e a configuração do seu projeto. O modelo usa a sintaxe declarativa. Você descreve a implantação pretendida sem escrever a sequência de comandos de programação para criar a implantação.

Se seu ambiente atender aos pré-requisitos e você estiver familiarizado com o uso de modelos ARM, selecione o botão Implantar no Azure. O modelo será aberto no portal do Azure.

Botão para implantar o modelo do Resource Manager no Azure.

Pré-requisitos

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Autorização

O gerenciamento do recurso Configuração de Aplicativos do Azure dentro de um modelo do ARM requer a função Azure Resource Manager, como colaborador ou proprietário. O acesso a dados da Configuração de Aplicativos do Azure (valores-chave, instantâneos) requer a função Azure Resource Manager e a função de plano de dados da Configuração de Aplicativos do Azure no modo de autenticação do ARM de passagem.

Importante

Configurar o modo de autenticação do ARM requer a versão 2023-08-01-preview da API do plano de controle da Configuração de Aplicativos ou posterior.

Examinar o modelo

O modelo usado neste início rápido é proveniente dos Modelos de Início Rápido do Azure. Ele cria um repositório de Configuração de Aplicativos com dois pares chave/valor dentro. Em seguida, ele usa a função reference para gerar os valores dos dois recursos de par chave/valor. Dessa maneira, a leitura do valor da chave permite que ele seja usado em outros locais do modelo.

O guia de início rápido usa o elemento copy para criar várias instâncias do recurso de par chave/valor. Para saber mais sobre o elemento copy, confira Iteração de recursos em modelos do ARM.

Importante

Esse modelo requer a versão 2022-05-01 da API do plano de controle da Configuração de Aplicativos ou posterior. Essa versão usa a função reference para ler pares chave/valor. A função listKeyValue que foi usada para ler valores de chave na versão anterior não está disponível da versão 2020-07-01-preview em diante.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "_generator": {
      "name": "bicep",
      "version": "0.30.23.60470",
      "templateHash": "539800420350662594"
    }
  },
  "parameters": {
    "configStoreName": {
      "type": "string",
      "defaultValue": "[format('appconfig{0}', uniqueString(resourceGroup().id))]",
      "metadata": {
        "description": "Specifies the name of the App Configuration store."
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Specifies the Azure location where the app configuration store should be created."
      }
    },
    "keyValueNames": {
      "type": "array",
      "defaultValue": [
        "myKey",
        "myKey$myLabel"
      ],
      "metadata": {
        "description": "Specifies the names of the key-value resources. The name is a combination of key and label with $ as delimiter. The label is optional."
      }
    },
    "keyValueValues": {
      "type": "array",
      "defaultValue": [
        "Key-value without label",
        "Key-value with label"
      ],
      "metadata": {
        "description": "Specifies the values of the key-value resources. It's optional"
      }
    },
    "contentType": {
      "type": "string",
      "defaultValue": "the-content-type",
      "metadata": {
        "description": "Specifies the content type of the key-value resources. For feature flag, the value should be application/vnd.microsoft.appconfig.ff+json;charset=utf-8. For Key Value reference, the value should be application/vnd.microsoft.appconfig.keyvaultref+json;charset=utf-8. Otherwise, it's optional."
      }
    },
    "tags": {
      "type": "object",
      "defaultValue": {
        "tag1": "tag-value-1",
        "tag2": "tag-value-2"
      },
      "metadata": {
        "description": "Adds tags for the key-value resources. It's optional"
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.AppConfiguration/configurationStores",
      "apiVersion": "2024-05-01",
      "name": "[parameters('configStoreName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "standard"
      }
    },
    {
      "copy": {
        "name": "configStoreKeyValue",
        "count": "[length(parameters('keyValueNames'))]"
      },
      "type": "Microsoft.AppConfiguration/configurationStores/keyValues",
      "apiVersion": "2024-05-01",
      "name": "[format('{0}/{1}', parameters('configStoreName'), parameters('keyValueNames')[copyIndex()])]",
      "properties": {
        "value": "[parameters('keyValueValues')[copyIndex()]]",
        "contentType": "[parameters('contentType')]",
        "tags": "[parameters('tags')]"
      },
      "dependsOn": [
        "[resourceId('Microsoft.AppConfiguration/configurationStores', parameters('configStoreName'))]"
      ]
    }
  ],
  "outputs": {
    "reference_key_value_value": {
      "type": "string",
      "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[0]), '2024-05-01').value]"
    },
    "reference_key_value_object": {
      "type": "object",
      "value": {
        "name": "[parameters('keyValueNames')[1]]",
        "properties": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2024-05-01')]"
      }
    }
  }
}

Há dois recursos do Azure definidos no modelo:

Dica

O nome do recurso keyValues é uma combinação de chave e rótulo. A chave e o rótulo são unidos pelo delimitador $. O rótulo é opcional. No exemplo acima, o recurso keyValues com o nome myKey cria um par chave/valor sem um rótulo.

A codificação por percentual, também conhecida como codificação de URL, permite que chaves ou rótulos incluam caracteres que não são permitidos em nomes de recursos do modelo do ARM. % não é um caractere permitido, portanto, ~ é usado no lugar dele. Para codificar corretamente um nome, siga estas etapas:

  1. Aplicar codificação de URL
  2. Substitua ~ por ~7E
  3. Substitua % por ~

Por exemplo, para criar um par chave-valor com o nome da chave AppName:DbEndpoint e o nome do rótulo Test, o nome do recurso deve ser AppName~3ADbEndpoint$Test.

Observação

A Configuração de Aplicativos permite o acesso a dados de chave/valor em um link privado de sua rede virtual. Por padrão, quando o recurso está habilitado, todas as solicitações para os dados de Configuração de Aplicativos pela rede pública são negadas. Como o modelo do ARM é executado fora de sua rede virtual, o acesso a dados de um modelo do ARM não é permitido. Para permitir o acesso a dados de um modelo do ARM quando um link privado é usado, você pode habilitar o acesso à rede pública usando o comando da CLI do Azure a seguir. É importante considerar as implicações de segurança de habilitar o acesso à rede pública neste cenário.

az appconfig update -g MyResourceGroup -n MyAppConfiguration --enable-public-network true

Implantar o modelo

Selecione a imagem a seguir para entrar no Azure e abrir um modelo. O modelo cria um repositório de Configuração de Aplicativos com dois pares chave/valor dentro.

Botão para implantar o modelo do Resource Manager no Azure.

Você também pode implantar o modelo usando o cmdlet do PowerShell a seguir. Os pares chave/valor estarão na saída do console do PowerShell.

$projectName = Read-Host -Prompt "Enter a project name that is used for generating resource names"
$location = Read-Host -Prompt "Enter the location (i.e. centralus)"
$templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.appconfiguration/app-configuration-store-kv/azuredeploy.json"

$resourceGroupName = "${projectName}rg"

New-AzResourceGroup -Name $resourceGroupName -Location "$location"
New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri

Read-Host -Prompt "Press [ENTER] to continue ..."

Examinar os recursos implantados

  1. Entre no portal do Azure.
  2. Na caixa de pesquisa do portal do Azure, digite Configuração de Aplicativos. Selecione Configuração de Aplicativos na lista.
  3. Selecione o recurso de Configuração de Aplicativos recém-criado.
  4. Em Operações, clique em Gerenciador de configurações.
  5. Verifique se há dois pares chave/valor.

Limpar os recursos

Exclua o grupo de recursos, o repositório da Configuração de Aplicativos e todos os recursos relacionados quando eles não forem mais necessários. Se estiver planejando usar o repositório da Configuração de Aplicativos no futuro, você pode ignorar a exclusão deles. Se você não pretende continuar usando esse repositório, exclua todos os recursos criados por este início rápido executando o seguinte cmdlet:

$resourceGroupName = Read-Host -Prompt "Enter the Resource Group name"
Remove-AzResourceGroup -Name $resourceGroupName
Write-Host "Press [ENTER] to continue..."

Próximas etapas

Para saber mais sobre como adicionar um sinalizador de recurso e uma referência ao Key Vault a um repositório da Configuração de Aplicativos, confira os exemplos de modelo do ARM abaixo.