Comprendre les concepts des requêtes planifiées - 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.

Comprendre les concepts des requêtes planifiées

Avant de créer des requêtes planifiées, comprenez ces concepts clés qui affectent le mode d'exécution de vos requêtes et l'endroit où les résultats sont fournis.

Séparation des rôles IAM

Les requêtes planifiées nécessitent deux rôles IAM distincts : l'un pour exécuter les requêtes et l'autre pour fournir des résultats à Amazon S3 ou aux bus d' EventBridge événements Amazon. Comprendre pourquoi cette séparation existe vous aide à configurer correctement les autorisations et à tirer parti des avantages opérationnels et de sécurité qu'elle apporte.

L'architecture à deux rôles répartit les responsabilités entre l'accès aux données et leur livraison. Le rôle d'exécution des requêtes accède aux données de votre journal et exécute des requêtes, tandis que le rôle de livraison de destination écrit les résultats vers la destination que vous avez choisie. Cette séparation suit le principe du moindre privilège : chaque rôle ne dispose que des autorisations dont il a besoin pour sa fonction spécifique.

Rôle d'exécution des requêtes

Permet à CloudWatch Logs d'exécuter CloudWatch des requêtes Logs Insights en votre nom. Ce rôle a besoin d'autorisations pour accéder à vos groupes de journaux et exécuter des requêtes, mais il n'a pas besoin d'accéder aux ressources de destination. Autorisations requises :

  • logs:StartQuery

  • logs:StopQuery

  • logs:GetQueryResults

  • logs:DescribeLogGroups

  • logs:Unmasksi des données de démasquage sont requises

Pour les groupes de journaux chiffrés par KMS : kms:Decrypt et kms:DescribeKey autorisations relatives à la clé KMS utilisée pour chiffrer les groupes de journaux. Ces autorisations doivent également être ajoutées.

Exigence de relation de confiance : le rôle d'exécution des requêtes doit inclure une politique de confiance permettant au service CloudWatch Logs (logs.amazonaws.com) d'assumer ce rôle. Sans cette relation de confiance, les requêtes planifiées échoueront avec des erreurs d'autorisation.

Exemple de politique de confiance pour le rôle d'exécution de requêtes :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Exemple de politique d'autorisation pour le rôle d'exécution de requêtes :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:StartQuery", "logs:StopQuery", "logs:GetQueryResults", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
Rôle de livraison à destination

Permet à CloudWatch Logs de fournir les résultats des requêtes à la destination que vous avez choisie. Ce rôle ne nécessite des autorisations que pour le service de destination spécifique, conformément au principe du moindre privilège. Les autorisations requises varient en fonction du type de destination.

Exigence de relation de confiance : le rôle de livraison de destination doit également inclure une politique de confiance permettant au service CloudWatch Logs (logs.amazonaws.com) d'assumer ce rôle.

