Envoi de journaux à l'aide du point de terminaison JSON structuré (journaux JSON structurés) - Amazon CloudWatch Logs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Envoi de journaux à l'aide du point de terminaison JSON structuré (journaux JSON structurés)

Le point de terminaison Structured JSON Logs (/ingest/json) accepte le JSON standard, qu'il s'agisse d'un seul objet JSON ou d'un tableau d'objets JSON. Ce point de terminaison est conçu pour les données de journal structurées où chaque événement est un objet JSON.

Si vous utilisez l'authentification par jeton porteur, suivez les étapes de configuration décrites Configuration de l'authentification par jeton porteur avant de continuer.

Format des demandes

Seul application/json est accepté comme type de contenu.

Objet JSON unique :

{"timestamp":1771007942000,"message":"single event","level":"INFO"}

Tableau d'objets JSON :

[ {"timestamp":1771007942000,"message":"event one","level":"INFO"}, {"timestamp":1771007943000,"message":"event two","level":"ERROR"} ]

Types de valeurs JSON acceptés

Ce point de terminaison est strict : seuls les objets JSON sont acceptés en tant qu'événements.

Input Comportement
Objet JSON unique Accepté comme un seul événement
Tableau d'objets JSON Chaque objet devient un événement distinct
Tableau vide [] Accepté, produit 0 événements
Non-objet dans le tableau (chaîne, nombre, etc.) Ignoré
Primitive de haut niveau ("hello",42) Ignoré
Objets concaténés {...}{...} Seul le premier objet est analysé

Exemple — tableau de types mixtes :

[ {"timestamp":1771007942000,"message":"valid object"}, "just a string", 42, {"timestamp":1771007943000,"message":"another valid object"} ]

Résultat : 2 événements ingérés (les objets), 2 ignorés (la chaîne et le chiffre).

Champ d'horodatage

Le "timestamp" champ est exprimé en millisecondes d'époque, comme le point de terminaison NDJSON.

Format Exemple Interprété comme
Numérique (millis) "timestamp":1771007942000 1771007942000 ms
Manquant (aucun champ d'horodatage) Heure actuelle du serveur
Non numérique "timestamp":"invalid" Heure actuelle du serveur

Exemple de demande

curl -X POST "https://logs.<region>.amazonaws.com/ingest/json?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/json" \ -d '[{"timestamp":1771007942000,"message":"User logged in","user_id":"u-123"},{"timestamp":1771007943000,"message":"Order placed","order_id":"o-456"}]'

Réponses

Succès (tous les événements sont acceptés) :

HTTP 200 OK {}

Succès partiel (certains événements rejetés) :

{ "partialSuccess": { "rejectedLogRecords": 5, "errorMessage": "{\"tooOldLogEventCount\": 3, \"tooNewLogEventCount\": 1, \"expiredLogEventCount\": 1}" } }

Le rejectedLogRecords champ indique le nombre total d'événements rejetés. Le errorMessage champ contient une ventilation codée en JSON par motif de rejet :

  • tooOldLogEventCount— Événements dont l'horodatage est antérieur à la période de conservation

  • tooNewLogEventCount— Événements dont l'horodatage est trop lointain dans le futur

  • expiredLogEventCount— Événements qui ont expiré pendant le traitement

Bonnes pratiques

Événements de mise en lots

Pour de meilleures performances et une meilleure efficacité :

  • Batch de plusieurs événements en une seule demande lorsque cela est possible

  • Taille de lot recommandée : 10 à 100 événements par demande

  • Taille maximale de la demande : 1 Mo

Gestion des erreurs

Implémentez une gestion appropriée des erreurs dans votre application. Codes d'état HTTP courants :

  • 200 OK— Logs correctement ingérés

  • 400 Bad Request— Format ou paramètres de demande non valides

  • 401 Unauthorized— Jeton porteur non valide ou expiré

  • 403 Forbidden— Autorisations insuffisantes

  • 404 Not Found— Le groupe de journaux ou le flux n'existe pas

  • 429 Too Many Requests— Limite de débit dépassée

  • 500 Internal Server Error— Erreur de service (nouvelle tentative avec retard exponentiel)

Limitations

  • Taille maximale de l'événement : 256 Ko par événement

  • Taille maximale de la demande : 1 Mo

  • Nombre maximum d'événements par demande : 10 000

  • Les noms des groupes de journaux doivent respecter les conventions de dénomination des CloudWatch journaux

  • L'authentification par jeton porteur doit être activée sur le groupe de journaux si l'authentification par jeton porteur est utilisée.