計画のみの CI とポリシーゲート
高額な AgentCore のミスは計画(plan)に現れます:置換されるメモリ(すべての会話が失われる)、置換されるゲートウェイ(すべてのクライアントに新しい 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 バンド
| ID | 重大度 | トリガー |
|---|---|---|
CI001 | エラー | 計画がメモリ、ゲートウェイ、資格情報プロバイダー、ワークロード ID、Cognito ユーザープール、または DynamoDB テーブルを削除または置換する |
CI002 | エラー | 計画された IAM ポリシーが * に対して * を許可する |
CI003 | エラー | authorizer_type = "NONE" で計画されたゲートウェイ |
CI004 | 警告 | supported_versions なしで計画されたゲートウェイ |
CI005 | 情報 | 計画に変更がない |
CI006 | 情報 | 計画が作成する AgentCore リソース(課金面) |
CI010 | 情報 | リポジトリに SHA 固定アクションがない;フォールバックピンが使用された |
CI011 | 情報 | 計画ジョブのロールは読み取り専用である必要がある |
決定ルール
- CI は計画する;人間が適用する。 ワークフローには適用ジョブがなく、計画ロールは書き込みができないようにする必要があります。
- 許可はアドレスごと。
--allow-replaceは1つのリソースを指定します。「すべて許可」はありません。 - アクションを SHA に固定する。 リポジトリのピンを再利用します。フォールバックは、2026年10月5日に最初のユーザーのリポジトリが持っていたもので、タグでラベル付けされています。
- ベンダー化され、インストールされない。
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 計画ではない |
完了チェックリスト
- ワークフローは書き込み計画として表示され、書き込み前に確認された。
- 適用ステップはなく、計画ロールは読み取り専用として説明された。
-
policy_check.pyが実際の計画に対して実行されたか、ユーザーにその方法が伝えられた。 - ベンダー化されたランナーがリポジトリルートから実行された。