CI en lecture seule avec portes de politique
Les erreurs coûteuses d'AgentCore sont visibles dans un plan : une mémoire qui serait remplacée (toutes les conversations perdues), une passerelle qui serait remplacée (une nouvelle URL pour chaque client), un rôle qui accorde tout. Une pull request est l'endroit le moins cher pour les arrêter, et un plan est le bon artefact à vérifier — c'est ce qui se passerait réellement.
${CLAUDE_SKILL_DIR} est défini par l'environnement d'exécution de la compétence comme
le répertoire de cette compétence. Utilisez-le textuellement dans chaque commande
ci-dessous ; les scripts d'une compétence sœur sont dans
${CLAUDE_SKILL_DIR}/../<skill>/scripts/.
Flux
-
Planifiez le workflow, en lecture seule :
python3 ${CLAUDE_SKILL_DIR}/scripts/gen_ci.py <projet> --dry-run--tf-rootpour la pile à planifier (par défaut : la racine qui atteint les ressources AgentCore),--role-varpour la variable GitHub contenant le rôle de planification (par défautAWS_PLAN_ROLE_ARN),--region,--terraform. -
Signalez la racine, Terraform ou Terragrunt, les épingles trouvées (ou
CI010si les valeurs de repli sont utilisées), et la note de rôle (CI011). -
Options : écrire le workflow et le vérificateur intégré (gratuit) ; exécuter la politique sur un plan sauvegardé existant (gratuit). Confirmez avec
AskUserQuestion, puis écrivez. -
Essayez la porte localement sur un plan que l'utilisateur a produit :
python3 ${CLAUDE_SKILL_DIR}/scripts/policy_check.py agentcore.plan.json--allow-replace <adresse>uniquement pour un remplacement qu'un humain a examiné. -
Vérifiez que l'exécuteur intégré fonctionne depuis la racine du dépôt :
python3 ci/agentcore/run.py review ..
La bande CI0xx
| Id | Sévérité | Déclencheur |
|---|---|---|
CI001 | erreur | le plan supprime ou remplace une mémoire, passerelle, fournisseur d'identifiants, identité de charge de travail, pool d'utilisateurs Cognito ou table DynamoDB |
CI002 | erreur | une politique IAM planifiée autorise * sur * |
CI003 | erreur | une passerelle planifiée avec authorizer_type = "NONE" |
CI004 | avertissement | une passerelle planifiée sans supported_versions |
CI005 | information | le plan n'a pas de modifications |
CI006 | information | les ressources AgentCore que le plan crée (la surface de facturation) |
CI010 | information | aucune action SHA-épinglée dans le dépôt ; épingles de repli utilisées |
CI011 | information | le rôle du job de planification doit être en lecture seule |
Règles de décision
- CI planifie ; les humains appliquent. Le workflow n'a pas de job d'application, et le rôle de planification ne devrait pas pouvoir écrire.
- Les autorisations sont par adresse.
--allow-replacenomme une ressource ; il n'y a pas de "tout autoriser". - Épinglez les actions aux SHA. Réutilisez les épingles du dépôt ; les valeurs de repli sont celles que le dépôt du premier utilisateur transportait le 2026-10-05, étiquetées avec des tags.
- Intégré, pas installé.
ci/agentcore/est du Python 3.10+ pur ; mettre à jour le plugin signifie réexécutergen_ci.py --forceet examiner le diff.
Références
| Question | Fichier |
|---|---|
| Le workflow, étape par étape ; rôles ; Terragrunt | plan-only-ci.md |
| Chaque règle de politique, pourquoi, et comment autoriser une exception examinée | policy-gates.md |
Scripts
| Commande | Fait | Codes de sortie |
|---|---|---|
scripts/gen_ci.py <projet> [--tf-root D] [--role-var V] [--dry-run] [--force] [--json] | le workflow plus ci/agentcore/ | 0 écrit/planifié, 1 rien, 2 mauvais arguments |
scripts/policy_check.py <plan.json> [--allow-replace ADDR ...] [--json] | la porte CI0xx sur un plan sauvegardé | 0 réussi, 1 erreur de politique, 2 pas un plan |
Liste de vérification d'achèvement
- Le workflow a été présenté comme un plan d'écriture et confirmé avant d'écrire.
- Il n'a pas d'étape d'application, et le rôle de planification a été décrit comme en lecture seule.
-
policy_check.pya été exécuté sur un plan réel, ou l'utilisateur a été informé de la marche à suivre. - L'exécuteur intégré a été testé depuis la racine du dépôt.