Tengo una plantilla de Azure Resource Manager para activar una cuenta de almacenamiento, y su nombre se configura mediante un parámetro, como este:
"resources": [
{
"name": "[parameters('storageAccountName')]",
"type": "Microsoft.Storage/storageAccounts",
Quiero generar detalles del recurso, pero no puedo ver una forma de hacer referencia a la cuenta de almacenamiento, ya que la mayoría de los ejemplos que puedo encontrar hacen referencia al recurso por su nombre.
He probado esto:
"outputs": {
"storageKey": {
"type": "string",
"value": "[reference([parameters('storageAccountName')])]"
}
}
Pero recibe el mensaje de error:
La salida de plantilla 'storageKey' en la línea '49' y la columna '23' no es válida: no se puede analizar la expresión de lenguaje 'referencia ([parámetros (' storageAccountName ')])': token esperado 'Identificador' y actual 'LeftSquareBracket'
Entonces, ¿cómo hago referencia al recurso si su nombre se establece usando un archivo parameters.json?
3 respuestas
Solo para agregar a la respuesta existente (que está bien, pero incompleta). Una mejor manera de hacerlo es utilizando la función resourceId()
:
reference(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), 'api-version-goes-here')
Hay varias razones para eso.
- Esta es una forma universal de hacer referencia a un recurso. puede hacer referencia a un recurso en otro grupo de recursos \ otra suscripción utilizando este método (y no solo recursos en la misma implementación). puede soltar 'api-version-goes-here' para obtener recursos en la misma implementación
- la respuesta existente fallará si tiene 2 o más recursos de diferente tipo pero con el mismo nombre (por ejemplo, cuenta de almacenamiento y máquina virtual), porque no podrá determinar a qué recurso se dirige
PD. lo mismo ocurre con dependsOn
, puede salirse con la suya solo con el nombre, pero siempre es mejor \ más confiable usar resourceId()
, especialmente en plantillas grandes \ complicadas.
Se recomienda el uso de resourceId ().
Consulte la documentación de MS: https: // docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-template-functions-resource#resourceid
Devuelve el identificador único de un recurso. Utiliza esta función cuando el nombre del recurso es ambiguo o no está provisto dentro de la misma plantilla.
Me lo imaginé. Los corchetes internos eran innecesarios:
"storageKey": {
"type": "Object",
"value": "[reference(parameters('storageAccountName'))]"
}
Trabajos.
Preguntas relacionadas
Nuevas preguntas
azure
Microsoft Azure es una plataforma como servicio e infraestructura como plataforma de computación en la nube. Utilice esta etiqueta para preguntas de programación relacionadas con Azure. La ayuda general del servidor se puede obtener en Super User o Server Fault.