AWS DevOps Agent (Preview)のPagerDuty連携とWebhook設定をやってみようとした #AWSreInvent

AWS DevOps Agent (Preview)のPagerDuty連携とWebhook設定をやってみようとした #AWSreInvent

2025.12.04

こんにちは。たかやまです。

AWS DevOps Agentは、エージェントの機能を最大化させるために以下の機能(Capabilitie)が追加できます。

機能カテゴリ 説明
マルチアカウントAWSアクセス インシデント対応中に組織全体のリソースを調査するためにセカンダリ AWS アカウントを設定する
AWS EKS アクセス設定 パブリックとプライベート両方の EKS 環境で、Kubernetes クラスター、ポッドログ、クラスターイベントの検査を有効化する
CI/CD パイプライン統合 GitHub と GitLab パイプラインを接続してデプロイメントをインシデントと関連付け、調査中のコード変更を追跡する
MCP サーバー接続 Model Context Protocol を通じて外部の可観測性ツールおよびカスタム監視システムを接続して、調査機能を拡張する
テレメトリーソース統合 Datadog、New Relic、Splunk などの監視プラットフォームを接続して、包括的な可観測性データへのアクセスを実現する
チケティングおよびチャット統合 ServiceNow、PagerDuty、Slack を接続してインシデント対応ワークフローを自動化し、チーム コラボレーションを実現する
Webhook 設定 外部システムが HTTP リクエストを通じて DevOps Agent の調査を自動的にトリガーできるようにする

Configuring capabilities for AWS DevOps Agent - AWS DevOps Agent

最近PagerDutyを触っていることもあり、今回はこのDevOps AgentのPagerDutyと連携を試してみたいと思います。

他の機能を試した記事があるので、こちらも参考にしてください。

https://dev.classmethod.jp/articles/aws-devops-agent-multi-account-access/
https://dev.classmethod.jp/articles/aws-devops-agent-slack-integration/

さきにまとめ

やってみた

こちらのドキュメントをもとにやっていきたいと思います。

https://docs.aws.amazon.com/devopsagent/latest/userguide/configuring-capabilities-webhook-configuration.html

Communications から設定しようとしてみる

ドキュメントではService NowやSlackの並びにあるので、設定的には Communications にあるかと思ったのですが、こちらから確認できません...

Ticketing and Chat Integration - Connect ServiceNow, PagerDuty, and Slack to automate incident response workflows and enable team collaboration

CleanShot 2025-12-04 at 19.49.55@2x.png

(ServiceNowとSlackしか表示されない)

CleanShot 2025-12-04 at 19.53.30@2x.png

AWS News Blog の方を見てみると PagerDuty は Webhook連携ができると記載されています。

The agent acts as a virtual team member and can be configured to automatically respond to incidents from your ticketing systems. It includes built-in support for ServiceNow, and through configurable webhooks, can respond to events from other incident management tools like PagerDuty. As investigations progress, the agent updates tickets and relevant Slack channels with its findings. All of this is powered by an intelligent application topology the agent builds—a comprehensive map of your system components and their interactions, including deployment history that helps identify potential deployment-related causes during investigations.

(翻訳)
エージェントは仮想チームメンバーとして機能し、チケッティングシステムからのインシデントに自動的に応答するように構成できます。ServiceNowの組み込みサポートが含まれており、設定可能なウェブフックを通じてPagerDutyなどの他のインシデント管理ツールからのイベントにも応答できます。調査が進むにつれて、エージェントは発見事項をチケットと関連するSlackチャネルで更新します。これらすべてはエージェントが構築するインテリジェントなアプリケーショントポロジーで実現されます。これはシステムコンポーネントとその相互作用の包括的なマップであり、デプロイメント履歴を含むため、調査中にデプロイメント関連の原因を特定するのに役立ちます。

https://aws.amazon.com/blogs/aws/aws-devops-agent-helps-you-accelerate-incident-response-and-improve-system-reliability-preview/

仕切り直してWebhook連携の設定を試してみます。

Webhook連携の設定

「Capabilities」タブから「Webhook」があります。そこから Add sourceをクリックします。

CleanShot 2025-12-04 at 15.24.00@2x.png
CleanShot 2025-12-04 at 15.24.58@2x.png

Webhook連携を設定する際、DevOps Agentが期待するデータスキーマに従ったペイロードを送信する必要があります。

  • eventType: 'incident' 固定
  • incidentId: インシデントを一意に識別する文字列
  • action: インシデントの状態(created、updated、closed、resolvedのいずれか)
  • priority: 重要度レベル(CRITICAL、HIGH、MEDIUM、LOW、MINIMAL)
  • title: インシデントのタイトル

オプション項目として description、timestamp、service、dataも指定可能です。

CleanShot 2025-12-04 at 15.25.33@2x.png

Webhook連携では、HMAC(Hash-based Message Authentication Code)を使用した接続を確立する必要があります。

実装手順が示されており、以下の4ステップで構成されています。

  1. SHA-256アルゴリズムとシークレットキーを使用してHMACインスタンスを生成
  2. タイムスタンプとペイロードをUTF-8エンコーディングで処理し、timestamp:payload形式のJSON文字列に変換
  3. HMACダイジェストを計算し、Base64形式でエンコードして署名変数に格納
  4. 生成した署名をx-amzn-event-signatureヘッダーに、タイムスタンプをx-amzn-event-timestampヘッダーに含めてHTTP POSTリクエストを送信

CleanShot 2025-12-04 at 15.30.40@2x.png

