

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
<a name="configuring-capabilities-for-aws-devops-agent-invoking-devops-agent-through-webhook"></a>

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
<a name="prerequisites"></a>

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
<a name="webhook-types"></a>

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](connecting-telemetry-sources-connecting-grafana.md).

## Metodi di autenticazione Webhook
<a name="webhook-authentication-methods"></a>

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
<a name="configuring-webhook-access"></a>

### Fase 1: Accedere alla configurazione del webhook
<a name="step-1-navigate-to-the-webhook-configuration"></a>

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

1. Seleziona il tuo Agent Space

1. Vai alla scheda **Funzionalità**

1. **Nella sezione **Webhook**, fai clic su Configura**

### Fase 2: Generazione delle credenziali del webhook
<a name="step-2-generate-webhook-credentials"></a>

**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**

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

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

1. Copia l'URL dell'endpoint del webhook fornito

### Fase 3: Configurazione del sistema esterno
<a name="step-3-configure-your-external-system"></a>

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
<a name="managing-webhook-credentials"></a>

**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
<a name="using-the-webhook"></a>

### Formato di richiesta Webhook
<a name="webhook-request-format"></a>

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
<a name="example-code"></a>

**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
<a name="troubleshooting-webhooks"></a>

### Se non ricevi un 200
<a name="if-you-do-not-receive-a-200"></a>

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
<a name="if-you-receive-a-200-but-an-investigation-does-not-start"></a>

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.

1. Verifica che il messaggio sia JSON valido

1. Verifica che il formato sia corretto

### Se ricevi 200 dollari e l'indagine viene immediatamente annullata
<a name="if-you-receive-a-200-and-investigation-is-immediately-cancelled"></a>

Molto probabilmente hai raggiunto il limite mensile. Rivolgiti al tuo AWS contatto per chiedere una modifica del limite di tariffa, se del caso.

## Argomenti correlati
<a name="related-topics"></a>
+ [Creazione di uno spazio per agenti](getting-started-with-aws-devops-agent-creating-an-agent-space.md)
+ [Cos'è un'app Web per DevOps agenti?](about-aws-devops-agent-what-is-a-devops-agent-web-app.md)
+ [DevOps Autorizzazioni Agent IAM](aws-devops-agent-security-devops-agent-iam-permissions.md)