Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AWS DevOps Agent Directed Actions — 障害検知の自動転送 + Web App承認 + 根治PR自動化

AWS DevOps Agentに2026年8月25日に追加された新機能「Directed Actions」 (承認付きでミューテーション操作を実行できる機能)を検証するためのコード一式です。

DynamoDBのスロットリングを題材に、

  1. CloudWatchアラームの発火をきっかけに、DevOps Agentの汎用webhookへインシデントとして転送する
  2. 担当者にメール(SNS)で通知する
  3. 担当者がDevOps Agent Web AppのInvestigations画面で調査結果・緩和策を確認し、そこで承認する
  4. DevOps Agentが緩和策(DynamoDBのキャパシティ変更)を実行する
  5. 続けて根治のためのPull RequestをGitHub MCP Server経由で作成する(これもWeb App上で承認)

という一連の流れを検証します。承認・実行・PR作成はすべてDevOps Agent Web App側の ネイティブな機能に任せる方針にしたため、自作するのは「CloudWatchアラームをwebhookへ 転送する」「担当者に通知する」という薄い橋渡し部分だけです(Slackボットのような 自作の承認UIは持たない)。全体をコストのかからないサーバーレス構成 (Lambda / SNS / DynamoDB on-demand)で組んでいます。

アーキテクチャ

CloudWatch Alarm (DynamoDB書き込みスロットリング)
        │ EventBridge (Alarm State Change → ALARM)
        ▼
Lambda: investigation-trigger
        │ HMAC署名してPOST (DevOps Agent 汎用webhook)
        ▼
DevOps Agent が調査を自動開始(Investigationsに記録)
        │
Lambda: investigation-trigger (同じLambda内で継続)
        │ SNS Publish
        ▼
担当者にメール通知「Investigations一覧で確認してください」
        ▼
担当者がWeb Appで調査結果・緩和策を確認し、チャットで実行を指示
        │ (Directed Actionsの承認UIはWeb App組み込み、ここは自作しない)
        ▼
DevOps Agent が緩和策を実行 → 続けて根治PRの作成もWeb App上で承認
        ▼
根治PRがGitHubに作成される(マージは人間が行う)

スタック構成

スタック 内容
DevOpsAgentDemoWorkloadStack 「障害の起きる側」。DynamoDBテーブル(意図的に低プロビジョンド)、CloudWatchアラーム、手動起動のロードジェネレータLambda、参考シナリオ用のセキュリティグループ
DevOpsAgentAgentSpaceStack DevOps AgentのAgent Space本体、AWS監視アカウントのassociation、GitHub MCP Serverのassociation
DevOpsAgentElevatedRoleStack Directed Actions実行用の昇格IAMロール(このデモで使う操作だけに絞った最小権限)
DevOpsAgentMitigationPipelineStack webhook転送Lambda、SNSトピック(+メール購読)

コストについて

  • DynamoDBテーブルはプロビジョンド1RCU/1WCU(スロットリングをわざと再現するため)。月額ごく僅か
  • Lambdaは全てARM64、リクエスト課金。ロードジェネレータは手動起動のみでスケジュール実行しない
  • SNSはメール購読のみで実質無料
  • VPCはNAT Gatewayなし(参考シナリオのセキュリティグループを置くためだけの入れ物)
  • Secrets Managerは使わず、SSM Parameter Store(Standard tier、無料)でwebhook認証情報を管理
  • 検証が終わったら cdk destroy --all で即座に削除する運用を前提にしている

事前に用意すること(このコードでは自動化できない部分)

  1. DevOps Agentの汎用webhook作成(コンソール操作のみ、API/CLI/IaC非対応): Agent Space → Capabilitiesタブ → WebhookセクションでGenerate webhook、 認証方式はHMACを選択。表示されるwebhook URLとシークレットはこの画面でしか見えない (シークレットは1度しか表示されない)ので必ず控える。
  2. Directed Actionsの有効化・昇格ロールの登録: 2026年8月時点でCloudFormationに未対応で AWS CLI/SDKからのみ設定できる。cdk deploy後にscripts/enable-directed-actions.shを実行する。
  3. GitHub PAT: 個人アカウントの対象リポジトリに対するrepoスコープのPersonal Access Token (根治PR作成用。GitHub MCP associationへの登録も同スクリプトで行う)
  4. 1で控えたwebhook URL・シークレットをSSM Parameter Store(SecureString)に登録:
    aws ssm put-parameter --name /devopsagent-mitigation/webhook-url --type SecureString --value https://event-ai.ap-northeast-1.api.aws/webhook/generic/...
    aws ssm put-parameter --name /devopsagent-mitigation/webhook-secret --type SecureString --value ...
  5. Agent SpaceをAWSコンソールで開き、Web AppのURL(Investigations一覧ページ)を控えて .envWEBAPP_INVESTIGATIONS_URLに設定する(固定のURLパターンがドキュメントに 無いため、実際に開いて確認する必要がある)

デプロイ手順

cp .env.example .env   # 値を埋める(.envはコミットされない)
npm install
npm run synth           # 差分確認
npm run deploy          # 実際にデプロイ(全スタック)

# Directed Actionsの有効化・昇格ロール登録・GitHub MCP認証情報の設定
AGENT_SPACE_ID=<AgentSpaceIdOutput> \
ELEVATED_ROLE_ARN=<ElevatedRoleArnOutput> \
AWS_ACCOUNT_ID=<デプロイ先アカウントID> \
GITHUB_PAT=<GitHub PAT> \
./scripts/enable-directed-actions.sh

デプロイ後、SNSのメール購読はAWSから届く確認メールのリンクをクリックして Confirmする必要がある(1回だけ)。

検証が終わったら:

npx cdk destroy --all

検証で確認した/確認したいこと(実機未確認の前提)

  • update-associationでGitHub MCPの認証情報(PAT)を渡すフィールド名 (scripts/enable-directed-actions.shauthorizationTokenは暫定)
  • Agent SpaceのoperatorAppを省略せずに作った場合の実際の挙動
  • Web AppのInvestigations一覧ページの実際のURLパターン(ドキュメントに記載なし、 コンソールで確認する前提にしている)
  • 実際のcdk deploy(検証アカウントへの実デプロイ、実コスト発生)は未実施

検証結果は別途DevelopersIOの記事として公開予定。

About

AWS DevOps Agent Directed Actions: 緩和策の自動実行+Slack承認+根治PR自動化の検証

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages