導讀(約千餘字精簡版):要把 CodeBuild 建置結束接到遠端 Mac上的 OpenClaw 閘道/自管 HTTP,實務上多半走 Amazon EventBridge 預設匯流排上的 CodeBuild Build State Change,再以 API Destination 對你的 HTTPS 端點送 POST(可視為「類 Webhook」)。本文給最小可複現步驟:本機安裝與 openclaw onboard --install-daemon、閘道埠與健康檢查、靜態 Bearer、規則篩選、buildspec 依賴預檢、摘要出站與2/4/8 秒有界重試。延伸可讀站內 CircleCI Webhook × lockfile 摘要閘道健康與 LaunchAgentOpenClaw 安裝排錯。對齊上游文件可參考 docs.openclaw.ai;Node 主機連閘道之 --port 預設常見為 18789(請以本機設定為準)。

名詞釐清:主控台「來源 Webhook」通常是 Git → 觸發 AWS 內建置,不會直接把 JSON 推到你的 Mac。要到自管機器,請用下表右欄模式。

機制方向符合本文?
CodeBuild 來源 WebhookGit 供應商 → AWS 啟動建置
EventBridge + API DestinationAWS → 你可控的 HTTPS(最小出站)
Lambda → 自訂 URLAWS → 你的程式 → Mac是(彈性高、步驟多)
  • 逾時天花板:API Destination 單次呼叫預算極短,請先回 2xx 再排背景跑 npm ci 等重活。
  • 靜默 401:Authorization 大小寫、Bearer 前綴、Connection 模板與 handler 讀取不一致。
  • 區域錯位:規則建在 us-east-1、建置發在 ap-northeast-1 會永遠收不到。

安裝、Node 版本與 openclaw onboard --install-daemon

Node:目前 OpenClaw 主線建議 Node.js 22 LTS 或更新;若暫留 20/21,請確認 WebSocket 相依(上游文件建議以 22+ 為準)。以 npm i -g openclaw@latest 安裝後跑 openclaw doctor

常駐:openclaw onboard --install-daemon 會在完成精靈步驟後,把閘道寫成 macOS LaunchAgent(與上游精靈一致)。plist 內請固定 NODE_BINARYPATH,必要時設 NODE_EXTRA_CA_CERTS,讓 launchd 與 SSH 互動 shell 行為一致。可預先匯出 OPENCLAW_GATEWAY_TOKEN 再 onboard,避免本機控制面令牌與預期不符。

閘道埠與健康檢查:openclaw node run --host 127.0.0.1 --port 18789 為上游 CLI 文件常見範例埠;實際值以 ~/.openclaw/openclaw.json 為準。日常以 openclaw healthopenclaw status --deep 驗證;監控可對反代上的 /health 做週期 GET,並帶與閘道一致的 Bearer。
curl -sS -o /dev/null -w '%{http_code}\n' \
  -H 'Authorization: Bearer YOUR_GATEWAY_TOKEN' \
  --connect-timeout 3 --max-time 10 \
  http://127.0.0.1:PORT/health

AWS:規則、Connection、API Destination

於 EventBridge 建立 Connection(API Key 型),把金鑰映射到 Authorization: Bearer …。Mac 端以 chmod 600 檔案或鑰匙圈保存同一把祕鑰。再建 API Destination 指向 https://你的網域/openclaw/codebuild,方法 POST。

