View a markdown version of this page

DevOps Agent über Webhook aufrufen - AWS DevOps Agentin

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

DevOps Agent über Webhook aufrufen

Webhooks ermöglichen es externen Systemen, automatisch Agentenuntersuchungen auszulösen AWS DevOps . Dies ermöglicht die Integration mit Ticketsystemen, Überwachungstools und anderen Plattformen, die HTTP-Anfragen senden können, wenn Vorfälle auftreten.

Voraussetzungen

Bevor Sie den Webhook-Zugriff konfigurieren, stellen Sie sicher, dass Sie über Folgendes verfügen:

  • Ein im Agent konfigurierter Agent-Space AWS DevOps

  • Zugriff auf die AWS DevOps Agent-Konsole

  • Das externe System, das Webhook-Anfragen sendet

Webhook-Typen

AWS DevOps Agent unterstützt die folgenden Arten von Webhooks:

  • Integration-specific Webhooks — Wird automatisch generiert, wenn Sie Integrationen von Drittanbietern wie Dynatrace, Splunk, Datadog, New Relic oder Slack konfigurieren. ServiceNow Diese Webhooks sind der jeweiligen Integration zugeordnet und verwenden Authentifizierungsmethoden, die vom Integrationstyp bestimmt werden

  • Generische Webhooks — Können manuell erstellt werden, um Untersuchungen aus beliebigen Quellen auszulösen, die nicht durch eine bestimmte Integration abgedeckt sind. Generische Webhooks verwenden derzeit die HMAC-Authentifizierung (Bearer-Token derzeit nicht verfügbar).

  • Grafana-Alert-Webhooks — Grafana kann Warnmeldungen über Webhook-Kontaktpunkte direkt an den AWS DevOps Agenten senden. Anweisungen zur Einrichtung, einschließlich einer benutzerdefinierten Benachrichtigungsvorlage, finden Sie unter Grafana verbinden.

Webhook-Authentifizierungsmethoden

Die Authentifizierungsmethode für Ihren Webhook hängt davon ab, mit welcher Integration er verknüpft ist:

HMAC-Authentifizierung — Wird verwendet von:

  • Webhooks zur Dynatrace-Integration

  • Generische Webhooks (nicht mit einer bestimmten Drittanbieter-Integration verknüpft)

Bearer-Token-Authentifizierung — Wird verwendet von:

  • Webhooks zur Splunk-Integration

  • Webhooks zur Datadog-Integration

  • Webhooks zur Integration von New Relic

  • ServiceNow Webhooks für die Integration

  • Webhooks zur Integration von Slack

  • Webhooks zur Grafana-Integration

Die HMAC-Authentifizierung verstehen

HMAC (Hash-based Message Authentication Code) ist ein kryptografischer Mechanismus, der sowohl die Integrität als auch die Authentizität einer Webhook-Anfrage überprüft. Wenn Sie einen Webhook mit HMAC-Authentifizierung senden, generieren Sie eine Signatur, indem Sie den Zeitstempel und die Nutzdaten der Anfrage zusammen mit Ihrem geheimen Schlüssel und dem Algorithmus hashen. SHA-256 AWS DevOps Der Agent berechnet auf seiner Seite unabhängig denselben Hash und vergleicht die beiden Signaturen. Wenn sie übereinstimmen, wird die Anfrage akzeptiert.

Da der Zeitstempel in der Signatur enthalten ist, bietet HMAC auch Schutz vor Wiederholungen. Der AWS DevOps Agent kann Anfragen zurückweisen, deren Zeitstempel zu weit in der Vergangenheit liegen, wodurch verhindert wird, dass ein Angreifer eine gültige Anfrage abfängt und erneut sendet.

Wahl zwischen HMAC und Bearer-Token

