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:
Integrationsspezifische Webhooks — Werden automatisch generiert, wenn Sie Integrationen von Drittanbietern wie Dynatrace, Splunk, Datadog, New Relic oder Slack konfigurieren. ServiceNow Diese Webhooks sind der spezifischen 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
Webhook-Zugriff konfigurieren
Schritt 1: Navigieren Sie zur Webhook-Konfiguration
Melden Sie sich bei der AWS Management Console an und navigieren Sie zur AWS DevOps Agent-Konsole
Wählen Sie Ihren Agent Space aus
Gehen Sie zur Registerkarte Funktionen
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:
Klicken Sie auf Webhook generieren
Das System generiert ein HMAC-Schlüsselpaar
Speichern Sie den generierten Schlüssel und das Geheimnis sicher — Sie können sie nicht erneut abrufen
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 Anfragen an den AWS DevOps Agenten gesendet werden. 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 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/jsonx-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 unter Verwendung von SHA-256 signieren.
Für Version 2 (Bearer-Token-Authentifizierung):
Kopfzeilen:
Content-Type: application/jsonAuthorization: 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" } } }
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 beginnt
Die wahrscheinliche Ursache ist eine falsch formatierte Nutzlast.
Vergewissern Sie sich, dass sowohl der Zeitstempel als auch die Vorfall-ID aktualisiert und eindeutig sind. Doppelte Nachrichten werden dedupliziert.
Prüfen Sie, ob die Nachricht gültig ist (JSON)
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.