DevOps Agent の調査完了を EventBridge と SNS でメール通知してみた

DevOps Agent の調査完了を EventBridge と SNS でメール通知してみた

2026.06.26

はじめに

DevOps Agent の自動調査が終わった後、メール通知したい場合はどうするのか。DevOps Agent から Slack 通知は用意されていますがメール通知は用意されていないです。そこで EventBridge でイベントを拾って SNS 経由でメール送信する構成を試しました。実際に調査完了メールを受信できたので、設定内容と届いたメール本文を共有します。

前提となる GuardDuty x DevOps Agent の設定手順は以下の記事で紹介しています。

https://dev.classmethod.jp/articles/devops-agent-investigate-guardduty-findings/

確認結果

EventBridge + SNS で調査完了メールを受信できました。GuardDuty の検知内容や AI による調査レポートは、メール本文に含められません。

aws.aidevops イベントの detail オブジェクトにはステータスとメタデータのみが格納されており、調査レポートのテキストは含まれていません。スキーマの詳細は後述します。

AWS_DevOps_Agent__Investigati…d_jp_-_Classmethod_jp_メール_🔊.png

今回の検証構成

SNS トピックにメールアドレスをサブスクライブし、確認メールのリンクをクリック済みです。

区分 リソース 用途
事前準備 DevOps Agent(エージェントスペース) GuardDuty の調査を実行する
事前準備 SNS トピック メール通知の送信先
本記事の手順 EventBridge ルール 調査完了イベントを SNS に転送する

EventBridge ルールの設定

EventBridge コンソールで新しいルールを作成します。イベントパターンは以下の JSON を使います。ソースは aws.aidevopsdetail-type には調査時のライフサイクルイベントを列挙します。Investigation Completed だけでなく FailedTimed OutCancelled も含めることで、調査が失敗・タイムアウトした場合も通知されるようにしてみました。

{
  "detail-type": ["Investigation Completed", "Investigation Failed", "Investigation Timed Out", "Investigation Cancelled"],
  "source": ["aws.aidevops"]
}

ルールを編集___Amazon_EventBridge___ap-northeast-1.png

ターゲットには SNS トピックを指定します。

ルールの詳細___Amazon_EventBridge___ap-northeast-1_🔊-2.png

メール本文のカスタマイズ

ターゲット設定で InputTransformer を使うと、イベントから取り出した値をメール本文に埋め込めます。

拾えるフィールド一覧

InputPathsMap で取り出せるフィールドは、aws.aidevops イベントの detail オブジェクトに含まれるものに限ります。

変数 イベントのパス 内容
account $.account AWS アカウント ID
region $.region リージョン
detailType $.detail-type イベント種別(例: Investigation Completed
agentSpace $.detail.metadata.agent_space_id エージェントスペース ID
taskId $.detail.metadata.task_id タスク ID
status $.detail.data.status ステータス(例: COMPLETED
priority $.detail.data.priority 優先度(例: HIGH
startedAt $.detail.data.created_at タスク作成日時
endedAt $.detail.data.updated_at 最終更新日時
summaryId $.detail.data.summary_record_id サマリーレコード ID

AWS 公式ドキュメントに記載されているイベントスキーマは以下のとおりです。

"detail": {
  "version": "1.0.0",
  "metadata": {
    "agent_space_id": "...",
    "task_id": "...",
    "execution_id": "..."
  },
  "data": {
    "task_type": "INVESTIGATION",
    "priority": "CRITICAL",
    "status": "COMPLETED",
    "created_at": "...",
    "updated_at": "...",
    "summary_record_id": "..."
  }
}

出典: AWS DevOps Agent events detail reference - AWS DevOps Agent

詳細な調査内容を取得するには、メール本文の Console URL からコンソールを開くか、summary_record_id を使って別途内容を取得する必要がありました。

試してみた設定

まず InputPathsMap でイベントの各フィールドに変数名を割り当てます。

{
  "account": "$.account",
  "agentSpace": "$.detail.metadata.agent_space_id",
  "detailType": "$.detail-type",
  "endedAt": "$.detail.data.updated_at",
  "priority": "$.detail.data.priority",
  "region": "$.region",
  "startedAt": "$.detail.data.created_at",
  "status": "$.detail.data.status",
  "summaryId": "$.detail.data.summary_record_id",
  "taskId": "$.detail.metadata.task_id"
}

次に InputTemplate でメール本文の形式を定義します。<変数名> の形で参照します。agentSpace(エージェントスペース ID)と taskId を組み合わせてコンソール URL を生成しています。

"AWS DevOps Agent: <detailType>\n\nStatus     : <status>\nPriority   : <priority>\n\nConsole    : https://<agentSpace>.aidevops.global.app.aws/investigation/<taskId>\n\nStarted    : <startedAt>\nEnded      : <endedAt>\nSummary ID : <summaryId>\n\nTask ID    : <taskId>\nAccount    : <account> (<region>)"

こんな感じです。

ルールの詳細___Amazon_EventBridge___ap-northeast-1-2.png

届いたメール内容

InputTransformer の設定を適用して実際に届いたメールです。調査が終わったことはわかりますが、結局どうだったのかはコンソールを確認しないとわからないオチです。

AWS_DevOps_Agent__Investigati…d_jp_-_Classmethod_jp_メール_🔊.png

まとめ

DevOps Agent の調査完了後にメール通知したいなら、現状ですと EventBridge ルールで aws.aidevops のイベントを受け取り、SNS 経由でメール通知する構成になりました。イベントに含まれるのはステータスやメタデータのみで、調査レポートの本文は届きません。メールはあくまで「調査が終わった」トリガーとして使い、詳細はコンソール URL から確認しないとわかりません。

おわりに

調査が終わったことをすぐ知りたいだけならこの構成で十分ですが、AI の調査レポートをそのままメールに載せられれば理想的だと感じました。間に Lambda で DevOps Agent の結果を取得するのもありなのですが、今後のアップデートで SNS 連携追加されてもおかしくはないので頑張りすぎないことにしました。

参考

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事