針對使用 Azure Resource Graph 發生的錯誤進行疑難排解
使用 Azure Resource Graph 查詢 Azure 資源時,可能會遇到錯誤。 此文章說明可能發生的各種錯誤與解決方式。
尋找錯誤詳細資料
大部分的錯誤是使用 Azure Resource Graph 執行查詢時的問題所造成。 查詢失敗時,SDK 會提供有關失敗查詢的詳細資料。 此資訊會指出問題,以便能夠進行修正,而使後續查詢能成功。
一般錯誤
案例:節流要求
問題
進行大型或經常進行資源查詢的客戶要求節流。
原因
Azure Resource Graph 會根據時間範圍,為每個使用者配置配額數字。 例如,使用者在每 5 秒的時間範圍內,最多可以傳送 15 個查詢而不會進行節流。 配額值是由許多因素所決定,而且可能會變更。 如需詳細資訊,請參閱 Azure Resource Graph 中的節流。
解決方法
有數種方法可以處理節流要求:
案例:太多訂用帳戶
問題
具有超過 1,000 個訂用帳戶存取權的客戶 (包括具有 Azure Lighthouse 的跨租用戶訂用帳戶),在 Azure Resource Graph 的單一呼叫中,無法跨所有訂用帳戶擷取資料。
原因
Azure CLI 和 PowerShell 只會將前 1,000 個訂用帳戶轉送至 Azure Resource Graph。 Azure Resource Graph 的 REST API 會接受執行查詢的最大訂用帳戶數。
解決方法
具有訂用帳戶子集的查詢批次要求限制為低於 1,000 個訂用帳戶限制。 解決方案是使用 PowerShell 中的訂閱參數。
# Replace this query with your own
$query = 'Resources | project type'
# Fetch the full array of subscription IDs
$subscriptions = Get-AzSubscription
$subscriptionIds = $subscriptions.Id
# Create a counter, set the batch size, and prepare a variable for the results
$counter = [PSCustomObject] @{ Value = 0 }
$batchSize = 1000
$response = @()
# Group the subscriptions into batches
$subscriptionsBatch = $subscriptionIds | Group -Property { [math]::Floor($counter.Value++ / $batchSize) }
# Run the query for each batch
foreach ($batch in $subscriptionsBatch){ $response += Search-AzGraph -Query $query -Subscription $batch.Group }
# View the completed results of the query on all subscriptions
$response
案例:不支援的內容類型 REST 標題
問題
客戶在查詢 Azure Resource Graph REST API 時傳回 500 (內部伺服器錯誤) 的回應。
原因
Azure Resource Graph REST API 僅支援 application/json
的 Content-Type
。 某些 REST 工具或代理程式預設為 text/plain
,而 REST API 不提供支援。
解決方法
驗證您用來查詢 Azure Resource Graph 的工具或代理程式是否已針對 application/json
設定 REST API 標頭 Content-Type
。
案例:沒有清單中所有訂閱的讀取權限
問題
客戶在使用 Azure Resource Graph 查詢明確傳遞的訂閱清單時,會得到 403 (禁止) 回應。
原因
如果客戶對所有提供訂閱皆未具有讀取權限,要求就會遭到拒絕,因為缺乏適當的安全性權限。
解決方法
在訂閱清單中至少包含一個執行查詢的客戶至少具有讀取存取權的訂閱。 如需詳細資訊,請參閱 Azure Resource Graph 中的權限。
案例:Azure Resource Graph 欄位未立即更新
問題
使用 Azure Resource Graph 時,有一些特定欄位會以較慢的速度更新。 這些欄位會在一段時間內交集至 true 值,前提是兩者之間沒有更新。
受影響的欄位清單
重要
- 此概念不限於特定屬性。 下列清單是您可能會發現延遲但最終更新的範例。
- 在某些情況下,VM 狀態會以異步方式更新,這表示目前的狀態不符合「目標狀態」(客戶所設定的預期狀態)。 不過,這些 VM 欄位會隨著時間而聚合。
- properties.extended.instanceView.osName
- properties.extended.instanceView.osVersion
- properties.extended.instanceView.computerName
原因
某些欄位來自沒有通知涵蓋範圍的代理程式 Blob,因此這些欄位的更新會延遲。
解決方法
這些欄位會以較慢的速度更新,但會隨著時間而趨同於 true 值,前提是兩者之間沒有更新。
下一步
如果您沒有看到您的問題,或無法解決您的問題,請瀏覽下列其中一個管道以取得更多支援:
- 透過 Azure 論壇獲得由 Azure 專家所提供的解答。
- 與 @AzureSupport 連繫 - 此是專為改善客戶體驗而設的官方 Microsoft Azure 帳戶,協助 Azure 社群連接至適當的資源,像是解答、支援及專家等。
- 如果需要更多協助,您可以提出 Azure 支援事件。 請移至 Azure 支援網站,然後選取 [取得支援]。