在這個教學中,你會建立一個 HTTP 觸發器,對容器應用程式執行合規檢查。 你可以從入口網站和命令列測試,然後整合進持續整合與持續交付(CI/CD)流程。
預計時間:10分鐘
在本教學課程中,您會:
- 建立一個帶有合規檢查提示的 HTTP 觸發器。
- 從入口網站使用立即執行來測試觸發程序。
- 用 JSON payload 從命令列呼叫觸發器。
- 將觸發器整合進 CI/CD 管線。
先決條件
- Azure SRE Agent 處於 執行中 狀態,至少已設定一個 Azure 訂閱。
- Azure CLI 安裝(
az命令)以進行 webhook 呼叫測試。
Scenario
你的團隊每天多次部署容器應用程式的修訂版本。 每次部署都應符合合規標準,並設定正確的資源限制、設定健康探測器及設定入口規則。 與其每次部署後手動檢查,不如建立一個 HTTP 觸發器,CI/CD 管線會在每次部署後呼叫。 客服人員會自動執行合規檢查。
開啟 HTTP 觸發器
要開啟 HTTP 觸發器,請到服務選單中的 Builder>HTTP 觸發器 。
檢查點: 頁面載入時會顯示摘要卡(有效觸發次數:0, 總觸發次數:0, 總執行次數:0)以及一個空白的觸發清單。
步驟一:建立觸發器
在工具列選擇 「建立觸發器 」。 「 建立 HTTP 觸發器 」對話框隨即開啟。
請在表格上填寫以下欄位。
領域 價值 觸發名稱 容器應用程式合規檢查。 觸發細節 新的容器應用程式版本已部署。 在應用程式上執行合規檢查。 確認資源限制(CPU/記憶體)、健康探針、入口設定和縮放規則是否正確配置。 發現任何問題請回報。 應用程式詳情: {payload.app_name}資源群組:{payload.resource_group}。 修訂:{payload.revision_name}。代理自治等級 自動(預設)。 訊息群組以獲取最新資訊 每次執行時都會有新的聊天串。 除非你想讓特定的子代理來處理檢查,否則請保留 回應子代理 的預設值。
選擇 建立觸發器。
檢查點: 觸發器會以狀態 開啟 (綠色徽章)出現在列表中。 摘要卡片更新以顯示一個活躍觸發點。
步驟二:複製觸發網址
選擇觸發名稱「 容器應用程式合規檢查 」以開啟詳細檢視。
你會看到以下欄位:
- 觸發網址:帶有 複製 按鈕的 Webhook 端點
- 狀態:開啟
- 上次呼叫:從未
- 訊息分組:每次執行新增主題
選擇觸發網址旁的 複製 按鈕。 請保存網址,因為你會在步驟4中用到它。
檢查點: 你已經複製了觸發網址。 看起來像 https://<your-agent>.sre.azure.com/api/v1/httptriggers/trigger/<trigger-id>。
步驟 3:使用「立即運行」測試
現在就在工具列選擇 執行觸發器 。 此動作會立即執行觸發器,無需外部呼叫。
等幾秒鐘,然後選擇 更新清單 來刷新執行歷史。
檢查點: 執行歷史會顯示一個新列,並有時間戳記、一個連結的執行緒,以及成功狀態。 請選擇討論串連結以查看客服人員的回應。
代理程式建立一個名為 HTTP Trigger: Container App Compliance Check 的執行緒。 裡面會看到帶有合規檢查計畫的執行卡,接下來是代理人的完整調查和附有合規結果的裁決表。
步驟 4:從指令列呼叫觸發器
現在使用真實的有效載荷進行測試,就像您的 CI/CD 管線會做的一樣。 開啟終端機並執行:
# Get an ARM token (use the SRE Agent app ID as the resource)
TOKEN=$(az account get-access-token --resource 59f0a04a-b322-4310-adc9-39ac41e9631e --query accessToken -o tsv)
# Call the trigger with container app deployment details
curl -X POST \
"<YOUR_TRIGGER_URL>" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"app_name": "checkout-api",
"resource_group": "rg-production",
"revision_name": "checkout-api--v3",
"deployed_by": "github-actions",
"image": "myregistry.azurecr.io/checkout-api:v3.2.1"
}'
用你在步驟 2 複製的網址替換 <YOUR_TRIGGER_URL> 。
發生了什麼事:代理程式會收到你的提示,其中的{payload.app_name}、{payload.resource_group}、{payload.revision_name}會被實際值取代。 不符合佔位符(如 deployed_by 和 image)的欄位會作為原始 JSON 上下文附加。
回應會立即返回,並顯示 HTTP 202:
{
"message": "HTTP trigger execution initiated",
"executionTime": "2026-03-13T10:30:00Z",
"threadId": "thread-abc123",
"success": true
}
檢查點: 回到入口網站,在詳細檢視中選擇 更新清單 。 您應該會在歷程記錄中看到第二次執行。 這是外線來的電話。 選取對話串連結,以查看已填入實際應用程式詳細資料的 Agent 合規性檢查。
步驟 5:與您的管線整合
將觸發程序呼叫新增至您的 CI/CD 管線部署後步驟。 這裡有一個 GitHub Actions 的範例:
- name: Trigger SRE Agent compliance check
if: success()
run: |
TOKEN=$(az account get-access-token --resource 59f0a04a-b322-4310-adc9-39ac41e9631e --query accessToken -o tsv)
curl -s -X POST "${{ secrets.SRE_TRIGGER_URL }}" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"app_name": "${{ env.APP_NAME }}",
"resource_group": "${{ env.RESOURCE_GROUP }}",
"revision_name": "${{ env.REVISION_NAME }}",
"deployed_by": "${{ github.actor }}",
"commit": "${{ github.sha }}"
}'
將你的觸發 URL 儲存為 GitHub 秘密(SRE_TRIGGER_URL)。 千萬不要硬編碼在工作流程檔案裡。
步驟六:清理資源
如果你不再需要觸發器,請刪除它:
- 請前往 建構者>HTTP 觸發器。
- 選取觸發程序核取方塊。
- 選擇 刪除。