Мне нужен уникальный идентификатор при каждом настраиваемом развертывании с использованием шаблона ARM для назначения имени ресурса (uniqueName), которое должно быть глобально уникальным. Согласно документации newGuid () возвращает значение в формате глобального уникального идентификатора. Эта функция может использоваться только в значении по умолчанию для параметра. Поскольку функция newGuid () может быть вызвана только в разделе параметров, но я не хочу передавать блок ввода пользователю, потому что пользователь может редактировать поле при развертывании этого, так как я могу скрыть это от пользователя или есть ли другие способ создания одного и того же уникального guid глобально при каждом развертывании?
Я пробовал создать такой же уникальный идентификатор, используя это в разделе переменных, но он работает только несколько раз развертывания. Я не уверен, что проблема с развертыванием, но это возможно, потому что функция guid не всегда создает уникальное поле.
"variables": {
"uniqueName":"[guid(resourceGroup().id, deployment().name)]"
}
У меня есть этот шаблон.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"appname": {
"defaultValue": "xyz",
"type": "String"
},
"uniqueName": {
"defaultValue": "[newGuid()]",
"type": "String"
},
"myIdentity": {
"type": "String"
}
},
"variables": {
"location": "[resourceGroup().location]",
"ResourceGroupName": "[resourceGroup().name]"
},
"resources": [
{
"type": "Microsoft.Resources/deploymentScripts",
"apiVersion": "2019-10-01-preview",
"name": "[parameters('uniqueName')]",
"location": "[variables('location')]",
"kind": "AzureCLI",
"identity": {
"type": "UserAssigned",
"userAssignedIdentities": {
"[resourceID('Microsoft.ManagedIdentity/userAssignedIdentities/', parameters('myIdentity'))]": {}
}
},
"properties": {
"AzCliVersion": "2.0.80",
"timeout": "PT10M",
"arguments": "[parameters('appname')]",
"cleanupPreference": "OnSuccess",
"retentionInterval": "P1D",
"supportingScriptUris": [
"https://some-uri/test.sh"
],
"scriptContent": "[concat('./test.sh ', string(parameters('appname')), ' > $AZ_SCRIPTS_OUTPUT_PATH')]"
}
}
],
"outputs": {
"result": {
"type": "String",
"value": "[base64(string(reference(parameters('resourceName')).outputs))]"
}
}
}
Ошибка развертывания после некоторого успешное развертывание - это.
{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"Conflict","message":"{\r\n \"status\": \"canceled\",\r\n \"error\": {\r\n \"code\": \"ResourceDeploymentFailure\",\r\n \"message\": \"The resource operation completed with terminal provisioning state 'canceled'.\",\r\n \"details\": [\r\n {\r\n \"code\": \"DeploymentScriptExceededMaxAllowedTime\"\r\n }\r\n ]\r\n }\r\n}"}]}