View a markdown version of this page

Richiamo DevOps dell'agente tramite Webhook - AWS DevOps Agente

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

  1. Accedi alla console di AWS gestione e vai alla console dell' AWS DevOps agente

  2. Seleziona il tuo Agent Space

  3. Vai alla scheda Funzionalità

  4. 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:

  1. Fai clic su Genera webhook

  2. Il sistema genererà una coppia di key pair HMAC

  3. Archivia in modo sicuro la chiave e il segreto generati: non potrai più recuperarli

  4. 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/json

  • x-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/json

  • Authorization: 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.

  1. Verifica che sia il timestamp che l'ID dell'incidente siano aggiornati e unici. I messaggi duplicati vengono deduplicati.

  2. Verifica che il messaggio sia JSON valido

  3. 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.