Azure 如何避免使用ARM模板重新部署已部署的资源?

Azure 如何避免使用ARM模板重新部署已部署的资源?,azure,azure-devops,azure-resource-manager,arm-template,Azure,Azure Devops,Azure Resource Manager,Arm Template,我是新手。我创建了一个ARM模板,用于在资源组中部署存储帐户和数据工厂 如果我想使用同一ARM模板将另一个资源添加到同一资源组中,我是否可以简单地将该资源添加到存储帐户和数据工厂部署代码下方的ARM模板中,然后运行ARM模板? 因为目前,当我运行同一个模板时,它会给我一个错误,说: 存储帐户已存在 似乎它正在尝试重新部署存储帐户,这是我不想要的。如何在每次必须部署新资源时使用相同的ARM模板,避免重新部署已部署的资源? 我可以在ARM模板中添加什么吗 注意:我不希望在这里使用PowerShell

我是新手。我创建了一个ARM模板,用于在资源组中部署存储帐户和数据工厂

如果我想使用同一ARM模板将另一个资源添加到同一资源组中,我是否可以简单地将该资源添加到存储帐户和数据工厂部署代码下方的ARM模板中,然后运行ARM模板?
因为目前,当我运行同一个模板时,它会给我一个错误,说:

存储帐户已存在

似乎它正在尝试重新部署存储帐户,这是我不想要的。如何在每次必须部署新资源时使用相同的ARM模板,避免重新部署已部署的资源?
我可以在ARM模板中添加什么吗

注意:我不希望在这里使用PowerShell或Azure CLI。我正在使用创建YAML任务的管道部署资源。
PFB我的样本模板:

{
   "$schema": "http://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
     "location": {
       "type": "string",
       "defaultValue": "West Europe"
     },
     "storageAccountName": {
        "type": "string",
        "defaultValue": "storageabc"
      }
     "accountType": {
       "type": "string"
     },
     "kind": {
       "type": "string"
     }
     ...
   },
   "resources": [
     {
       "name": "[parameters('storageAccountName')]",
       "type": "Microsoft.Storage/storageAccounts",
       "apiVersion": "2019-06-01",
       "location": "[parameters('location')]",
       "properties": {},
       "dependsOn": [],
       "sku": {
         "name": "[parameters('accountType')]"
       },
       "kind": "[parameters('kind')]"
     },
     {
        "type": "Microsoft.DataFactory/factories,
        "apiVersion": "2018-06-01"
        -
        -
        -
        ..
        
     }
   ],
   "outputs": {}
}

存储帐户名称必须是全局唯一的。也许有人已经使用了这个名字,因此这条信息

常见的模式是使用uniqueString(resourceGroup().id)函数来降低冲突的可能性

如果您确定此名称是唯一的,请确保重新部署到此同一资源组和订阅。如果您尝试重新部署到不同的资源组或订阅,Azure将尝试创建新资源,并会像收到一样向您抛出错误


模板部署是有作用域的,因此,如果更改作用域(在本例中为资源组),将获得一组基于此模板的新资源。对于名称在整个Azure中必须唯一的资源(即存储帐户或容器注册表、web应用程序、函数应用程序等),最佳做法是基于资源组id使用哈希。id包含订阅的guid,Azure确保其唯一,因此,发生碰撞的概率非常低。

相同的模板应该可以工作吗?我们每天部署包含存储帐户等内容的ARM模板,但不会出现此错误。你能给我一个你的模板样本以及你是如何部署它的吗?@juunas谢谢你的回复。我已经添加了我的模板示例。因此,如果我必须在datafactory资源下面的同一模板中添加一个新资源,并运行此模板,它会尝试重新部署存储帐户。ARM模板是幂等的,因此您可以根据需要多次运行它们,它们应该会给出相同的结果,如果您可以提供您试图部署的完整模板,那么判断您的question@Ganesh你想在不同的资源组中重新部署吗?@Thomas,不,我想在同一个资源组中部署。以下Miq提供的答案有助于解决此问题。任何其他建议都将受到赞赏:)谢谢Miq,这真的帮了大忙@甘尼什:很高兴听你这么说,如果你能接受这个答案,那就太棒了。