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.
Interroger les journaux d'accès dans les tables S3
Lorsque vous activez l'intégration d'Amazon S3 Tables, Amazon CloudWatch Logs transmet vos journaux d'accès au serveur au format Apache Iceberg au compartiment de tables aws-cloudwatch géré. Les données étant au format Iceberg, vous pouvez les interroger à l'aide de n'importe quel outil prenant en charge Apache Iceberg, notamment :
-
Amazon Athena — Exécutez des requêtes SQL directement depuis la console Athena à l'aide du catalogue S3 Tables.
-
Amazon SageMaker Unified Studio : utilisez l'éditeur SQL intégré pour interroger les données de vos journaux en même temps que d'autres charges de travail analytiques.
-
Amazon Redshift : interrogez les tables Iceberg via Redshift Spectrum ou une intégration directe.
-
Apache Spark sur Amazon EMR : utilisez Spark SQL ou l' DataFrame API avec le connecteur Iceberg.
-
Open-source outils : tout outil prenant en charge le catalogue Apache Iceberg REST, tel que Trino, DuckDB ou. PyIceberg
Note
Pour interroger les journaux de manière interactive dans CloudWatch Logs Insights (sans SQL), consultez. Interroger les journaux avec CloudWatch Logs Insights
Conditions préalables
Avant de pouvoir interroger les journaux d'accès dans les tables S3, vous devez effectuer les opérations suivantes :
-
Activez l'intégration des tables S3. Consultez Activation de l'intégration des tables S3 (facultatif).
-
Activez l'intégration des tables S3 aux services d'analyse. Dans la console Amazon S3, accédez à Table buckets et choisissez Activer l'intégration. Cela crée le catalogue
s3tablescatalogfédéré dans Data Catalog et rend vos tables visibles pour les services d'analyse. Par défaut, l'accès est contrôlé par des autorisations IAM. Vous pouvez éventuellement l'utiliser AWS Lake Formation pour un contrôle d'accès précis. Pour plus d'informations, consultez la section Intégration de tables S3 à des services AWS d'analyse. -
Attendez que les données soient renseignées. Les données apparaissent généralement dans l'heure qui suit la première transmission à CloudWatch Logs.
Connecter Amazon Athena
-
Ouvrez la console à l'adresse https://console.aws.amazon.com/athena/
. -
Dans l'éditeur de requêtes, sélectionnez le catalogue Amazon S3 Tables dans la liste déroulante des sources de données.
-
Vos tables de journalisation apparaissent dans la liste de la base de données sous l'
logsespace de noms.
Le nom de la table pour les journaux d'accès au serveur estamazon_s3__server_access. La référence complète du tableau est la suivante :
"s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
Analyse du trafic
Exemple Volume des demandes au fil du temps
SELECT date_trunc('minute', request_time) AS interval, COUNT(*) AS requests FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY date_trunc('minute', request_time) ORDER BY interval ASC;
Exemple Combinaison des demandes par type d'opération
SELECT operation, COUNT(*) AS cnt FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY operation ORDER BY cnt DESC;
Exemple Trafic par tranche
SELECT bucket_arn, COUNT(*) AS requests, SUM(bytes_sent_size) AS bytes_out FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY bucket_arn ORDER BY requests DESC;
Résolution des erreurs
Exemple Répartition du taux d'erreur
SELECT http_status, error_code, operation, COUNT(*) AS error_count FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE http_status >= 400 GROUP BY http_status, error_code, operation ORDER BY error_count DESC;
Exemple 403 Demandes d'accès refusées
SELECT key_name, remote_ip, requester, COUNT(*) AS denied_count FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE http_status = 403 GROUP BY key_name, remote_ip, requester ORDER BY denied_count DESC;
Exemple 404 requêtes introuvables
SELECT key_name, error_code, remote_ip, COUNT(*) AS miss_count FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE http_status = 404 GROUP BY key_name, error_code, remote_ip ORDER BY miss_count DESC;
Exemple 503 SlowDown événements (étranglement)
SELECT key_name, remote_ip, COUNT(*) AS throttle_count FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE http_status = 503 GROUP BY key_name, remote_ip ORDER BY throttle_count DESC;
Modèles d’accès
Exemple Trafic par adresse IP source
SELECT remote_ip, COUNT(*) AS total_requests, SUM(CASE WHEN http_status >= 400 THEN 1 ELSE 0 END) AS errors, SUM(bytes_sent_size) AS bytes_transferred FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY remote_ip ORDER BY total_requests DESC;
Exemple Opérations par demandeur
SELECT requester, operation, COUNT(*) AS requests FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY requester, operation ORDER BY requests DESC;
Exemple Clés les plus consultées
SELECT key_name, COUNT(*) AS access_count, SUM(bytes_sent_size) AS bytes_out FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT') GROUP BY key_name ORDER BY access_count DESC LIMIT 10;
Analyse de latence
Exemple Latence par type d'opération
SELECT operation, AVG(total_duration) AS avg_ms, APPROX_PERCENTILE(total_duration, 0.5) AS p50_ms, APPROX_PERCENTILE(total_duration, 0.95) AS p95_ms, MAX(total_duration) AS max_ms, COUNT(*) AS requests FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT') GROUP BY operation;
Exemple Clés les plus lentes en termes de latence de p95
SELECT key_name, AVG(total_duration) AS avg_ms, APPROX_PERCENTILE(total_duration, 0.95) AS p95_ms, COUNT(*) AS requests FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE operation = 'REST.GET.OBJECT' GROUP BY key_name ORDER BY p95_ms DESC LIMIT 10;
Exemple Latence dans le temps
SELECT date_trunc('minute', request_time) AS interval, AVG(total_duration) AS avg_ms, APPROX_PERCENTILE(total_duration, 0.95) AS p95_ms FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT') GROUP BY date_trunc('minute', request_time) ORDER BY interval ASC;
Attribution des coûts
Exemple Transfert de données par opération
SELECT operation, SUM(bytes_sent_size) AS total_bytes_out, SUM(object_size) AS total_object_bytes, COUNT(*) AS request_count FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE operation IN ('REST.GET.OBJECT', 'REST.PUT.OBJECT', 'REST.DELETE.OBJECT') GROUP BY operation ORDER BY total_bytes_out DESC;
Exemple Les plus gros objets servis
SELECT key_name, MAX(object_size) AS max_size, AVG(object_size) AS avg_size, COUNT(*) AS reads FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE operation = 'REST.GET.OBJECT' AND bytes_sent_size > 0 GROUP BY key_name ORDER BY max_size DESC LIMIT 10;
Analyse de sécurité
Exemple IP présentant des taux d'erreur élevés
SELECT remote_ip, COUNT(*) AS total, SUM(CASE WHEN http_status >= 400 THEN 1 ELSE 0 END) AS errors FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY remote_ip HAVING SUM(CASE WHEN http_status >= 400 THEN 1 ELSE 0 END) > 10 ORDER BY errors DESC;
Exemple Tentatives d'accès échouées par clé
SELECT remote_ip, key_name, operation, http_status, COUNT(*) AS attempts FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" WHERE http_status >= 400 GROUP BY remote_ip, key_name, operation, http_status ORDER BY attempts DESC LIMIT 20;
Exemple Distribution des versions TLS
SELECT tls_version, COUNT(*) AS cnt FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY tls_version ORDER BY cnt DESC;
Utilisation d'agents IA pour interroger les journaux d'accès au serveur Amazon S3
MCP-compatible Les agents IA peuvent découvrir les tables S3 qui contiennent les journaux d'accès à vos serveurs Amazon S3, générer des requêtes SQL et analyser les résultats. Étant donné que vos journaux d'accès au serveur Amazon S3 sont exportés sous forme de tables Iceberg dans le compartiment de aws-cloudwatch tables, les agents peuvent les interroger via le même catalogue de tables S3 que celui que vous utilisez avec Amazon Athena, Amazon EMR, Amazon Redshift ou tout autre outil. Iceberg-compatible
La boîte à outils pour les agents AWSaws-cloudwatch tables. Pour l'utiliser, téléchargez la compétence depuis le référentiel GitHub et ajoutez-la au répertoire des compétences de votre agent.
Par exemple, vous pouvez demander à un agent d'afficher les 10 principales adresses IP sources par nombre de requêtes dans vos journaux d'accès au serveur S3 au cours des dernières 24 heures. L'agent utilise cette compétence pour localiser la table du journal des accès et exécuter la requête dans Athena.