Frontier Agent - AWS DevOps Agent
AWS DevOps Agentはre:Invent 2025で発表された注目の新サービスで、障害調査、原因特定、対処方法を提案を行ってくれるAIエージェントです。
AWSリソースの調査や問題解決を自動化してくれる強力なツールですが、現状コンソールや調査用のプロンプト入力は英語入力しか対応していないようです...
専用WEBコンソールはブラウザ翻訳で何とかなりますが、Investigation detailsは以下のエラーとなってしまうので英語で入力する必要があります。
DevOps AgentにはWebhook連携機能があり、そこから調査を開始できそうなので、Bedrockの翻訳を挟むことで日本語での調査依頼をできるようにしてみました。
やってみた
試した構成はこんな感じです。
- SlackからWebhookでLambda関数(Function URLs)を呼び出す
- LambdaからBedrock経由で、依頼内容を英語に翻訳&要約、WebhookでDevOps Agentに調査を依頼
- DevOps AgentからSlackチャンネル側に通知
DevOps Agent側の設定
Agent Spaceを作成
バージニアリージョンでAgent Spaceを作成
デフォルトでは読み取りの専用ロールが作成されます。
Webhook用URLを取得
Lambda側に設定するWebhook呼び出し用URLとシークレットを取得します。
「Capabilities」にある「Webhook」セクションで、「Add source」をクリック

「Generate URL and secret key」からWebhook URLとSecretを作成して「add」をクリック

Secretは再表示できないのでURLごと作り直しが必要です。

ステップ1の画面に記載がありましたが、データスキーマの形式は以下
{
eventType: 'incident';
incidentId: string;
action: 'created' | 'updated' | 'closed' | 'resolved';
priority: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW" | "MINIMAL";
title: string;
description?: string;
timestamp?: string;
service?: string;
// The original event generated by service is attached here.
data?: object;
}
Slack統合の設定
DevOps Agentの調査結果を通知するためにSlackチャンネルの統合も設定しておきます。
Lambda側の設定
Slack側から受けた日本語の調査依頼を、Bedrock側で翻訳、要約し、DevOps Agent側に投げるLambda関数を作成します。
(長いので該当部分だけ抜粋)
Bedrock呼び出し
Claude Sonnet 4.5を利用し、与えられたテキストを翻訳descriptionおよび要約titleで返すようにしています。
prompt = f"""以下の日本語テキストを英語に翻訳し、簡潔なタイトル(英語、50文字以内)を生成してください。
出力は必ず以下のJSON形式のみとし、他の説明やマークダウン記法は一切含めないでください:
{{"title": "簡潔なタイトル", "description": "翻訳された説明文"}}
テキスト:
{text}
JSON:"""
DevOps Agent側へのWebhook送信
DevOps AgentのWebhookに送信する情報を、データスキーマに沿った内容に整形します。
ペイロード形式
webhook_payload = {
'eventType': 'incident',
'incidentId': incident_id,
'action': 'created',
'priority': event.get('priority', 'HIGH'),
'title': title_en,
'description': description_en,
'timestamp': datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.000Z'),
'service': event.get('service', 'DevOpsAgentResearch')
}
HMAC署名の生成
def generate_hmac_signature(payload: str, secret: str, timestamp: str) -> str:
message = f"{timestamp}:{payload}"
signature = hmac.new(
secret.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256
).digest()
return base64.b64encode(signature).decode('utf-8')
Webhook送信
def send_webhook(webhook_url: str, secret: str, payload: Dict[str, Any]) -> Dict[str, Any]:
timestamp = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.000Z')
payload_json = json.dumps(payload)
signature = generate_hmac_signature(payload_json, secret, timestamp)
response = http.request(
'POST',
webhook_url,
body=payload_json,
headers={
'Content-Type': 'application/json',
'x-amzn-event-timestamp': timestamp,
'x-amzn-event-signature': signature
}
)
return {
'status_code': response.status,
'response': response.data.decode('utf-8')
}
Slack側の設定
slack側はappを設定して独自スラッシュコマンド(/investigate)を設定し、ワークスペースにインストールしておきます。
- Command:/investigate
- RequestURL:Lambda関数のfunction URLs
- Short Description:任意
- Usage Hint:任意
動かしてみる
スラッシュコマンドの後に調査させたい内容(今回は東京リージョンのLambda関数のエラー原因の調査)を入力して送信、Lambda側で応答を受け取ってDevOps Agentに調査依頼をしています。
1分後にDevOpsAgentから開始メッセージと調査状況がスレッドで返信されてきています。
なお結果はDevOps Agentが直接返すので、英語です。
やってみると調査依頼から結果応答まですべてslackで完結、しかも日本語で問い合わせ、と思いのほか悪くなかったです!
ただ現状では、調査結果確認はwebコンソールとslack、ServiceNowしか無さそうなので、対応が広がると良さそうだなと思います。



