Plan-only CI mit Richtliniengates
Die teuren Fehler bei AgentCore sind im Plan sichtbar: ein Speicher, der ersetzt würde (jede Unterhaltung weg), ein Gateway, das ersetzt würde (eine neue URL für jeden Client), eine Rolle, die alles gewährt. Ein Pull-Request ist der günstigste Ort, um sie zu stoppen, und ein Plan ist das richtige Artefakt zur Prüfung – er zeigt, was tatsächlich passieren würde.
${CLAUDE_SKILL_DIR} wird von der Skill-Laufzeit auf das eigene Verzeichnis dieses Skills gesetzt. Verwende es unverändert in jedem Befehl unten; die Skripte eines benachbarten Skills befinden sich unter ${CLAUDE_SKILL_DIR}/../<skill>/scripts/.
Ablauf
-
Workflow planen, schreibgeschützt:
python3 ${CLAUDE_SKILL_DIR}/scripts/gen_ci.py <project> --dry-run--tf-rootfür den Stack, der geplant werden soll (Standard: das Wurzelverzeichnis, das die AgentCore-Ressourcen erreicht),--role-varfür die GitHub-Variable, die die Plan-Rolle enthält (Standard:AWS_PLAN_ROLE_ARN),--region,--terraform. -
Melden des Wurzelverzeichnisses, ob Terraform oder Terragrunt, der gefundenen Pins (oder
CI010bei Verwendung der Fallbacks) und des Rollenhinweises (CI011). -
Optionen: Workflow und ausgelagerten Prüfer schreiben (kostenlos); die Richtlinie zuerst auf einem vorhandenen gespeicherten Plan ausführen (kostenlos). Bestätigen mit
AskUserQuestion, dann schreiben. -
Das Gate lokal testen auf einem Plan, den der Benutzer erstellt hat:
python3 ${CLAUDE_SKILL_DIR}/scripts/policy_check.py agentcore.plan.json--allow-replace <address>nur für einen Ersatz, der von einem Menschen geprüft wurde. -
Prüfen, dass der ausgelagerte Runner vom Repository-Wurzelverzeichnis aus funktioniert:
python3 ci/agentcore/run.py review ..
Der CI0xx-Bereich
| ID | Schweregrad | Auslöser |
|---|---|---|
CI001 | Fehler | Der Plan löscht oder ersetzt einen Speicher, ein Gateway, einen Credential-Provider, eine Workload-Identity, einen Cognito-Benutzerpool oder eine DynamoDB-Tabelle |
CI002 | Fehler | Eine geplante IAM-Richtlinie erlaubt * auf * |
CI003 | Fehler | Ein Gateway ist geplant mit authorizer_type = "NONE" |
CI004 | Warnung | Ein Gateway ist geplant ohne supported_versions |
CI005 | Info | Der Plan enthält keine Änderungen |
CI006 | Info | Die AgentCore-Ressourcen, die der Plan erstellt (die Abrechnungsoberfläche) |
CI010 | Info | Keine SHA-verankerten Aktionen im Repository; Fallback-Pins werden verwendet |
CI011 | Info | Die Rolle des Plan-Jobs muss schreibgeschützt sein |
Entscheidungsregeln
- CI plant; Menschen wenden an. Der Workflow hat keinen Apply-Job, und die Plan-Rolle sollte nicht schreiben können.
- Erlaubnisse gelten pro Adresse.
--allow-replacebenennt eine einzelne Ressource; es gibt kein „Erlaube alles“. - Aktionen an SHAs verankern. Verwende die Pins des Repositorys wieder; die Fallbacks sind die, die das Repository des ersten Benutzers am 2026-10-05 hatte, markiert mit Tags.
- Ausgelagert, nicht installiert.
ci/agentcore/ist reines Python 3.10+; das Aktualisieren des Plugins bedeutet,gen_ci.py --forceerneut auszuführen und den Diff zu prüfen.
Referenzen
| Frage | Datei |
|---|---|
| Der Workflow Schritt für Schritt; Rollen; Terragrunt | plan-only-ci.md |
| Jede Richtlinienregel, warum und wie man eine geprüfte Ausnahme erlaubt | policy-gates.md |
Skripte
| Befehl | Beschreibung | Exit-Codes |
|---|---|---|
scripts/gen_ci.py <project> [--tf-root D] [--role-var V] [--dry-run] [--force] [--json] | Workflow plus ci/agentcore/ | 0 geschrieben/geplant, 1 nichts getan, 2 ungültige Argumente |
scripts/policy_check.py <plan.json> [--allow-replace ADDR ...] [--json] | Das CI0xx-Gate auf einem gespeicherten Plan | 0 bestanden, 1 Richtlinienfehler, 2 kein Plan |
Abschluss-Checkliste
- Der Workflow wurde als Schreibplan angezeigt und vor dem Schreiben bestätigt.
- Er enthält keinen Apply-Schritt, und die Plan-Rolle wurde als schreibgeschützt beschrieben.
-
policy_check.pywurde auf einem echten Plan ausgeführt, oder der Benutzer wurde darüber informiert, wie es geht. - Der ausgelagerte Runner wurde vom Repository-Wurzelverzeichnis aus getestet.