Exemple de politique d'autorisation pour le rôle de livraison de destination S3 :

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": "arn:aws:s3:::your-scheduled-query-results-bucket/*" } ] }

Cette séparation offre des avantages pratiques pour vos opérations. Du point de vue de la sécurité, si vous devez modifier l'endroit où les résultats sont fournis, vous ne modifiez que le rôle de livraison de destination sans modifier les autorisations d'exécution des requêtes. À des fins de conformité et d'audit, vous pouvez clairement savoir quel rôle accède aux données de journal sensibles et quel rôle écrit sur des systèmes externes. Cela permet de démontrer plus facilement que votre infrastructure d'analyse des journaux suit les meilleures pratiques en matière de sécurité.

Utilisation entre régions et entre comptes

Une requête planifiée est créée dans une région spécifique et s'exécute dans cette région. Cependant, vous pouvez interroger des groupes de journaux et fournir des résultats par région et par compte. Vous devez configurer un ou plusieurs AWS comptes en tant que comptes de surveillance et les associer à plusieurs comptes sources. Un compte de surveillance est un AWS compte central qui permet de consulter et d'interagir avec les données d'observabilité générées à partir des comptes sources. Un compte source est un AWS compte individuel qui génère des données d'observabilité pour les ressources qu'il contient. Les comptes sources partagent leurs données d'observabilité avec le compte de surveillance. Vous pouvez donc configurer des requêtes planifiées à partir du compte de surveillance à l'aide des groupes de journaux de tous les comptes associés.

Interrogation de groupes de journaux interrégionaux

Votre requête planifiée peut accéder à des groupes de journaux dans n'importe quelle région. Spécifiez les groupes de journaux en utilisant leur format ARN complet :arn:aws:logs:region:account-id:log-group:log-group-name. Le rôle d'exécution des requêtes nécessite logs:StartQuery et logs:GetQueryResults autorise les groupes de journaux dans toutes les régions cibles.

Important

Lorsque vous interrogez des groupes de journaux ou que vous fournissez des résultats entre régions, les données du journal dépassent les frontières régionales. Éléments à prendre en compte :

  • Exigences relatives à la résidence des données : assurez-vous que le transfert de données entre régions est conforme aux politiques de gouvernance des données et aux exigences réglementaires de votre organisation

  • Coûts de transfert de données - Le transfert de données entre régions entraîne des frais supplémentaires

  • Latence du réseau : les requêtes accédant à des groupes de journaux situés dans des régions éloignées peuvent connaître une latence plus élevée

Pour des performances et une rentabilité optimales, créez des requêtes planifiées dans la même région que vos principaux groupes de journaux.

Approche alternative : utilisez la centralisation CloudWatch des journaux pour répliquer les données des journaux de plusieurs comptes et régions vers un compte de surveillance central. Cela vous permet de créer des requêtes planifiées dans une seule région qui accèdent à tous vos journaux centralisés, d'éviter les requêtes interrégionales et de simplifier la gestion des autorisations IAM.

Expressions de planification et gestion des fuseaux horaires

Le calendrier que vous définissez détermine le moment et la fréquence d'exécution de votre requête. Le choix de la bonne expression de planification influe sur le moment où vous recevez les résultats et sur la quantité de données que vous interrogez. La compréhension des types d'expressions vous permet de choisir entre simplicité et précision.

Les expressions Cron fournissent un contrôle précis du calendrier, vous permettant de spécifier les heures, les jours de la semaine ou les jours du mois exacts. Utilisez des expressions cron lorsque vous devez exécuter des requêtes à des heures ouvrées spécifiques ou s'aligner sur les plannings opérationnels. Dans la console, vous pouvez également planifier des requêtes à l'aide d'options de calendrier simples.

Expressions Cron

Exécutez des requêtes à des moments précis. Format :cron(minute hour day-of-month month day-of-week year). Exemples :

  • cron(0 9 * * ? *)- Tous les jours à 9h00 UTC

  • cron(0 18 ? * MON-FRI *)- En semaine à 18h00 UTC

  • cron(0 0 1 * ? *)- Le premier jour de chaque mois à minuit UTC

  • cron(0 12 ? * SUN *)- Tous les dimanches à midi UTC

  • cron(30 8 1 1 ? *)- Le 1er janvier à 8 h 30 UTC

Toutes les requêtes planifiées sont exécutées en UTC, quel que soit votre fuseau horaire local ou l'emplacement de vos AWS ressources. Cela est particulièrement important lorsque vous planifiez des requêtes pour les heures ouvrables ou pour des analyses urgentes. Par exemple, si votre entreprise exerce ses activités à l'heure de l'Est des États-Unis et que vous souhaitez obtenir un rapport quotidien à 9 h 00 ET, vous devez tenir compte du décalage UTC (14 h UTC pendant l'heure d'été, 13 h 00 UTC dans le cas contraire). Planifiez vos expressions de planification en tenant compte de l'UTC afin de garantir que les requêtes soient exécutées aux heures prévues.

Choix d'une langue de requête

Les requêtes planifiées prennent en charge trois langages de requête différents, et votre choix influe à la fois sur la façon dont vous rédigez les requêtes et sur la facilité avec laquelle votre équipe peut les gérer. Le langage approprié dépend de vos exigences en matière d'analyse et des compétences existantes de votre équipe.

Si vous filtrez et agrégez principalement des données de journal, le langage de requête CloudWatch Logs Insights propose la syntaxe la plus simple. Pour les transformations de données complexes où vous devez remodeler ou enrichir les données en plusieurs étapes, l'approche de pipeline de PPL facilite le suivi de la logique. Lorsque vous devez effectuer des jointures ou des agrégations complexes similaires à des opérations de base de données, SQL fournit une syntaxe familière que les équipes expérimentées peuvent adopter rapidement.

CloudWatch Langage de requête Logs Insights (CWLI)

Spécialement conçu pour l'analyse des journaux avec une syntaxe intuitive. Idéal pour :

  • Analyse et filtrage des journaux basés sur le texte

  • Agrégations de séries chronologiques et statistiques

  • Équipes novices en matière d'analyse des logs

OpenSearch Langage de traitement par tuyauterie de service (PPL)

Langage de requête basé sur un pipeline doté de puissantes fonctionnalités de transformation des données. Idéal pour :

  • Transformations et enrichissement complexes des données

  • Flux de travail de traitement des données en plusieurs étapes

  • Équipes familiarisées avec le traitement basé sur les pipelines

OpenSearch Langage de requête structuré de service (SQL)

Syntaxe SQL standard pour les requêtes habituelles de type base de données. Idéal pour :

  • Jointures et agrégations complexes

  • Veille économique et production de rapports

  • Des équipes ayant une solide expérience SQL

Sélection de destinations et cas d'utilisation

L'endroit où vous envoyez les résultats de la requête détermine ce que vous pouvez en faire. Ce choix façonne l'ensemble de votre flux de travail en aval, qu'il s'agisse de créer des analyses à long terme, de déclencher des réponses automatisées, ou les deux. Comprendre les points forts de chaque type de destination vous aide à concevoir l'architecture adaptée à votre cas d'utilisation.

Les destinations Amazon S3 sont optimisées pour le stockage et le traitement par lots. Lorsque vous devez conserver les résultats de vos requêtes pendant des mois ou des années, analyser les tendances au fil du temps ou alimenter des plateformes d'analyse, Amazon S3 fournit un stockage rentable avec une rétention illimitée. EventBridge les destinations sont optimisées pour une automatisation en temps réel. Lorsque les résultats d'une requête doivent déclencher des actions immédiates, comme l'envoi d'alertes, le démarrage de flux de travail ou la mise à jour EventBridge de systèmes, les résultats sont des événements auxquels vos applications peuvent réagir instantanément. Par défaut, tous les événements de fin de requête sont automatiquement envoyés sous forme d'événements au bus d'événements par défaut, ce qui permet l'intégration avec les systèmes de traitement en aval, les fonctions Lambda ou d'autres architectures pilotées par les événements. Les résultats ne sont publiés vers les destinations que lorsque la requête est exécutée avec succès.

Destinations Amazon S3

Stockez les résultats des requêtes sous forme de fichiers JSON pour une conservation à long terme et un traitement par lots. Idéal pour :

  • Analyse historique et archivage des données

  • Intégration aux lacs de données et aux plateformes d'analyse

  • Exigences en matière de conformité et d'audit

  • Stockage rentable de grands ensembles de résultats

EventBridge destinations

Envoyez les résultats des requêtes sous forme d'événements pour un traitement et une automatisation en temps réel. Vous pouvez récupérer les résultats de la requête en utilisant le QueryID envoyé dans l'événement pendant 30 jours uniquement, car nous conservons les résultats pendant 30 jours. Idéal pour :

  • Déclenchement de réponses automatisées aux résultats des requêtes

  • Intégration aux flux de travail sans serveur et aux fonctions Lambda

  • Systèmes d'alerte et de notification en temps réel

  • Architectures et microservices pilotés par les événements

Format et structure des résultats de requête

Pour les destinations Amazon S3, les résultats des requêtes sont fournis au format JSON avec la même structure que la réponse de l' GetQueryResults API. Pour Amazon, EventBridge comprendre le format des résultats des requêtes planifiées vous permet de concevoir des flux de travail de traitement et d'intégration en aval.

Les résultats des requêtes sont fournis au format JSON avec la structure suivante :

{ "version": "0", "id": "be72061b-eca2-e068-a7e1-83e01d6fe807", "detail-type": "Scheduled Query Completed", "source": "aws.logs", "account": "123456789012", "time": "2025-11-18T11:31:48Z", "region": "us-east-1", "resources": [ "arn:aws:logs:us-east-1:123456789012:scheduled-query:477b4380-b098-474e-9c5e-e10a8cc2e6e7" ], "detail": { "queryId": "2038fd57-ab4f-4018-bb2f-61d363f4a004", "queryString": "fields @timestamp, @message, @logStream, @log\n| sort @timestamp desc\n| limit 10000", "logGroupIdentifiers": [ "/aws/lambda/my-function" ], "status": "Complete", "startTime": 1763465460, "statistics": { "recordsMatched": 0, "recordsScanned": 0, "estimatedRecordsSkipped": 0, "bytesScanned": 0, "estimatedBytesSkipped": 0, "logGroupsScanned": 1 } } }

Les principaux éléments sont les suivants :

  • statistics- Indicateurs de performance des requêtes, notamment les enregistrements mis en correspondance, les enregistrements numérisés, les octets traités et l'estimation des données ignorées

  • startTime- Quand l'exécution de la requête a commencé (horodatage Unix)

  • queryString- La requête réelle qui a été exécutée

  • queryId- ID de requête de la requête à l'aide duquel les résultats peuvent être récupérés

  • logGroupIdentifiers- Liste des groupes de journaux interrogés

  • status- État d'exécution de la requête (terminé, échec, etc.)