Azure 如何在每次部署时创建唯一的Guid,或在ARM模板中向用户隐藏参数newGuid()函数?

Azure 如何在每次部署时创建唯一的Guid,或在ARM模板中向用户隐藏参数newGuid()函数?,azure,arm-template,Azure,Arm Template,我需要使用ARM模板在每个自定义部署中使用唯一标识符来分配资源名称(uniqueName),该名称应该是全局唯一的。根据文档newGuid()以全局唯一标识符的格式返回值。此函数只能在参数的默认值中使用。 由于newGuid()函数只能在parameters部分中调用,但我不想将输入块提供给用户,因为用户可以在部署时编辑该字段,所以如何对用户隐藏该字段,或者是否有其他方法在每次部署时全局创建相同的唯一guid 我已经尝试过在变量部分使用它来创建相同的唯一guid,但它只在部署的几次中有效。我不确

我需要使用ARM模板在每个自定义部署中使用唯一标识符来分配资源名称(uniqueName),该名称应该是全局唯一的。根据文档newGuid()以全局唯一标识符的格式返回值。此函数只能在参数的默认值中使用。 由于newGuid()函数只能在parameters部分中调用,但我不想将输入块提供给用户,因为用户可以在部署时编辑该字段,所以如何对用户隐藏该字段,或者是否有其他方法在每次部署时全局创建相同的唯一guid

我已经尝试过在变量部分使用它来创建相同的唯一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}"}]}

第1点:在资源中添加此属性后,此问题得到解决。 添加此属性后,请确保某些容器未运行。手动删除以前失败的部署创建的存储帐户和容器

"cleanupPreference": "Always"
始终:一旦脚本执行进入终端状态,删除自动创建的资源。如果使用现有存储帐户,脚本服务将删除在该存储帐户中创建的文件共享。因为在清理资源之后,deploymentScripts资源可能仍然存在,所以脚本服务会在删除资源之前保留脚本执行结果,例如stdout、outputs、return value等

最初属性设置为“CleanupReference”:“OnSuccess”,它没有删除失败部署中创建的存储帐户和容器,并且在下次部署时出现问题

有关更多详细信息,请查看此

第2点。可以使用newGuid()函数创建唯一标识符,但只能在模板的参数部分创建

这将全局创建唯一的Id,但如果不想显示用户输入框,则guid()也可以使用

"variables": {
        "uniqueName":"[guid(resourceGroup().id, deployment().name)]"
}

有关更多详细信息,请参阅。

第1点:在参考资料中添加此属性后,此问题已得到解决。 添加此属性后,请确保某些容器未运行。手动删除以前失败的部署创建的存储帐户和容器

"cleanupPreference": "Always"
始终:一旦脚本执行进入终端状态,删除自动创建的资源。如果使用现有存储帐户,脚本服务将删除在该存储帐户中创建的文件共享。因为在清理资源之后,deploymentScripts资源可能仍然存在,所以脚本服务会在删除资源之前保留脚本执行结果,例如stdout、outputs、return value等

最初属性设置为“CleanupReference”:“OnSuccess”,它没有删除失败部署中创建的存储帐户和容器,并且在下次部署时出现问题

有关更多详细信息,请查看此

第2点。可以使用newGuid()函数创建唯一标识符,但只能在模板的参数部分创建

这将全局创建唯一的Id,但如果不想显示用户输入框,则guid()也可以使用

"variables": {
        "uniqueName":"[guid(resourceGroup().id, deployment().name)]"
}
有关更多详细信息,请参阅