Überlegungen HMAC Inhaber-Token
Komplexität der Einrichtung Komplexer — Ihr Kunde muss für jede Anfrage anhand des Zeitstempels und der Nutzdaten eine Signatur berechnen Einfacher — füge ein statisches Token in den Header ein Authorization
Integrität der Nutzlast Verifiziert — Jede Änderung der Payload nach dem Signieren macht die Signatur ungültig Nicht verifiziert — das Token authentifiziert den Absender, schützt aber nicht den Inhalt der Nutzlast
Schutz bei wiederholter Wiedergabe Built-in — Der Zeitstempel in der Signatur ermöglicht es dem Server, veraltete Anfragen abzulehnen Nicht integriert — ein erfasstes Token kann wiederverwendet werden, bis es rotiert wird
Geheimes Expositionsrisiko Niedriger — das Geheimnis wird in der Anfrage nie übertragen, sondern nur die berechnete Signatur wird gesendet Höher — Das Token wird in jedem Anforderungsheader gesendet, was die Gefahr erhöht, wenn der Datenverkehr abgefangen wird
Wann sollte dies verwendet werden? Wird empfohlen, wenn Sie stärkere Sicherheitsgarantien benötigen, z. B. für generische Webhooks oder Umgebungen mit strengen Compliance-Anforderungen Geeignet, wenn einfache Integration Priorität hat und Ihr Netzwerktransport vertrauenswürdig ist, z. B. für verwaltete SaaS-Integrationen über HTTPS

Webhook-Zugriff konfigurieren

Schritt 1: Navigieren Sie zur Webhook-Konfiguration

  1. Melden Sie sich bei der AWS Management Console an und navigieren Sie zur AWS DevOps Agent-Konsole

  2. Wählen Sie Ihren Agent Space aus

  3. Gehen Sie zur Registerkarte Funktionen

  4. Klicken Sie im Abschnitt Webhook auf Configure

Schritt 2: Generieren Sie Webhook-Anmeldeinformationen

Für integrationsspezifische Webhooks:

Webhooks werden automatisch generiert, wenn Sie die Konfiguration einer Drittanbieter-Integration abschließen. Die Webhook-Endpunkt-URL und die Anmeldeinformationen werden am Ende des Integrations-Setup-Prozesses bereitgestellt.

Für generische Webhooks:

  1. Klicken Sie auf Webhook generieren

  2. Das System generiert ein HMAC-Schlüsselpaar

  3. Speichern Sie den generierten Schlüssel und das Geheimnis sicher — Sie können sie nicht erneut abrufen

  4. Kopieren Sie die angegebene Webhook-Endpunkt-URL

Schritt 3: Konfigurieren Sie Ihr externes System

Verwenden Sie die Webhook-Endpunkt-URL und die Anmeldeinformationen, um Ihr externes System so zu konfigurieren, dass es Anfragen an den AWS DevOps Agenten sendet. Die spezifischen Konfigurationsschritte hängen von Ihrem externen System ab.

Verwaltung von Webhook-Anmeldeinformationen

Anmeldeinformationen entfernen — Um Webhook-Anmeldeinformationen zu löschen, gehen Sie zum Abschnitt mit der Webhook-Konfiguration und klicken Sie auf Entfernen. Nach dem Entfernen der Anmeldeinformationen akzeptiert der Webhook-Endpunkt keine Anfragen mehr, bis Sie neue Anmeldeinformationen generieren.

Anmeldeinformationen neu generieren — Um neue Anmeldeinformationen zu generieren, entfernen Sie zuerst die vorhandenen Anmeldeinformationen und generieren Sie dann ein neues key pair oder Token.

Den Webhook verwenden

Webhook-Anforderungsformat

Um eine Untersuchung auszulösen, sollte Ihr externes System eine HTTP-POST-Anfrage an die Webhook-Endpunkt-URL senden.

Für Version 1 (HMAC-Authentifizierung):

Kopfzeilen:

  • Content-Type: application/json

  • x-amzn-event-signature: <HMAC signature>

  • x-amzn-event-timestamp: <+%Y-%m-%dT%H:%M:%S.000Z>

Die HMAC-Signatur wird generiert, indem Sie den Anforderungstext mit Ihrem geheimen Schlüssel signieren. SHA-256

Für Version 2 (Bearer-Token-Authentifizierung):

Kopfzeilen:

  • Content-Type: application/json

  • Authorization: Bearer <your-token>

Hauptteil der Anfrage:

Der Hauptteil der Anfrage sollte Informationen über den Vorfall enthalten:

