2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AWS DevOps Agentに日本語で調査を依頼できるようにしてみた(Webhook版)

2
Last updated at Posted at 2025-12-07

Frontier Agent - AWS DevOps Agent

AWS DevOps Agentはre:Invent 2025で発表された注目の新サービスで、障害調査、原因特定、対処方法を提案を行ってくれるAIエージェントです。

AWSリソースの調査や問題解決を自動化してくれる強力なツールですが、現状コンソールや調査用のプロンプト入力は英語入力しか対応していないようです...
専用WEBコンソールはブラウザ翻訳で何とかなりますが、Investigation detailsは以下のエラーとなってしまうので英語で入力する必要があります。

image.png

DevOps AgentにはWebhook連携機能があり、そこから調査を開始できそうなので、Bedrockの翻訳を挟むことで日本語での調査依頼をできるようにしてみました。

やってみた

試した構成はこんな感じです。

  • SlackからWebhookでLambda関数(Function URLs)を呼び出す
  • LambdaからBedrock経由で、依頼内容を英語に翻訳&要約、WebhookでDevOps Agentに調査を依頼
  • DevOps AgentからSlackチャンネル側に通知

DevOps Agent側の設定

Agent Spaceを作成

バージニアリージョンでAgent Spaceを作成
デフォルトでは読み取りの専用ロールが作成されます。

image.png

Webhook用URLを取得

Lambda側に設定するWebhook呼び出し用URLとシークレットを取得します。

「Capabilities」にある「Webhook」セクションで、「Add source」をクリック
image.png

「Generate URL and secret key」からWebhook URLとSecretを作成して「add」をクリック
スクリーンショット 2025-12-07 133201.png

Secretは再表示できないのでURLごと作り直しが必要です。
スクリーンショット 2025-12-07 134025.png

ステップ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:任意

image.png

動かしてみる

実際に動かしてみた結果がこちら
image.png

スラッシュコマンドの後に調査させたい内容(今回は東京リージョンのLambda関数のエラー原因の調査)を入力して送信、Lambda側で応答を受け取ってDevOps Agentに調査依頼をしています。
1分後にDevOpsAgentから開始メッセージと調査状況がスレッドで返信されてきています。
なお結果はDevOps Agentが直接返すので、英語です。

やってみると調査依頼から結果応答まですべてslackで完結、しかも日本語で問い合わせ、と思いのほか悪くなかったです!
ただ現状では、調査結果確認はwebコンソールとslack、ServiceNowしか無さそうなので、対応が広がると良さそうだなと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?