azure-resource-lookup
作者 microsoftazure-resource-lookup 讓你可以使用 Azure Resource Graph,在多個訂用帳戶與資源群組之間列出、搜尋並檢視各種 Azure 資源。非常適合用於資產盤點、標籤分析、孤立資源查找與跨訂用帳戶查詢。不適用於部署變更、成本最佳化,或非 Azure 雲端環境。
概觀
什麼是 azure-resource-lookup?
azure-resource-lookup 是一個針對 Azure 的報表與探索技能,能協助你在多個訂用帳戶與資源群組之間,列出、搜尋並檢視幾乎各種類型的 Azure 資源。
它使用 Azure Resource Graph (ARG),針對你的 Azure Resource Manager (ARM) 中繼資料進行快速、跨訂用帳戶查詢。這讓它特別適合回答類似資產盤點型的問題,例如:
- 「list websites」
- 「list virtual machines」
- 「list my VMs in subscription X」
- 「show storage accounts in this resource group」
- 「find container apps in region Y」
- 「what resources do I have?」
在背後,azure-resource-lookup 會將這些意圖轉換成 ARG 查詢,因此你不必為每一個需求手寫 KQL,就能取得結構化且近乎即時的環境視圖。
適合哪些人使用?
azure-resource-lookup 適用對象包括:
- 雲端與平台工程師:需要在多個訂用帳戶中快速掌握 Azure 資源現況。
- DevOps 與 SRE 團隊:希望在營運流程中,依資源類型、狀態或標籤進行搜尋。
- 資安與法遵團隊:需要確認必要的標籤或設定是否確實存在。
- 開發人員:想用簡單方式回答「這個 app/元件是跑在哪裡?」或「這次部署建立了哪些資源?」而不必人工在 Azure Portal 裡到處點。
如果你的主要需求是跨 Azure 進行報表、資產盤點與資源探索,這個技能非常適合。
azure-resource-lookup 解決哪些問題?
在這些情境下可以使用 azure-resource-lookup:
- 列出各種常見類型的資源
- 虛擬機器、Web apps、storage accounts、container apps、資料庫等。
- 依範圍顯示資源
- 將結果限制在特定訂用帳戶、一組訂用帳戶,或某個資源群組。
- 執行跨訂用帳戶搜尋
- 例如「show all storage accounts in all production subscriptions」,不需頻繁切換上下文。
- 尋找孤立或未使用的資源
- 找出未連結的磁碟、未使用的 NIC、閒置 IP 等可能的清理目標。
- 檢查標籤覆蓋率與命名規範
- 找出缺少必要標籤的資源,或依標籤值(如
env、owner、costCenter)彙整資源。
- 找出缺少必要標籤的資源,或依標籤值(如
- 建立資源盤點
- 依資源類型、區域或訂用帳戶統計數量,供文件撰寫或稽核使用。
- 依資源狀態過濾
- 利用 Resource Graph 已索引的中繼資料,找出已停止、不健康或佈建失敗的資源。
以上特性符合你在 Azure 既有基礎架構上,尋求清楚、可查詢總覽的報表與可見度需求。
什麼情況下不適合使用這個技能?
azure-resource-lookup 並非設計用來:
- 部署或修改資源
- 無法建立、更新或刪除 Azure 資源。
- 成本與最佳化分析
- 不會計算花費、提供適當規模建議,或詳細成本拆解。
- 非 Azure 雲端或地端資源
- 僅適用於透過 Azure Resource Graph 暴露的 Azure Resource Manager 資源。
- 深度、特定資源的進階工具
- 對於高度專門的資源操作(例如資料庫結構作業、Kubernetes 物件管理、或深入 VM 設定變更),應改用專用工具或其他技能。
若你需要的是 Azure 上的營運洞察與資產盤點,azure-resource-lookup 很合適;若你需要 變更、自動化或成本分析,則建議搭配其他工具一起使用。
使用方式
先決條件
在安裝與使用 azure-resource-lookup 之前,請先確認:
- 你有一個 Azure 帳戶,且具備讀取目標訂用帳戶內資源的適當權限。
- 你的租用戶中已啟用 Azure Resource Graph(多數情況下預設即為啟用)。
- 你的代理程式或自動化環境可以驗證至 Azure(依你的設定使用
az login、managed identity 或 service principal)。
此技能位於 GitHub 儲存庫 microsoft/azure-skills 中的 skills/azure-resource-lookup,設計為可插入支援此 repo 技能的相容代理執行環境。
安裝步驟
1. 加入 azure-skills 儲存庫與此技能
如果你的代理執行環境支援 npx skills(例如 Microsoft 的 skills tooling),可以直接從 GitHub 新增 azure-resource-lookup:
npx skills add https://github.com/microsoft/azure-skills --skill azure-resource-lookup
這個指令會:
- 將
microsoft/azure-skills儲存庫註冊為技能來源。 - 將
azure-resource-lookup的技能定義與相關參考資料安裝到你的代理環境中。
若你的平台有不同的整合機制,請指定:
- Repository:
https://github.com/microsoft/azure-skills - Skill path:
skills/azure-resource-lookup
並依照該平台文件中新增技能的指示完成設定。
2. 檢視技能定義
安裝完成後,開啟 azure-resource-lookup 目錄下的 SKILL.md。此檔案包含:
- 官方的功能說明與主要使用情境。
- 關於何時使用這個技能,以及與同一 repo 其他技能的取捨指引。
利用這份文件確認此技能是否符合你的需求(跨 Azure 的資源盤點與查詢)。
3. 為代理設定 Azure 存取權
在代理執行的環境中,設定好查詢 Azure Resource Graph 所需的驗證方式。常見模式包括:
- 於本機測試時使用 Azure CLI 的互動式登入:
az login - 在非互動式自動化情境中使用 service principal:
az login --service-principal -u <APP_ID> -p <PASSWORD_OR_CERT> --tenant <TENANT_ID> - 在支援的 Azure 代管服務中使用 managed identity。
此技能主要使用資源中繼資料,因此通常只需要在目標訂用帳戶上具備 Reader 或其他類似唯讀權限即可。
4. 將技能連結到你的代理
多數支援此 repo 的代理平台,在安裝完成後會自動提供該技能。在設定介面或 JSON manifest 中,請確認:
azure-resource-lookup已列在啟用的技能清單中。- 此技能可使用你在前一步驟設定的相同 Azure 認證。
請參考你所使用代理框架的文件,完成技能與工具之間的最後串接設定。
使用技能查詢 Azure 資源
常見自然語言提示範例
連線完成後,你可以透過自然語言與 azure-resource-lookup 互動。以下是與 SKILL.md 所述意圖相符的例子:
-
資源清單
- "List virtual machines in my production subscription."
- "Show storage accounts in resource group
rg-app-prod." - "List container apps in region
westeurope."
-
依標籤搜尋
- "Find resources tagged
env=prodin all subscriptions." - "Which resources are missing the
ownertag in subscription X?"
- "Find resources tagged
-
孤立資源
- "List unattached managed disks in all subscriptions."
- "Show idle IP addresses that are not associated with any resource."
-
盤點與統計
- "Count all resources by type across all subscriptions."
- "How many storage accounts are in each region?"
-
依狀態查詢
- "Show virtual machines that are stopped."
- "List resources in a failed provisioning state."
此技能會將這些請求轉換成 Azure Resource Graph 查詢,並回傳結構化結果,方便用於報表或後續分析。
使用 Azure Resource Graph 查詢樣式
若需更進階的使用情境,可參考儲存庫中的 references/azure-resource-graph.md 參考檔,它說明了:
- 標準的
az graph query指令格式:az graph query -q "<KQL>" --query "data[].{col1:field1, col2:field2}" -o table - 主要資料表,例如
Resources、ResourceContainers、HealthResources等。 - Resource Graph 中的 KQL 基礎,例如
=~(不分大小寫比較)、mv-expand、isempty()、tostring()。 - 實務盤點模式,例如:
- 依資源類型計數。
- 依位置 (location) 分組資源。
即使你不會直接手動執行 az graph query,這些模式仍有助於了解此技能在背後做了什麼,以及如何解讀輸出結果。
整合至工作流程與報表
由於 azure-resource-lookup 專注於唯讀的盤點與探索,它非常適合整合到:
- 營運儀表板:將查詢結果餵入報表工具,用於每日檢視資源數量與覆蓋狀況。
- 治理與法遵檢查:定期掃描缺少必要標籤或不允許的設定。
- 清理專案:在使用其他工具進行刪除前,先找出孤立磁碟、未使用 NIC 或閒置 IP。
- 發佈與環境檢閱:在部署後確認各個環境中實際存在的資源。
把這個技能當成大型工作流程中的資訊層:它告訴你有哪些資源、目前狀態如何,而其他工具則在需要時負責進行變更。
常見問題 (FAQ)
azure-resource-lookup 在背後實際依賴什麼?
azure-resource-lookup 是以 Azure Resource Graph 為基礎建置,這是 Azure 用於 ARM 資源的索引中繼資料服務。它會送出 ARG 型式的查詢,在多個訂用帳戶與資源群組之間快速搜尋與篩選資源,然後透過你的代理回傳結果。
我可以用 azure-resource-lookup 來建立或刪除 Azure 資源嗎?
不行。azure-resource-lookup 是一個唯讀的探索與報表技能,明確不適用於部署、變更或刪除 Azure 資源。若要執行這類作業,請搭配 ARM/Bicep templates、Terraform 或其他自動化技能等部署工具。
這個技能支援非 Azure 的雲端嗎?
不支援。azure-resource-lookup 僅適用於透過 Azure Resource Graph 暴露的 Azure Resource Manager 資源,無法查詢 AWS、GCP 或地端環境。
azure-resource-lookup 適合拿來做成本分析或最佳化嗎?
不完全適合。雖然你可以用它進行資源盤點(這往往是成本分析的前置步驟),但此技能並非為成本最佳化而設計。它不會提供成本計算、價格預估或適當規模建議。
使用這個技能需要什麼權限?
你至少需要對欲查詢的訂用帳戶與資源群組具備讀取權限(例如 Reader 角色)。由於 azure-resource-lookup 是唯讀且透過 Resource Graph 運作,通常不需要超過讀取等級的高權限。
azure-resource-lookup 和在 Azure Portal 直接搜尋資源有什麼差別?
Azure Portal 提供互動式的搜尋與篩選介面。相較之下,azure-resource-lookup 提供:
- 可腳本化、可重複的查詢,可一次涵蓋多個訂用帳戶。
- 結構化輸出,方便代理與自動化工作流程直接使用。
- 自然語言的入口,不必為每個問題手寫 KQL。
當你需要的是一致、可自動化的盤點與探索,而不是臨時的手動查詢時,它特別有價值。
哪裡可以看到更多查詢範例?
在 microsoft/azure-skills 儲存庫的 azure-resource-lookup 目錄中,請參考:
SKILL.md:瞭解高階行為與使用說明。references/azure-resource-graph.md:取得具體的 Azure Resource Graph 查詢樣式與 KQL 使用技巧。
可將這些範例當成參考,幫助你了解與延伸透過此技能可以提出的問題類型。
什麼時候應該改用其他技能?
在以下情況,建議改用其他或額外的技能:
- 需要變更基礎架構(建立、更新、刪除、調整資源規模)。
- 管理資源內部的工作負載(例如應用程式部署、資料庫結構、Kubernetes 物件)。
- 進行更深入的成本、效能或安全性分析,超出中繼資料層級的報表範圍。
這些情境中,可以先用 azure-resource-lookup 進行探索與盤點,再交由專門的部署、監控或安全工具處理後續步驟。
