Inicio rápido: Creación de un almacén de Azure App Configuration mediante una plantilla de Resource Manager

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. Se describe la implementación deseada sin escribir la secuencia de comandos de programación para crear la implementación.

Si su entorno cumple los requisitos previos y está familiarizado con el uso de plantillas de Resource Manager, 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.

Authorization

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 (clave-valor 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.

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 2020-07-01-preview o posterior del proveedor de recursos de App Configuration. 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.5.6.12127",
      "templateHash": "2173262573838896712"
    }
  },
  "parameters": {
    "configStoreName": {
      "type": "string",
      "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": "2021-10-01-preview",
      "name": "[parameters('configStoreName')]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "standard"
      }
    },
    {
      "copy": {
        "name": "configStoreKeyValue",
        "count": "[length(parameters('keyValueNames'))]"
      },
      "type": "Microsoft.AppConfiguration/configurationStores/keyValues",
      "apiVersion": "2021-10-01-preview",
      "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])).value]"
    },
    "reference_key_value_object": {
      "type": "object",
      "value": "[reference(resourceId('Microsoft.AppConfiguration/configurationStores/keyValues', parameters('configStoreName'), parameters('keyValueNames')[1]), '2021-10-01-preview', 'full')]"
    }
  }
}

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 porcentual, también conocida como codificación de direcciones URL, permite que las claves o etiquetas incluyan caracteres que no se permiten en los nombres de recursos de plantilla de Resource Manager. % 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 el acceso a datos de valor de clave a través de un vínculo privado desde una 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 de Resource Manager se ejecuta fuera de la red virtual, no se permite el acceso a los datos desde una de estas plantillas. Para permitirlo cuando se usa un vínculo privado, 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.

az appconfig update -g MyResourceGroup -n MyAppConfiguration --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 obtener información sobre cómo agregar la marca de características y la referencia de Key Vault a un almacén de App Configuration, consulte los siguientes ejemplos de plantilla de ARM.