错误:资源类型“/microsoft.operationalinsights/workspace”对于属性“properties.workspaceId”无效

问题描述 投票:0回答:1

我正在尝试创建一个函数应用程序,并通过 PowerShell 脚本将诊断设置更新到驻留在不同订阅中的现有 Log Analytics 工作区。但是,在更新时抛出错误,并出现以下错误,

错误:资源类型“/microsoft.operationalinsights/workspace”对于属性“properties.workspaceId”无效。预期类型为“microsoft.operationalinsights/workspaces”。

这与工作区 ID 有关,因为我注意到对工作区 ID 进行硬编码可以成功检索并更新诊断设置。

PowerShell 脚本:

[CmdLetBinding()]

参数(

[string] $SubscriptionId,
[string] $BusinessFunAppRGName,
[string] $BusinessFunAppName,
[string] $laWorkspaceRGName,
[string] $laWorkspaceName,
[string] $lawSubscriptionId

$ResourceId =“/subscriptions/$SubscriptionId/resourceGroups/$BusinessFunAppRGName/providers/Microsoft.Web/sites/$BusinessFunAppName”

$diagSettings = Get-AzDiagnosticSetting -ResourceId $ResourceId

if($diagSettings) { 写入主机“找到诊断设置” } 别的 { 写入主机“未找到诊断设置,正在应用设置...”

$metric = @()
$log = @()
$metric += New-AzDiagnosticSettingMetricSettingsObject -Enabled $true -Category AllMetrics
$log += New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category FunctionAppLogs

New-AzDiagnosticSetting -Name "DiagnosticSettings" `
    -ResourceId $ResourceId `
    -Log $log -Metric $metric `
    -WorkspaceId "/subscriptions/$lawSubscriptionId/resourceGroups/$laWorkspaceRGName/providers/microsoft.operationalinsights/workspaces/$laWorkspaceName" `


                  
        
Write-Host "Done"

}

工作流程文件示例:

    - name: 'Update diagnostics settings' 
  uses: azure/powershell@v1
  with:
      azPSVersion: "latest"
      inlineScript: |

        arm-templates/business-subscription-afna/update-diagnostics.ps1 `
          -SubscriptionId ${{ github.event.inputs.businessSubscriptionId }} `
          -BusinessFunAppRGName ${env:parameters.resourceGroup.value} `
          -BusinessFunAppName ${env:parameters.funcAppName.value} `
          -laWorkspaceRGName ${env:parameters.mgmtlaWorkspaceRGName.value} `
          -laWorkspaceName ${env:parameters.mgmtlaWorkspaceName.value} `
          -lawSubscriptionId ${env:parameters.mgmtlawSubscriptionId.value} 
      failOnStandardError: $true
azure powershell github arm
1个回答
0
投票

您看到的错误消息表明,workspaceId 属性未设置为

resource ID
的有效
Log Analytics workspace
。错误消息表明预期的资源类型是
microsoft.operationalinsights/workspaces
,但实际的资源类型是
/microsoft.operationalinsights/workspace

这里是更新的脚本,用于为

DiagnosticSetting
 创建 
Function App.

    $RGName = "RG-Name"
    $LAWName = "LAW Name"
    $FunName = "FunctionAppName"
    
    $FunctionApp = Get-AzWebApp -ResourceGroupName $RGName -Name $FunName
    $Workspace = Get-AzOperationalInsightsWorkspace -Name $LAWName -ResourceGroupName $RGName
    
    if (!$Workspace) {
        Write-Host "Log Analytics Workspace not found in the specified subscription and resource group."
        return
    }
    
    $DiagnosticSettings = Get-AzDiagnosticSetting -ResourceId $FunctionApp.Id
    
    if ($DiagnosticSettings) {
        Write-Host "Diagnostics Settings Found"
    } else {
        Write-Host "Diagnostics Settings Not Found, Applying settings..."
    
        $MetricSettings = New-AzDiagnosticSettingMetricSettingsObject -Enabled $true -Category AllMetrics
        $LogSettings = New-AzDiagnosticSettingLogSettingsObject -Enabled $true -Category FunctionAppLogs
    
        $WorkspaceId = $Workspace.ResourceId
    
        $Parameters = @{
            Name = "DiagnosticSetting"
            ResourceId = $FunctionApp.Id
            Log = $LogSettings
            Metric = $MetricSettings
            WorkspaceId = $WorkspaceId
        }
    
        New-AzDiagnosticSetting @Parameters
    
        Write-Host "Done"
    }

输出:

enter image description here

运行脚本后,已为

Function App
创建诊断。

enter image description here

如果我再次运行相同的脚本,它会检测诊断并且不会再次创建新的脚本。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.