Azure ResourceID函数未生成正确的资源ID?

Azure ResourceID函数未生成正确的资源ID?,azure,azure-resource-manager,arm-template,Azure,Azure Resource Manager,Arm Template,我有一个奇怪的问题,我有一个简单的ARM模板,将活动日志发送到日志分析工作区,应该足够简单,我的代码如下 { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": {

我有一个奇怪的问题,我有一个简单的ARM模板,将活动日志发送到日志分析工作区,应该足够简单,我的代码如下

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "workspaceName": {
      "type": "String"
    }
  },
  "resources": [
    {
      "type": "Microsoft.Insights/diagnosticSettings",
      "apiVersion": "2017-05-01-preview",
      "name": "send activity log to workspace",
      "dependsOn": [],
      "properties": {
        "workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('workspaceName'))]",
        "logs": [
          {
            "category": "Administrative",
            "enabled": true
          },
          {
            "category": "Alert",
            "enabled": true
          },
          {
            "category": "Autoscale",
            "enabled": true
          },
          {
            "category": "Policy",
            "enabled": true
          },
          {
            "category": "Recommendation",
            "enabled": true
          },
          {
            "category": "ResourceHealth",
            "enabled": true
          },
          {
            "category": "Security",
            "enabled": true
          },
          {
            "category": "ServiceHealth",
            "enabled": true
          }
        ]
      }
    }
  ]
}
但在输入my workspaceName参数并运行部署后,它会继续抱怨找不到工作区

“消息”:“资源” “/subscriptions/0000000-0000-0000-0000-0000000/providers/microsoft.operationalinsights/workspace/cstackhub-mcslog-analytics” 不存在。”

(I用0000替换实际子id) 我知道工作区在那里,奇怪的是,如果我查看资源管理器,并查看工作区id,我可以看到它实际上在那里 “/subscriptions/0000000-0000-0000-0000-0000000/resourcegroups/cstackhub sharedsvcs rg/providers/microsoft.operationalinsights/Workspace/cstackhub mcslog analytics”


因此,资源ID中似乎缺少resourcegroups/cstackhub sharedsvs rg是问题所在,问题是为什么资源ID函数没有给我正确的资源ID?我在其他模板中使用了完全相同的resource ID函数,没有出现任何问题。

从消息的外观来看,似乎您正在部署到订阅(
New-AzDeployment
New-AzSubscriptionDeployment
)而不是资源组(
New-azresourcegroupdloyment

部署到订阅时,函数
resourceId()
将返回

/subscriptions/{subscriptionId}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
部署到资源组时,函数返回

/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}

MS文档:

谢谢,伙计,你说得绝对正确。此Microsoft.Insights/DiagnosticsSettings的问题是您必须使用新的AzDeployment或新的AzSubscriptionDeployment,因为它是订阅层。这意味着我不能使用resourceID函数。我必须使用Concat[]@RogerChen-如果回答有帮助,请您将答案标记为已接受?