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
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 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/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 signieren. SHA-256
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" } } }
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.
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.