規則掛在預設事件匯流排sourceaws.codebuilddetail-typeCodeBuild Build State Change,並以 detail.build-statusSUCCEEDEDFAILEDFAULTSTOPPED,避免每個 IN_PROGRESS 都打爆 Mac。可用 detail.project-name 或 ARN 前綴縮小範圍。目標選 API Destination;必要時用 Input Transformer 只留 build-id、狀態、專案名、主控台深連結欄位。

  • 最小權限:操作者帳號僅需該匯流排上的 events:PutRuleevents:PutTargetsevents:DescribeRuleevents:ListTargetsByRule 等;祕鑰留在 Connection,勿寫進規則 JSON。
  • 建議單行日誌欄位:EventBridge idtimeregionaccountdetail.build-iddetail.build-statusdetail.project-name、自訂 correlation
  • 重試:AWS 側失敗會長時間重試;Mac 端仍應以 build-id 去重。出站 Slack/第二 HTTP 建議另做 2/4/8 秒有界退避。
{
  "source": ["aws.codebuild"],
  "detail-type": ["CodeBuild Build State Change"],
  "detail": {
    "build-status": ["SUCCEEDED", "FAILED", "FAULT", "STOPPED"],
    "project-name": ["your-ci-project"]
  }
}

閘道路由、Bearer 與 TLS

自動化 HTTP 建議只綁 127.0.0.1,邊界用 nginx/Caddy 終止 TLS。以公開網路 curl -v 驗證憑證鏈與 SNI。Handler 應保留原始 body 以便日後加簽章而不必改反代。驗簽通過後立即回 2xx 並把預檢丟佇列;骨架可類比站內 CircleCI 文,只是把 HMAC 換成靜態 Bearer。

// 概念示例:先驗 Bearer,再 ACK,勿 await 重活
const secret = fs.readFileSync(process.env.HOOK_SECRET_FILE, 'utf8').trim();
const hdr = req.headers.authorization || '';
if (hdr !== `Bearer ${secret}`) return res.status(401).end();
res.status(200).json({ ok: true, buildId: body.detail?.['build-id'] });
// enqueue: git shallow clone + npm ci --dry-run / bundle check …

Webhook(API Destination)驗證檢查清單

1
從 CloudWatch 複製一筆範例事件,經 SSH port-forward 用 curl -H "Authorization: Bearer …" 打本機 handler,確認 JSON 解析與路由。
2
手動 start-build 製造失敗與成功各一次,對照規則 Invocations 與 Mac 日誌是否出現同一 build-id
3
暫時回 500,觀察 EventBridge 重試與去重:驗簽通過後應在 enqueue 後回 200,避免重送風暴。
4
在反代量測 handler 總耗時,預留 TLS 與 JSON 解析,維持遠低於雲端單次呼叫逾時。

buildspec 依賴預檢與摘要回傳

installpre_build 放入快失敗步驟:npm ci --dry-runpnpm install --frozen-lockfilecomposer validatebundle check 等,讓主錯誤留在 CodeBuild Logs。Mac 端收到終態事件後,若要對同一提交做二次預檢,請淺克隆到以 build-id 為名的暫存目錄,再截取日誌末段組 JSON,以 2/4/8 秒退避 POST 到 Slack 或內部 API。

收不到事件與其他 FAQ

規則命中數永遠是 0?

檢查帳號/區域是否與專案一致;暫時放寬 project-name Predicate;確認事件是否在預設匯流排上。

CloudWatch 顯示 InvocationFailures?

401/403 多為 Bearer 或反代剝除標頭;5xx/timeout 常為同步路徑太重或憑證鏈不完整。

Mac 有日誌但重複執行預檢?

EventBridge 在非 2xx 會重送;驗簽成功後應快速 ACK,並以 build-id + 事件 id 去重。

結語

總結:EventBridge + API Destination 把 CodeBuild 終態變成可驗簽的 HTTPS POST,再在遠端 Mac 上以 OpenClaw 閘道做 ACK、佇列與出站摘要,即可與既有 CI 供應商解耦。筆電睡眠會漏事件;若要 24/7 常駐閘道與預檢佇列,請考慮租用獨享遠端 Mac並按需擴充 CPU/記憶體與頻寬。公開導覽(免登入):說明中心購買頁定價;更多 OpenClaw 題材見 技術部落格

CodeBuild × EventBridge × OpenClaw

常駐閘道與出站摘要,穩定承接 AWS 事件

需要擴容算力或加開節點時,請參考購買與說明中心(免登入)。