

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.

# Interrogation des journaux d'accès dans les tables S3
<a name="sal-cw-querying-s3tables"></a>

Lorsque vous activez l'intégration des tables Amazon S3, Amazon CloudWatch Logs fournit les journaux d'accès au serveur au format Apache Iceberg au compartiment de table `aws-cloudwatch` géré. Les données étant au format Iceberg, vous pouvez les interroger à l'aide de n'importe quel outil compatible avec 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 parallèlement à d'autres charges de travail d'analyse.
+ **Amazon Redshift** — Interrogez les tables Iceberg par le biais de Redshift Spectrum ou d'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 compatible avec le catalogue REST d'Apache Iceberg, tel que Trino, DuckDB ou. PyIceberg

**Note**  
Pour interroger les journaux de manière interactive dans CloudWatch Logs Insights (sans SQL), consultez. [Interrogation des journaux avec CloudWatch Logs Insights](sal-cw-querying-insights.md)

## Conditions préalables
<a name="sal-cw-s3tables-prerequisites"></a>

Avant de pouvoir interroger les journaux d'accès dans les tables S3, vous devez effectuer les opérations suivantes :

1. **Activez l'intégration des tables S3.** Consultez [Activation de l'intégration des tables S3 (facultatif)](sal-cw-enabling.md#sal-cw-tables-integration).

1. **Activez l'intégration de S3 Tables aux services d'analyse.** Dans la console Amazon S3, accédez à **Table buckets** et choisissez **Enable integration**. Cela crée le catalogue `s3tablescatalog` fé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 le biais 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 des tables S3 aux services AWS d'analyse](https://docs.aws.amazon.com/AmazonS3/latest/userguide/s3-tables-integrating-aws.html).

1. **Attendez que les données soient renseignées.** Les données apparaissent généralement dans l'heure qui suit leur première livraison à CloudWatch Logs.

## Connexion à Amazon Athena
<a name="sal-cw-s3tables-athena-setup"></a>

1. Ouvrez la console à l'adresse [https://console.aws.amazon.com/athena/](https://console.aws.amazon.com/athena/).

1. Dans l'éditeur de requêtes, sélectionnez le catalogue **Amazon S3 Tables** dans le menu déroulant des sources de données.

1. Vos tables de journal apparaissent dans la liste des bases de données sous l'espace de `logs` noms.

Le nom de table pour les journaux d'accès au serveur est`amazon_s3__server_access`. La référence de table entièrement qualifiée est :

```
"s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
```

## Analyse du trafic
<a name="sal-cw-s3tables-traffic"></a>

**Example 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;
```

**Example Mixage 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;
```

**Example Trafic par compartiment**  

```
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 problèmes d'erreur
<a name="sal-cw-s3tables-errors"></a>

**Example 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;
```

**Example 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;
```

**Example 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;
```

**Example 503 événements SlowDown (d'é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
<a name="sal-cw-s3tables-access"></a>

**Example 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;
```

**Example Opérations par le demandeur**  

```
SELECT requester, operation, COUNT(*) AS requests
FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
GROUP BY requester, operation
ORDER BY requests DESC;
```

**Example 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
<a name="sal-cw-s3tables-latency"></a>

**Example 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;
```

**Example Touches les plus lentes grâce à la latence 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;
```

**Example 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
<a name="sal-cw-s3tables-cost"></a>

**Example 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;
```

**Example 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é
<a name="sal-cw-s3tables-security"></a>

**Example IP avec 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;
```

**Example Tentatives d'accès par clé infructueuses**  

```
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;
```

**Example 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 d'intelligence artificielle pour interroger les journaux d'accès au serveur Amazon S3
<a name="sal-cw-s3tables-ai-agents"></a>

MCP-compatible Les agents d'intelligence artificielle peuvent découvrir les tables S3 qui contiennent les journaux d'accès à votre serveur Amazon S3, générer des requêtes SQL et analyser les résultats. Les journaux d'accès à votre serveur Amazon S3 étant 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 

Le [kit d'outils pour les](https://github.com/aws/agent-toolkit-for-aws) agents AWS fournit des compétences qui fournissent aux agents des procédures validées pour travailler avec AWS les données. La compétence [Querying CloudWatch Logs System Tables](https://github.com/aws/agent-toolkit-for-aws/tree/main/skills/specialized-skills/system-table-skills/querying-aws-cloudwatch) exécute des requêtes SQL sur CloudWatch les données des journaux exportées vers S3 Tables, y compris les journaux d'accès à votre serveur Amazon S3 dans le compartiment de `aws-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 demandes dans les journaux d'accès à votre serveur S3 au cours des dernières 24 heures. L'agent utilise cette compétence pour localiser la table des journaux d'accès et exécuter la requête dans Athena.