View a markdown version of this page

Interrogazione dei log di accesso nelle tabelle S3 - Amazon Simple Storage Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Interrogazione dei log di accesso nelle tabelle S3

Quando abiliti l'integrazione con Amazon S3 Tables, Amazon CloudWatch Logs invia i log di accesso al server in formato Apache Iceberg al bucket di tabelle gestito. aws-cloudwatch Poiché i dati sono in formato Iceberg, puoi interrogarli con qualsiasi strumento che supporti Apache Iceberg, tra cui:

  • Amazon Athena: esegui query SQL direttamente dalla console Athena utilizzando il catalogo S3 Tables.

  • Amazon SageMaker Unified Studio: utilizza l'editor SQL integrato per interrogare i dati di log insieme ad altri carichi di lavoro di analisi.

  • Amazon Redshift: interroga le tabelle Iceberg tramite Redshift Spectrum o integrazione diretta.

  • Apache Spark su Amazon EMR: usa Spark SQL o l' DataFrame API con il connettore Iceberg.

  • Open-source strumenti: qualsiasi strumento che supporti il catalogo REST di Apache Iceberg, come Trino, DuckDB o. PyIceberg

Nota

Per interrogare i log in modo interattivo in CloudWatch Logs Insights (senza SQL), vedi. Interrogazione dei log con Logs Insights CloudWatch

Prerequisiti

Prima di poter interrogare i log di accesso in S3 Tables, devi completare quanto segue:

  1. Abilita l'integrazione con S3 Tables. Per informazioni, consulta Abilitazione dell'integrazione con S3 Tables (opzionale).

  2. Abilita l'integrazione di S3 Tables con i servizi di analisi. Nella console Amazon S3, accedi a Table bucket e scegli Abilita integrazione. Questo crea il catalogo s3tablescatalog federato in Data Catalog e rende le tabelle visibili ai servizi di analisi. Per impostazione predefinita, l'accesso è controllato tramite le autorizzazioni IAM. Facoltativamente, puoi utilizzarlo AWS Lake Formation per un controllo granulare degli accessi. Per ulteriori informazioni, consulta Integrazione delle tabelle S3 con i servizi di analisi. AWS

  3. Attendi che i dati vengano compilati. I dati vengono in genere visualizzati entro un'ora dalla prima consegna a CloudWatch Logs.

Connessione ad Amazon Athena

  1. Apri la console Athena all'indirizzo https://console.aws.amazon.com/athena/.

  2. Nell'editor di query, seleziona il catalogo Amazon S3 Tables dal menu a discesa delle origini dati.

  3. Le tabelle di log vengono visualizzate nell'elenco del database sotto lo spazio dei logs nomi.

Il nome della tabella per i log di accesso al server è. amazon_s3__server_access Il riferimento completo alla tabella è:

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

Analisi del traffico

Esempio Volume delle richieste nel tempo
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;
Esempio Combinazione di richieste per tipo di operazione
SELECT operation, COUNT(*) AS cnt FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY operation ORDER BY cnt DESC;
Esempio Traffico per secchio
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;

Risoluzione degli errori

Esempio Ripartizione del tasso di errore
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;
Esempio 403 Richieste di accesso negato
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;
Esempio 404 Richieste non trovate
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;
Esempio 503 SlowDown (limitazione) eventi
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;

Modelli di accesso

Esempio Traffico per IP di origine
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;
Esempio Operazioni per richiedente
SELECT requester, operation, COUNT(*) AS requests FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY requester, operation ORDER BY requests DESC;
Esempio Chiavi più utilizzate
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;

Analisi della latenza

Esempio Latenza per tipo di operazione
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;
Esempio Tasti più lenti per latenza 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;
Esempio Latenza nel tempo
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;

Attribuzione dei costi

Esempio Trasferimento dei dati per operazione
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;
Esempio Oggetti più grandi serviti
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;

Analisi della sicurezza

Esempio IP con alti tassi di errore
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;
Esempio Tentativi di accesso falliti per chiave
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;
Esempio Distribuzione della versione TLS
SELECT tls_version, COUNT(*) AS cnt FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY tls_version ORDER BY cnt DESC;

Utilizzo di agenti AI per interrogare i log di accesso ai server Amazon S3

MCP-compatible Gli agenti AI possono scoprire le tabelle S3 che contengono i log di accesso ai server Amazon S3, generare query SQL e analizzare i risultati. Poiché i log di accesso al server Amazon S3 vengono esportati come tabelle Iceberg nel bucket di tabelle, gli agenti possono interrogarli tramite lo stesso catalogo S3 aws-cloudwatch Tables che usi con Amazon Athena, Amazon EMR, Amazon Redshift o qualsiasi altro strumento. Iceberg-compatible

L'Agent Toolkit for AWS fornisce competenze che forniscono agli agenti procedure convalidate per lavorare con i dati. AWS L'abilità Querying CloudWatch Logs system tables esegue query SQL sui dati di CloudWatch log esportati in S3 Tables, inclusi i log di accesso al server Amazon S3 nel bucket di tabelle. aws-cloudwatch Per utilizzarla, scarica la skill dal repository e aggiungila alla directory delle competenze del tuo agente. GitHub

Ad esempio, puoi chiedere a un agente di mostrare i primi 10 indirizzi IP di origine in base al numero di richieste nei log di accesso al server S3 nelle ultime 24 ore. L'agente utilizza l'abilità per individuare la tabella dei log degli accessi ed eseguire la query in Athena.