什麼是模擬跑?
模擬執行會模擬儲存體工作指派的執行過程,但不會實際對您的 Blob 執行任何作業。 當你建立模擬執行時,Azure 儲存體 Actions 會像實際執行一樣掃描並評估你的 blob 與任務條件,但不會執行任何操作。 取而代之的是,它會產生一份詳細報告,顯示哪些 blob 符合條件,以及 會 執行哪些操作。
當你想要執行以下操作時,模擬執行會很有用:
- 在大規模執行任務前,特別是當操作不可逆(例如刪除或不可變政策)時,先預覽其影響
- 在您帳號中的全套 blob 上確認條件,而不只是針對少量預覽版樣本。
- 產生可審計的報告 ,顯示哪些 blob 會受影響,且不做任何更改。
- 透過了解將鎖定多少個blobs以及會啟動多少操作來估算成本。
Note
模擬執行會掃描並評估範圍內的所有 Blob 物件,就像實際執行一樣。 唯一的差別是它不會對這些斑點執行任何操作。 由於模擬執行不會執行操作,因此通常比實際執行更快。
模擬跑的運作方式
建立一個模擬跑作為儲存任務分配,觸發器類型設為 MockRun。 與其他指派類型一樣,模擬執行會以特定的儲存體帳戶為目標,使用選用的前綴篩選條件來限定 Blob 的範圍,並在指定的匯出容器中產生執行報告。
當模擬跑執行時:
- Azure 儲存體 Actions 會列舉出所有符合指派的範圍和前綴篩選條件的 Blob 物件。
- 它會根據儲存任務的條件評估每個斑點。
- 對於相符的 Blob,它會記錄原本會執行的作業,但它不會實際執行任何作業。
- 它會產生一份詳細報告,列出匹配的 blob 及其模擬操作。
模擬執行與條件預覽
模擬跑和條件預覽功能都能幫助你在執行前驗證任務條件,但它們有不同的目的:
| 能力 | 條件預覽 | 模擬跑 |
|---|---|---|
| 範圍 | 樣本有限(最多可達 5,000 個斑點) | 完整範圍 - 指派範圍內的所有 Blob |
| 所示操作 | No | 是的——顯示會執行哪些操作 |
| 報告產生 | No | 是的——可下載的 CSV 報告 |
| 執行模型 | 同步且即時的結果 | 非同步,像真實作業一樣執行 |
| 帳單 | 免費 | 針對任務執行個體及已掃描的物件收費(不收取操作費用) |
| 應用案例 | 在撰寫條件時快速檢查 | 生產執行前的完整驗證 |
在撰寫任務條件時使用條件預覽,然後在啟用正式執行前,先用模擬跑進行最後驗證。
模擬運行生命週期與狀態
模擬執行與一次性指派遵循相同的生命週期。
Important
你無法重新開始已完成的模擬跑。 若要執行另一場相同配置的模擬模擬,必須建立新指派或複製現有的指派。
並發行為
在同一個儲存體帳戶上,一次只能執行一個執行作業,不論是模擬或實際執行。 此並行模型與真實任務執行的模型相符:
- 如果 實際執行正在進行,系統會將新的模擬執行排入佇列,直到實際執行完成。
- 若模擬執行正在進行,系統會將新的實際工作執行排入佇列,或如果是排程的執行,則會跳過。
- 如果另一個 模擬執行正在進行,系統會將新的模擬執行排入佇列。
此模型確保穩定性並防止目標儲存帳號上的資源爭用。
模擬跑報告
模擬跑結束後,流程會寫一份詳細報告到你在分配建立時指定的報告匯出容器。 你可以存取 CSV 格式的報告。
你也可以直接在 Azure 入口網站的作業模擬跑結果頁面查看跑步摘要。 摘要包含列出的物件數量、符合條件的物件數量,以及程序將執行的操作。
報告專欄:
| Column | Description |
|---|---|
| 容器 | Blob 所在的容器。 |
| Blob | Blob 的名稱。 |
| 將執行的手術 | 模擬運算,前綴為 (mock) — 例如 (mock) DeleteBlob或 (mock) SetBlobImmutability 。 |
| 匹配條件區塊 | 哪個條件阻擋相符的 Blob (例如,IF或ELSE)。 |
CSV 輸出範例:
| 容器 | Blob | 將執行的手術 | 匹配條件區塊 |
|---|---|---|---|
| testContainer1 | output1.log | (嘲笑)刪除Blob | IF |
| 測試容器2 | output2.log | (嘲笑)刪除Blob | IF |
| testContainer1 | financials1.csv | (模擬) SetBlobImmutability | ELSE |
| 測試容器2 | financials2.csv | (模擬) SetBlobImmutability | ELSE |
此過程也會在報告旁邊產生 一個摘要 JSON 檔案。 此檔案包含彙整指標:
{
"completionTime": "2024-10-21T17:46:59",
"destination": "taskoutput",
"endpoint": "https://contoso1storage1.blob.core.windows.net",
"fileFormat": "csv",
"fileSchema": [
"Container",
"Blob",
"Operation to be performed",
"Result",
"Matched condition block"
],
"files": [
"<link to the reporting file>"
],
"objectsListed": 1100,
"objectsToBeOperated": 240,
"operationType": "BlobOperation",
"runId": "mockrun-assignment-2024-10-21T17:30:13.9121342Z",
"startTime": "2024-10-21T17:37:12",
"status": "succeeded"
}
摘要中的重點欄位:
- objectsListed:模擬執行期間掃描的 Blob 物件總數。
- objectsToBeOperated:符合條件且已執行操作的blob數量。
-
狀態:模擬跑的結果(
succeeded或failed)。
從模擬執行轉為正式執行
在查看模擬跑報告並確認結果符合預期後,你可以將作業從模擬跑轉為真正的跑關:
- 移至 Azure 入口網站中的指派。
- 編輯指派,並將觸發類型從 模擬跑 改為 跑一次 或 重複跑。
- 儲存已更新的指派。
透過這個流程,你可以從驗證直接到執行,而不必從頭重建指派。
定價
模擬執行的計費方式與實際的工作指派執行類似,但有一個關鍵差異:操作計量不會計費,因為實際上不會對 Blob 執行任何操作。
| 計費計量器 | 適用於模擬執行嗎? |
|---|---|
| 任務執行個體(每次執行) | ✅ 是 |
| 目標物件(每百萬掃描物件) | ✅ 是 |
| 執行操作數(每百萬次操作) | ❌ 不(永遠是0美元) |
在掃描期間,使用標準 Blob 儲存體 API 列出及讀取 Blob 屬性的費用仍會套用。
Tip
因為模擬執行不包含操作計量費用,所以比實際執行便宜得多。 利用模擬執行作為一種具成本效益的方式,在承諾完整執行前驗證你的任務設定。
權限
與儲存任務相關的管理身份必須在目標儲存帳號上擁有相應的角色,才能執行模擬執行。 建議的角色是使用 Storage Actions Blob Data Operator (如果您計劃使用相同指派轉換至實際執行)。 系統指派和使用者指派的受控識別都支援模擬執行。
如果目標儲存帳號有網路限制,請確保帳號的網路設定中啟用了允許受信任的Microsoft 服務選項。