Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Richiamo DevOps dell'agente tramite Webhook
I webhook consentono ai sistemi esterni di avviare automaticamente le indagini degli agenti. AWS DevOps Ciò consente l'integrazione con sistemi di ticketing, strumenti di monitoraggio e altre piattaforme in grado di inviare richieste HTTP in caso di incidenti.
Prerequisiti
Prima di configurare l'accesso ai webhook, assicurati di avere:
Un Agent Space configurato in Agent AWS DevOps
Accesso alla console dell' AWS DevOps agente
Il sistema esterno che invierà le richieste di webhook
Tipi di webhook
AWS DevOps Agent supporta i seguenti tipi di webhook:
Webhook specifici per l'integrazione: generati automaticamente quando configuri integrazioni di terze parti come Dynatrace, Splunk, Datadog, New Relic o Slack. ServiceNow Questi webhook sono associati all'integrazione specifica e utilizzano metodi di autenticazione determinati dal tipo di integrazione
Webhook generici: possono essere creati manualmente per avviare indagini da qualsiasi fonte non coperta da un'integrazione specifica. I webhook generici attualmente utilizzano l'autenticazione HMAC (il token bearer non è attualmente disponibile).
Webhook di avviso Grafana: Grafana può inviare notifiche di avviso direttamente AWS DevOps all'agente tramite i punti di contatto webhook. Per istruzioni di configurazione che includono un modello di notifica personalizzato, vedi Connecting Grafana.
Metodi di autenticazione Webhook
Il metodo di autenticazione per il webhook dipende dall'integrazione a cui è associato:
Autenticazione HMAC: utilizzata da:
Webhook di integrazione con Dynatrace
Webhook generici (non collegati a una specifica integrazione di terze parti)
Autenticazione con token Bearer: utilizzata da:
Webhook di integrazione Splunk
Webhook di integrazione Datadog
Nuovi webhook di integrazione con Relic
ServiceNow webhook di integrazione
webhook di integrazione con Slack
Configurazione dell'accesso ai webhook
Fase 1: Accedere alla configurazione del webhook
Accedi alla console di AWS gestione e vai alla console dell' AWS DevOps agente
Seleziona il tuo Agent Space
Vai alla scheda Funzionalità
Nella sezione Webhook, fai clic su Configura
Fase 2: Generazione delle credenziali del webhook
Per webhook specifici per l'integrazione:
I webhook vengono generati automaticamente quando si completa la configurazione di un'integrazione di terze parti. L'URL e le credenziali dell'endpoint webhook vengono forniti al termine del processo di configurazione dell'integrazione.
Per i webhook generici:
Fai clic su Genera webhook
Il sistema genererà una coppia di key pair HMAC
Archivia in modo sicuro la chiave e il segreto generati: non potrai più recuperarli
Copia l'URL dell'endpoint del webhook fornito
Fase 3: Configurazione del sistema esterno
Utilizza l'URL e le credenziali dell'endpoint webhook per configurare il tuo sistema esterno per l'invio di richieste all'agente. AWS DevOps I passaggi di configurazione specifici dipendono dal sistema esterno.
Gestione delle credenziali del webhook
Rimozione delle credenziali: per eliminare le credenziali del webhook, vai alla sezione di configurazione del webhook e fai clic su Rimuovi. Dopo aver rimosso le credenziali, l'endpoint webhook non accetterà più richieste finché non ne genererai di nuove.
Rigenerazione delle credenziali: per generare nuove credenziali, rimuovi prima le credenziali esistenti, quindi genera una nuova coppia di chiavi o token.
Utilizzo del webhook
Formato di richiesta Webhook
Per avviare un'indagine, il sistema esterno deve inviare una richiesta POST HTTP all'URL dell'endpoint del webhook.
Per la versione 1 (autenticazione HMAC):
Intestazioni:
Content-Type: application/jsonx-amzn-event-signature: <HMAC signature>x-amzn-event-timestamp: <+%Y-%m-%dT%H:%M:%S.000Z>
La firma HMAC viene generata firmando il corpo della richiesta con la chiave segreta utilizzando SHA-256.
Per la versione 2 (autenticazione con token Bearer):
Intestazioni:
Content-Type: application/jsonAuthorization: Bearer <your-token>
Corpo della richiesta:
Il corpo della richiesta deve includere informazioni sull'incidente:
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" } } }
Codice di esempio
Versione 1 (autenticazione HMAC) -: 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); });
Versione 1 (autenticazione HMAC) - 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"
Versione 2 (autenticazione con token Bearer) -: 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), }); }
Versione 2 (autenticazione con token Bearer) - 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"
Risoluzione dei problemi relativi ai webhook
Se non ricevi un 200
Un 200 e un messaggio simile a un webhook ricevuto indicano che l'autenticazione è stata superata e il messaggio è stato messo in coda per essere verificato ed elaborato dal sistema. Se non ottieni un 200 ma un 4xx, molto probabilmente c'è qualcosa che non va nell'autenticazione o nelle intestazioni. Prova a inviare manualmente utilizzando le opzioni curl per aiutare a eseguire il debug dell'autenticazione.
Se ricevi un 200 ma non viene avviata un'indagine
La causa probabile è un payload non formattato.
Verifica che sia il timestamp che l'ID dell'incidente siano aggiornati e unici. I messaggi duplicati vengono deduplicati.
Verifica che il messaggio sia JSON valido
Verifica che il formato sia corretto
Se ricevi 200 dollari e l'indagine viene immediatamente annullata
Molto probabilmente hai raggiunto il limite mensile. Rivolgiti al tuo AWS contatto per chiedere una modifica del limite di tariffa, se del caso.