僅計劃的 CI 搭配政策閘門
昂貴的 AgentCore 錯誤在計劃中是可見的:會被取代的記憶體(所有對話紀錄消失)、會被取代的閘道(每個用戶端的新 URL)、授予所有權限的角色。拉取請求是阻止這些錯誤最便宜的地方,而計劃是檢查的正確產物——它是實際會發生的事情。
${CLAUDE_SKILL_DIR} 由技能執行環境設定為此技能自己的目錄。在以下每個命令中直接使用它;同層技能的腳本位於 ${CLAUDE_SKILL_DIR}/../<skill>/scripts/。
流程
-
計劃工作流程,唯讀:
python3 ${CLAUDE_SKILL_DIR}/scripts/gen_ci.py <project> --dry-run--tf-root用於要計劃的堆疊(預設:可觸及 AgentCore 資源的根目錄),--role-var用於存放計劃角色的 GitHub 變數(預設AWS_PLAN_ROLE_ARN),--region,--terraform。 -
報告根目錄、Terraform 或 Terragrunt、找到的固定版本(如果使用後備則為
CI010),以及角色註記(CI011)。 -
選項: 寫入工作流程與封裝的檢查器(免費);先在現有儲存的計劃上執行政策(免費)。使用
AskUserQuestion確認,然後寫入。 -
在本機嘗試閘門 針對使用者產生的計劃:
python3 ${CLAUDE_SKILL_DIR}/scripts/policy_check.py agentcore.plan.json--allow-replace <address>僅用於人類已審查過的取代操作。 -
驗證封裝的執行器能從儲存庫根目錄運作:
python3 ci/agentcore/run.py review .。
CI0xx 範圍
| 編號 | 嚴重程度 | 觸發條件 |
|---|---|---|
CI001 | 錯誤 | 計劃刪除或取代記憶體、閘道、憑證提供者、工作負載身分、Cognito 使用者池或 DynamoDB 資料表 |
CI002 | 錯誤 | 計劃的 IAM 政策允許 * on * |
CI003 | 錯誤 | 計劃的閘道使用 authorizer_type = "NONE" |
CI004 | 警告 | 計劃的閘道未設定 supported_versions |
CI005 | 資訊 | 計劃沒有變更 |
CI006 | 資訊 | 計劃建立的 AgentCore 資源(計費範圍) |
CI010 | 資訊 | 儲存庫中沒有 SHA 固定的 Actions;使用後備固定版本 |
CI011 | 資訊 | 計劃工作的角色必須是唯讀 |
決策規則
- CI 計劃;人類套用。 工作流程沒有 apply 工作,且計劃角色不應具有寫入權限。
- 允許是以地址為單位。
--allow-replace指定單一資源;沒有「全部允許」。 - 將 Actions 固定到 SHA。 重複使用儲存庫的固定版本;後備固定版本是第一位使用者的儲存庫在 2026-10-05 上攜帶的版本,並以標籤標記。
- 封裝,非安裝。
ci/agentcore/是純 Python 3.10+;更新此外掛意味著重新執行gen_ci.py --force並審查差異。
參考資料
| 問題 | 檔案 |
|---|---|
| 工作流程逐步說明;角色;Terragrunt | plan-only-ci.md |
| 每條政策規則、原因,以及如何允許審查過的例外 | policy-gates.md |
腳本
| 命令 | 功能 | 退出碼 |
|---|---|---|
scripts/gen_ci.py <project> [--tf-root D] [--role-var V] [--dry-run] [--force] [--json] | 產生工作流程及 ci/agentcore/ | 0 已寫入/已計劃,1 無動作,2 參數錯誤 |
scripts/policy_check.py <plan.json> [--allow-replace ADDR ...] [--json] | 對儲存的計劃執行 CI0xx 閘門 | 0 通過,1 政策錯誤,2 非計劃檔案 |
完成檢查清單
- 工作流程已以寫入計劃形式顯示,並在寫入前已確認。
- 沒有 apply 步驟,且計劃角色已描述為唯讀。
-
policy_check.py已在實際計劃上執行過,或已告知使用者如何執行。 - 已從儲存庫根目錄執行過封裝的執行器。