「Generate URL and secret key」ボタンをクリックすると、サービスとの安全な接続に必要なURLとシークレットキーが生成されます。

生成された情報は「Download .csv file」ボタンからCSV形式でダウンロード可能です。
このシークレットキーは一度ページを離れると再取得できないため、安全な場所に保存する必要があります。

CleanShot 2025-12-04 at 15.36.49@2x.png

Webhookが作成されるとCapabilities画面でWebhook URLとシークレットキーが表示されます。

CleanShot 2025-12-04 at 15.38.54@2x.png

PagerDuty側からWebhookを設定しようとしてみる

こちらを使ってPagerDuty側からWebhookを設定してみたいと思います。

Webhooks - PagerDuty を参考に 「Generic Webhooks (v3)」を選択します。

CleanShot 2025-12-04 at 21.26.48@2x.png

設定画面を見てみると、PagerDuty側から送るリクエスト形式は決まっているようで、先ほどWebhook連携設定時に出ていた eventTypeincidentId等のリクエストパラメータをこちら側から設定はできなさそうです。

CleanShot 2025-12-04 at 21.27.50@2x.png

PagerDuty側のインテグレーションも一応確認してみましたが、DevOps Agentのインテグレーションはありません

CleanShot 2025-12-04 at 21.30.47@2x.png

cURLでリクエストを送信してみる

仕切り直して、以下にあるサンプルcURLを使ってリクエストを送信を試してみたいと思います。

Webhook 経由で DevOps Agent を呼び出す - AWS DevOps Agent

# Configuration
WEBHOOK_URL="https://event-ai.us-east-1.api.aws/webhook/generic/YOUR_WEBHOOK_ID"
SECRET="YOUR_WEBHOOK_SECRET"

# Create payload
TIMESTAMP=$(date -u +%Y-%m-%dT%H:%M:%S.000Z)
INCIDENT_ID="test-alert-$(date +%s)"

PAYLOAD=$(cat <<EOF
{
  "eventType": "incident",
  "incidentId": "$INCIDENT_ID",
  "action": "created",
  "priority": "HIGH",
  "title": "Test Alert",
  "description": "Test alert description",
  "service": "TestService",
  "timestamp": "$TIMESTAMP"
}
EOF
)

# Send webhook
curl -X POST "$WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "x-amzn-event-timestamp: $TIMESTAMP" \
  -H "Authorization: Bearer $SECRET" \
  -d "$PAYLOAD"

各変数を設定した上で、cURLを実行してみますが、 Invalid request が返ってきました。

実行サマリ
curl -X POST "$WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "x-amzn-event-timestamp: $TIMESTAMP" \
  -H "Authorization: Bearer $SECRET" \
  -d "$PAYLOAD"
Invalid request%

こちらドキュメント内で Version 2 (Bearer token authentication) と記載されているので、念の為サンプルにはないですが Version 1 (HMAC authentication) も試してみます。

変更箇所としてはHMAC署名を生成して Authorization: Bearer $SECRETx-amzn-event-signature: ${SIGNATURE} に変更します。

# 認証情報
WEBHOOK_URL="https://event-ai.us-east-1.api.aws/webhook/generic/YOUR_WEBHOOK_ID"
SECRET="YOUR_WEBHOOK_SECRET"

# タイムスタンプ生成(ISO 8601形式)
TIMESTAMP=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
INCIDENT_ID="test-alert-$(date +%s)"

# ペイロード作成
PAYLOAD='{
  "eventType": "incident",
  "incidentId": "$INCIDENT_ID",
  "action": "created",
  "priority": "HIGH",
  "title": "Test incident from cURL",
  "description": "This is a test incident triggered via webhook",
  "service": "test-service"
}'

# HMAC署名生成(timestamp:payload形式)
+SIGNING_STRING="${TIMESTAMP}:${PAYLOAD}"
+SIGNATURE=$(echo -n "${SIGNING_STRING}" | openssl dgst -sha256 -hmac "${WEBHOOK_SECRET}" -binary | base64)

# cURLリクエスト送信
curl -X POST "${WEBHOOK_URL}" \
  -H "Content-Type: application/json" \
  -H "x-amzn-event-timestamp: ${TIMESTAMP}" \
+  -H "x-amzn-event-signature: ${SIGNATURE}" \
  -d "${PAYLOAD}"

こちらは Webhook received が返ってきているので成功しているようです。

実行サマリ
curl -X POST "${WEBHOOK_URL}" \
  -H "Content-Type: application/json" \
  -H "x-amzn-event-timestamp: ${TIMESTAMP}" \
  -H "x-amzn-event-signature: ${SIGNATURE}" \
  -d "${PAYLOAD}"
{"message": "Webhook received"}%

ただ、コンソールから新たな Investigation が作成されている感じはなさそうでした

CleanShot 2025-12-04 at 21.54.28@2x.png

このあたりはプレビュー版ということで、これから改善されていくことを期待しています。
(か、自分の試し方が誤っているのかもしれません)

最後に

AWS DevOps AgentのWebhook連携を使ったPagerDuty連携を試してみました。

結果としては、Webhook経由でのリクエスト送信は成功したものの、Investigation の自動作成までは確認できませんでした。

ドキュメントやブログ記事でPagerDutyとの連携について言及されていることから、GA版での統合が期待されます。

プレビュー版ということで今後のアップデートに期待したいと思います。

このブログがどなたかの参考になれば幸いです。(できた方がいればコメントいただけると嬉しいです!)

以上、たかやま(@nyan_kotaroo)でした。

この記事をシェアする

FacebookHatena blogX

関連記事