教學:在 Azure SRE 代理程式中建立 HTTP 觸發器

在這個教學中,你會建立一個 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)以及一個空白的觸發清單。

步驟一:建立觸發器

  1. 在工具列選擇 「建立觸發器 」。 「 建立 HTTP 觸發器 」對話框隨即開啟。

  2. 請在表格上填寫以下欄位。

    領域 價值
    觸發名稱 容器應用程式合規檢查。
    觸發細節 新的容器應用程式版本已部署。 在應用程式上執行合規檢查。 確認資源限制(CPU/記憶體)、健康探針、入口設定和縮放規則是否正確配置。 發現任何問題請回報。 應用程式詳情: {payload.app_name} 資源群組:{payload.resource_group}。 修訂: {payload.revision_name}
    代理自治等級 自動(預設)。
    訊息群組以獲取最新資訊 每次執行時都會有新的聊天串。
  3. 除非你想讓特定的子代理來處理檢查,否則請保留 回應子代理 的預設值。

  4. 選擇 建立觸發器

檢查點: 觸發器會以狀態 開啟 (綠色徽章)出現在列表中。 摘要卡片更新以顯示一個活躍觸發點。

步驟二:複製觸發網址

  1. 選擇觸發名稱「 容器應用程式合規檢查 」以開啟詳細檢視。

  2. 你會看到以下欄位:

    • 觸發網址:帶有 複製 按鈕的 Webhook 端點
    • 狀態:開啟
    • 上次呼叫:從未
    • 訊息分組:每次執行新增主題
  3. 選擇觸發網址旁的 複製 按鈕。 請保存網址,因為你會在步驟4中用到它。

檢查點: 你已經複製了觸發網址。 看起來像 https://<your-agent>.sre.azure.com/api/v1/httptriggers/trigger/<trigger-id>

步驟 3:使用「立即運行」測試

  1. 現在就在工具列選擇 執行觸發器 。 此動作會立即執行觸發器,無需外部呼叫。

  2. 等幾秒鐘,然後選擇 更新清單 來刷新執行歷史。

檢查點: 執行歷史會顯示一個新列,並有時間戳記、一個連結的執行緒,以及成功狀態。 請選擇討論串連結以查看客服人員的回應。

代理程式建立一個名為 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_byimage)的欄位會作為原始 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)。 千萬不要硬編碼在工作流程檔案裡。

步驟六:清理資源

如果你不再需要觸發器,請刪除它:

  1. 請前往 建構者>HTTP 觸發器
  2. 選取觸發程序核取方塊。
  3. 選擇 刪除