CI de Plano Somente com Gates de Política
Os erros caros do AgentCore são visíveis em um plano: uma memória que seria substituída (todas as conversas perdidas), um gateway que seria substituído (uma nova URL para cada cliente), uma função que concede tudo. Um pull request é o lugar mais barato para detê-los, e um plano é o artefato certo para verificar — é o que realmente aconteceria.
${CLAUDE_SKILL_DIR} é definido pelo runtime da skill para o diretório da
própria skill. Use-o exatamente como está em cada comando abaixo; os scripts de
uma skill irmã estão em ${CLAUDE_SKILL_DIR}/../<skill>/scripts/.
Fluxo
-
Planeje o workflow, somente leitura:
python3 ${CLAUDE_SKILL_DIR}/scripts/gen_ci.py <projeto> --dry-run--tf-rootpara a stack a ser planejada (padrão: a raiz que alcança os recursos do AgentCore),--role-varpara a variável do GitHub que contém a função do plano (padrãoAWS_PLAN_ROLE_ARN),--region,--terraform. -
Relate a raiz, Terraform ou Terragrunt, os fixadores encontrados (ou
CI010se os fallbacks forem usados) e a nota da função (CI011). -
Opções: escreva o workflow e o verificador copiado (gratuito); execute a política em um plano salvo existente primeiro (gratuito). Confirme com
AskUserQuestion, depois escreva. -
Teste o gate localmente em um plano que o usuário produziu:
python3 ${CLAUDE_SKILL_DIR}/scripts/policy_check.py agentcore.plan.json--allow-replace <endereço>apenas para uma substituição que um humano revisou. -
Verifique se o runner copiado funciona a partir da raiz do repositório:
python3 ci/agentcore/run.py review ..
A faixa CI0xx
| Id | Severidade | Gatilho |
|---|---|---|
CI001 | erro | o plano exclui ou substitui uma memória, gateway, provedor de credenciais, identidade de workload, pool de usuários Cognito ou tabela DynamoDB |
CI002 | erro | uma política IAM planejada permite * em * |
CI003 | erro | um gateway planejado com authorizer_type = "NONE" |
CI004 | aviso | um gateway planejado sem supported_versions |
CI005 | info | o plano não tem alterações |
CI006 | info | os recursos do AgentCore que o plano cria (a superfície de faturamento) |
CI010 | info | nenhuma ação fixada por SHA no repositório; fixadores fallback usados |
CI011 | info | a função da tarefa de plano deve ser somente leitura |
Regras de decisão
- CI planeja; humanos aplicam. O workflow não tem tarefa de apply, e a função do plano não deve ser capaz de escrever.
- Permissões são por endereço.
--allow-replacenomeia um recurso; não existe "permitir tudo". - Fixe ações a SHAs. Reutilize os fixadores do repositório; os fallbacks são os que o repositório do primeiro usuário carregava em 2026-10-05, rotulados com tags.
- Copiado, não instalado.
ci/agentcore/é Python 3.10+ puro; atualizar o plugin significa re-executargen_ci.py --forcee revisar o diff.
Referências
| Pergunta | Arquivo |
|---|---|
| O workflow, passo a passo; funções; Terragrunt | plan-only-ci.md |
| Cada regra de política, por que e como permitir uma exceção revisada | policy-gates.md |
Scripts
| Comando | Faz | Códigos de saída |
|---|---|---|
scripts/gen_ci.py <projeto> [--tf-root D] [--role-var V] [--dry-run] [--force] [--json] | o workflow mais ci/agentcore/ | 0 escrito/planejado, 1 nada, 2 argumentos inválidos |
scripts/policy_check.py <plan.json> [--allow-replace END ...] [--json] | o gate CI0xx em um plano salvo | 0 aprovado, 1 erro de política, 2 não é um plano |
Lista de verificação de conclusão
- O workflow foi exibido como um plano de escrita e confirmado antes de escrever.
- Ele não tem etapa de apply, e a função do plano foi descrita como somente leitura.
-
policy_check.pyfoi executado em um plano real, ou o usuário foi informado de como fazer. - O runner copiado foi exercitado a partir da raiz do repositório.