json { "title": "Incident title", "severity": "high", "affectedResources": ["resource-id-1", "resource-id-2"], "timestamp": "2025-11-23T18:00:00Z", "description": "Detailed incident description", "data": { "metadata": { "region": "us-east-1", "environment": "production" } } }

Payload-Schema:

{ 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; }

Beispiel-Code

Version 1 (HMAC-Authentifizierung) -: JavaScript

const crypto = require('crypto'); // Webhook configuration const webhookUrl = 'https://your-webhook-endpoint.amazonaws.com/invoke'; const webhookSecret = 'your-webhook-secret-key'; // Incident data const incidentData = { eventType: 'incident', incidentId: 'incident-123', action: 'created', priority: "HIGH", title: 'High CPU usage on production server', description: 'High CPU usage on production server host ABC in AWS account 1234 region us-east-1', timestamp: new Date().toISOString(), service: 'MyTestService', data: { metadata: { region: 'us-east-1', environment: 'production' } } }; // Convert data to JSON string const payload = JSON.stringify(incidentData); const timestamp = new Date().toISOString(); const hmac = crypto.createHmac("sha256", webhookSecret); hmac.update(`${timestamp}:${payload}`, "utf8"); const signature = hmac.digest("base64"); // Send the request fetch(webhookUrl, { method: 'POST', headers: { 'Content-Type': 'application/json', 'x-amzn-event-timestamp': timestamp, 'x-amzn-event-signature': signature }, body: payload }) .then(res => { console.log(`Status Code: ${res.status}`); return res.text(); }) .then(data => { console.log('Response:', data); }) .catch(error => { console.error('Error:', error); });

Version 1 (HMAC-Authentifizierung) — cURL:

#!/bin/bash # 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 ) # Generate HMAC signature SIGNATURE=$(echo -n "${TIMESTAMP}:${PAYLOAD}" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64) # Send webhook curl -X POST "$WEBHOOK_URL" \ -H "Content-Type: application/json" \ -H "x-amzn-event-timestamp: $TIMESTAMP" \ -H "x-amzn-event-signature: $SIGNATURE" \ -d "$PAYLOAD"

Version 2 (Bearer-Token-Authentifizierung) -: JavaScript

function sendEventToWebhook(webhookUrl, secret) { const timestamp = new Date().toISOString(); const payload = { eventType: 'incident', incidentId: 'incident-123', action: 'created', priority: "HIGH", title: 'Test Alert', description: 'Test description', timestamp: timestamp, service: 'TestService', data: {} }; fetch(webhookUrl, { method: "POST", headers: { "Content-Type": "application/json", "x-amzn-event-timestamp": timestamp, "Authorization": `Bearer ${secret}`, // Fixed: template literal }, body: JSON.stringify(payload), }); }

Version 2 (Bearer-Token-Authentifizierung) — cURL:

#!/bin/bash # 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"

Fehlerbehebung bei Webhooks

Wenn Sie keine 200 erhalten

Eine 200 und eine Meldung wie Webhook erhalten bedeuten, dass die Authentifizierung bestanden wurde und die Nachricht in die Warteschlange gestellt wurde, damit das System sie überprüfen und verarbeiten kann. Wenn Sie keine 200, sondern eine 4xx erhalten, stimmt höchstwahrscheinlich etwas mit der Authentifizierung oder den Headern nicht. Versuchen Sie, manuell zu senden, indem Sie die Curl-Optionen verwenden, um die Authentifizierung zu debuggen.

Wenn Sie eine 200 erhalten, aber eine Untersuchung nicht gestartet wird

Die wahrscheinliche Ursache ist eine falsch formatierte Nutzlast.

  1. Vergewissern Sie sich, dass sowohl der Zeitstempel als auch die Vorfall-ID aktualisiert und eindeutig sind. Doppelte Nachrichten werden dedupliziert.

  2. Prüfen Sie, ob die Nachricht gültig ist (JSON)

  3. Prüfen Sie, ob das Format korrekt ist

Wenn Sie eine 200 erhalten und die Untersuchung sofort abgebrochen wird

Höchstwahrscheinlich haben Sie das Limit für den Monat erreicht. Bitte wenden Sie sich an Ihren AWS Ansprechpartner, um gegebenenfalls eine Änderung des Ratenlimits zu beantragen.