Inicio rápido: Crear un almacén de Azure App Configuration mediante una plantilla de ARM

En este inicio rápido se describe cómo:

  • Implementar un almacén de App Configuration mediante una plantilla de Azure Resource Manager (ARM).
  • Crear pares clave-valor en un almacén de App Configuration mediante la plantilla de ARM.
  • Leer los pares clave-valor de un almacén de App Configuration en la plantilla de ARM.

Sugerencia

Las marcas de características y las referencias de Key Vault son tipos especiales de pares clave-valor. Consulte la sección Pasos siguientes para ver ejemplos de cómo crearlos mediante la plantilla de ARM.

Una plantilla de Azure Resource Manager es un archivo de notación de objetos JavaScript (JSON) que define tanto la infraestructura como la configuración de un proyecto. La plantilla usa sintaxis declarativa. Describes el despliegue previsto sin escribir la secuencia de comandos de programación para crear el despliegue.

Si su entorno cumple los requisitos previos y está familiarizado con las plantillas de ARM, seleccione el botón Implementar en Azure. La plantilla se abrirá en Azure Portal.

Botón para implementar la plantilla de Resource Manager en Azure.

Requisitos previos

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Autorización

La administración del recurso de Azure App Configuration dentro de una plantilla de ARM requiere el rol de Azure Resource Manager, como el de colaborador o propietario. El acceso a los datos de Azure App Configuration (valores clave o instantáneas) requiere la función de Azure Resource Manager y la función del plano de datos de Azure App Configuration en el modo de autenticación de ARM tránsito.

Importante

Configurar el modo de autenticación de ARM requiere la versión 2023-08-01-preview de la API de plano de control de App Configuration o posterior.

Revisión de la plantilla

La plantilla usada en este inicio rápido forma parte de las plantillas de inicio rápido de Azure. Crea un almacén de App Configuration con dos pares clave-valor dentro. Luego, utiliza la función reference para generar los valores de los dos recursos de clave-valor. La lectura del valor de la clave de esta manera permite que se use en otros lugares de la plantilla.

En el inicio rápido se usa el elemento copy para crear varias instancias del recurso de clave-valor. Para más información sobre el elemento copy, consulte Iteración de recursos en las plantillas de Resource Manager.

Importante

Esta plantilla requiere la versión de la API del plano de control de App Configuration 2022-05-01 o una posterior. Esta versión utiliza la función reference para leer los pares clave-valor. La función listKeyValue que se usó para leer los pares clave-valor en la versión anterior no está disponible a partir de la versión 2020-07-01-preview.

{
  "$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')]"
      }
    }
  }
}

En la plantilla se definen dos recursos de Azure:

Sugerencia

El nombre del recurso de keyValues es una combinación de clave y etiqueta. La clave y la etiqueta están unidas por el delimitador $. La etiqueta es opcional. En el ejemplo anterior, el recurso keyValues con el nombre myKey crea un valor de clave sin etiqueta.

La codificación de porcentaje, también conocida como codificación URL, permite que las claves o etiquetas incluyan caracteres que no están permitidos en los nombres de recurso de las plantillas de ARM. % tampoco es un carácter permitido, por lo que se usa ~ en su lugar. Para codificar correctamente un nombre, siga estos pasos:

  1. Aplicación de la codificación de direcciones URL
  2. Reemplazar ~ con ~7E
  3. Reemplazar % con ~

Por ejemplo, para crear un par clave-valor con el nombre de clave AppName:DbEndpoint y el nombre de etiqueta Test, el nombre del recurso debe ser AppName~3ADbEndpoint$Test.

Nota

App Configuration permite acceder a datos de clave-valor a través de un enlace privado desde su red virtual. De forma predeterminada, cuando la característica está habilitada, se deniegan todas las solicitudes de datos de App Configuration a través de la red pública. Dado que la plantilla ARM se ejecuta fuera de la red virtual, no se permite el acceso a los datos desde una plantilla ARM. Para permitir el acceso a los datos desde una plantilla de ARM cuando se usa un Private Link, puede habilitar el acceso a la red pública mediante el siguiente comando de la CLI de Azure. Es importante tener en cuenta las implicaciones de seguridad que supone habilitar el acceso a la red pública en este escenario. Sustituye <ResourceGroupName> y <AppConfigurationStoreName> por los nombres de tu grupo de recursos y del almacén de configuración de aplicaciones.

az appconfig update -g <ResourceGroupName> -n <AppConfigurationStoreName> --enable-public-network true

Implementación de la plantilla

Seleccione la imagen siguiente para iniciar sesión en Azure y abrir una plantilla. La plantilla crea un almacén de App Configuration con dos pares clave-valor dentro.

Botón para implementar la plantilla de Resource Manager en Azure.

También puede implementar la plantilla con el siguiente cmdlet de PowerShell. Los pares clave-valor estarán en la salida de la consola de 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 ..."

Revisión de los recursos implementados

  1. Inicie sesión en Azure Portal.
  2. En el cuadro de búsqueda de Azure Portal, escriba App Configuration. En la lista, seleccione App Configuration.
  3. Seleccione el recurso de App Configuration recién creado.
  4. En Operaciones, haga clic en Explorador de configuración.
  5. Compruebe que existen dos pares clave-valor.

Limpieza de recursos

Cuando ya no los necesite, elimine el grupo de recursos, el almacén de App Configuration y todos los recursos relacionados. Si tiene pensado usar el almacén de App Configuration en el futuro, puede conservarlo. Si no va a seguir usando este almacén, ejecute el siguiente cmdlet para eliminar todos los recursos creados en este inicio rápido:

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

Pasos siguientes

Para más información sobre cómo agregar una marca de función y una referencia a Key Vault a un almacén de App Configuration, consulte los ejemplos siguientes de plantillas ARM.