> For the complete documentation index, see [llms.txt](https://docs.airops.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.airops.com/docs/fr/insights/onsite/traffic/cloudfront-agent-analytics.md).

# CloudFront

Ce guide vous explique comment configurer les journaux en temps réel d’Amazon CloudFront pour les diffuser dans AirOps via Amazon Kinesis Data Firehose.

Ce guide vous accompagne dans la configuration d’Amazon CloudFront **journaux en temps réel** à diffuser vers AirOps via **Amazon Kinesis Data Firehose**. Une fois connecté, AirOps analysera automatiquement votre trafic, classera les visites de bots IA (ChatGPT, Claude, Perplexity, Google, et bien d’autres) et fera apparaître des informations dans votre tableau de bord Agent Analytics.

***

### Prérequis

* Un **AirOps** compte actif avec Agent Analytics activé
* Une **compte AWS** avec accès à CloudFront, Kinesis Data Firehose et IAM
* Un **distribution CloudFront** qui sert votre site web
* Votre **Clé API de l’espace de travail :** disponible dans Paramètres (barre de navigation gauche) > Espace de travail
* Votre **ID du Brand Kit :** disponible dans l’URL en naviguant vers Contexte (barre de navigation gauche) > BrandKits, sous une forme telle que `https://app.airops.com/<YOUR_WORKSPACE_SLUG>/data/brand_kits/<YOUR_BRAND_KIT_ID>`

***

### Étape 1 : Créer un flux de livraison Kinesis Data Firehose

1. Ouvrez le **console Amazon Kinesis** et accédez à **Data Firehose**.
2. Cliquez sur **Créer un flux Firehose**.
3. Configurez la source et la destination :
   * **Source :** `PUT direct`
   * **Destination :** `Point de terminaison HTTP`
4. Nommez votre flux (par exemple, `airops-cloudfront-analytics`).

#### Configurez la destination du point de terminaison HTTP

| Paramètre                            | Valeur                                                                   |
| ------------------------------------ | ------------------------------------------------------------------------ |
| **URL du point de terminaison HTTP** | `https://ingest.airops.com/api/v1/cloudfront/<YOUR_BRAND_KIT_ID>/ingest` |
| **Clé d’accès**                      | Votre clé API d’AirOps pour l’espace de travail                          |
| **Encodage du contenu**              | `GZIP`                                                                   |
| **Durée de nouvelle tentative**      | `300` secondes (recommandé)                                              |

<figure><img src="https://344527547-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FX2n5yPRPynbnWuO4SH0M%2Fuploads%2FVj41I6mzmUrWTy5eAlr2%2FScreenshot%202026-04-02%20at%206.52.32%E2%80%AFPM.png?alt=media&amp;token=33c45fe0-7d89-4008-9a49-c85f7a823972" alt=""><figcaption></figcaption></figure>

#### Configurez les indications de mise en mémoire tampon

| Paramètre                | Valeur recommandée |
| ------------------------ | ------------------ |
| **Taille du tampon**     | `5 MiB`            |
| **Intervalle du tampon** | `60` secondes      |

Ces paramètres contrôlent la fréquence à laquelle Firehose livre les lots à AirOps. Ce sont les paramètres recommandés pour éviter de recevoir des erreurs 429 de nos serveurs.

#### Configurez les paramètres de sauvegarde

* **Bucket S3 de sauvegarde :** Sélectionnez ou créez un bucket S3 pour les sauvegardes des livraisons échouées.
* **Mode de sauvegarde :** `Données ayant échoué uniquement` (recommandé).

5. Cliquez sur **Créer un flux Firehose**.

***

### Étape 2 : Créer une configuration de journalisation en temps réel CloudFront

1. Ouvrez le **CloudFront** console.
2. Dans la navigation de gauche, allez à **Journalisation > Ajouter > Journaux Amazon CloudWatch**.
3. Sélectionnez Livrer vers Amazon Kinesis Firehose.
4. Sélectionnez le flux de destination : votre Firehose configuré
5. Configurez les paramètres supplémentaires suivants :

| Paramètre            | Valeur |
| -------------------- | ------ |
| **Champs**           | `tous` |
| **Format de sortie** | `JSON` |

#### Sélectionner les champs du journal

Sélectionnez **tous** des champs suivants. Chacun est requis, et les journaux auxquels il en manque un seul ne peuvent pas être traités :

| Champ                 | Obligatoire |
| --------------------- | ----------- |
| `timestamp(date)`     | Oui         |
| `timestamp(time)`     | Oui         |
| `cs-method`           | Oui         |
| `cs-uri-stem`         | Oui         |
| `cs(User-Agent)`      | Oui         |
| `cs(Referer)`         | Oui         |
| `cs-protocol-version` | Oui         |
| `cs-protocol`         | Oui         |
| `cs-bytes`            | Oui         |
| `sc-status`           | Oui         |
| `sc-bytes`            | Oui         |
| `sc-content-type`     | Oui         |
| `time-taken`          | Oui         |
| `time-to-first-byte`  | Oui         |
| `ssl-protocol`        | Oui         |
| `ssl-cipher`          | Oui         |
| `x-edge-location`     | Oui         |
| `x-edge-result-type`  | Oui         |
| `x-host-header`       | Oui         |

`c-ip` et `cs-uri-query` ne sont pas requis, et AirOps ne stocke pas les adresses IP des visiteurs ni les chaînes de requête. La sélection de `tous` des champs les envoie, mais nous les ignorons. Si vous préférez ne pas les partager, ne les incluez pas.

5. Cliquez sur **Créer la configuration**.

***

### Étape 3 : Joindre la configuration de journalisation à votre distribution

1. Allez à **CloudFront > Distributions** et sélectionnez votre distribution.
2. Accédez à l’ **Comportements** onglet.
3. Sélectionnez le comportement que vous souhaitez suivre (généralement `Par défaut (*)`) et cliquez sur **Modifier**.
4. Sous **Configuration de journalisation en temps réel**, sélectionnez la `airops-analytics` configuration que vous venez de créer.
5. Cliquez sur **Enregistrer les modifications**.

Répétez l’opération pour tous les comportements de cache supplémentaires que vous souhaitez surveiller.

***

### Étape 4 : Vérifier la connexion

Après avoir associé la configuration, les données devraient commencer à circuler dans **2 à 5 minutes**.

1. Générez du trafic vers votre distribution CloudFront (visitez votre site web).
2. Vérifiez l’onglet Firehose **Surveillance** dans la console AWS pour confirmer que les enregistrements sont bien livrés.
3. Dans votre **tableau de bord AirOps**, accédez à **Agent Analytics** — vous devriez voir les données de trafic apparaître rapidement.

#### Dépannage

| Symptôme                                        | Cause probable                          | Correctif                                                                                                         |
| ----------------------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |
| Firehose affiche des erreurs de livraison (401) | Clé API invalide                        | Vérifiez votre clé API dans AirOps Paramètres > Intégrations                                                      |
| Firehose affiche des erreurs de livraison (429) | Limite de débit dépassée                | Augmentez l’intervalle du tampon ou la taille du tampon pour réduire la fréquence de livraison                    |
| Aucune donnée dans la surveillance Firehose     | Configuration des journaux non associée | Confirmez que la configuration de journalisation en temps réel est associée au comportement de votre distribution |
| Données dans Firehose mais pas dans AirOps      | Délai de traitement                     | Attendez jusqu’à 10 minutes ; vérifiez que l’ID de votre Brand Kit est correct dans l’URL du point de terminaison |

***

### Limites de débit

L’ingesteur AirOps applique une limite de débit de **5 requêtes par minute et par clé API**. Avec les paramètres de tampon recommandés (5 MiB / 60 secondes), vous resterez largement dans cette limite. Si vos distributions génèrent un trafic très élevé, augmentez la taille ou l’intervalle du tampon en conséquence.

***

### Ce qu’AirOps suit

Une fois connecté, AirOps :

* **Ingère toutes les requêtes CloudFront** — vues de page, ressources, appels API
* **classe le trafic des bots IA** — identifie les visites de ChatGPT, Claude, Google, Perplexity, Meta, Apple, Bing, Bytedance, Common Crawl, et d’autres
* **catégorise le comportement de crawl** — distingue les crawlers d’entraînement IA, les récupérations pour la recherche IA, l’indexation IA et la navigation IA initiée par l’utilisateur
* **affiche des analyses** — répartitions du trafic, rapports bots/humains et tendances de crawl dans votre tableau de bord


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.airops.com/docs/fr/insights/onsite/traffic/cloudfront-agent-analytics.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
