Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Abfragen von Zugriffsprotokollen in S3-Tabellen
Wenn Sie die Amazon S3 Tables-Integration aktivieren, übermittelt Amazon CloudWatch Logs Ihre Serverzugriffsprotokolle im Apache Iceberg-Format an den aws-cloudwatch verwalteten Tabellen-Bucket. Da die Daten im Iceberg-Format vorliegen, können Sie sie mit jedem Tool abfragen, das Apache Iceberg unterstützt, einschließlich:
-
Amazon Athena — Führen Sie mithilfe des S3-Tables-Katalogs SQL-Abfragen direkt von der Athena-Konsole aus.
-
Amazon SageMaker Unified Studio — Verwenden Sie den integrierten SQL-Editor, um Ihre Protokolldaten zusammen mit anderen Analyse-Workloads abzufragen.
-
Amazon Redshift — Fragen Sie Iceberg-Tabellen über Redshift Spectrum oder direkte Integration ab.
-
Apache Spark auf Amazon EMR — Verwenden Sie Spark SQL oder die DataFrame API mit dem Iceberg-Konnektor.
-
Open-source Tools — Jedes Tool, das den Apache Iceberg REST-Katalog unterstützt, wie Trino, DuckDB oder. PyIceberg
Anmerkung
Informationen zum interaktiven Abfragen von Logs in CloudWatch Logs Insights (ohne SQL) finden Sie unter. Logs mit CloudWatch Logs Insights abfragen
Voraussetzungen
Bevor Sie Zugriffsprotokolle in S3-Tabellen abfragen können, müssen Sie die folgenden Schritte ausführen:
-
Aktivieren Sie die Integration von S3 Tables. Siehe Aktivierung der Integration von S3-Tabellen (optional).
-
Aktivieren Sie die Integration von S3-Tabellen mit Analysediensten. Navigieren Sie in der Amazon S3 S3-Konsole zu Table-Buckets und wählen Sie Integration aktivieren aus. Dadurch wird der
s3tablescatalogVerbundkatalog im Datenkatalog erstellt und Ihre Tabellen für Analysedienste sichtbar gemacht. Standardmäßig wird der Zugriff über IAM-Berechtigungen gesteuert. Sie können ihn optional AWS Lake Formation für eine differenzierte Zugriffskontrolle verwenden. Weitere Informationen finden Sie unter Integration von S3-Tabellen mit AWS Analysediensten. -
Warten Sie, bis die Daten gefüllt sind. Daten werden in der Regel innerhalb einer Stunde nach der ersten Übermittlung an CloudWatch Logs angezeigt.
Amazon Athena verbinden
-
Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/
. -
Wählen Sie im Abfrage-Editor den Amazon S3 Tables-Katalog aus der Datenquellen-Dropdownliste aus.
-
Ihre Protokolltabellen werden in der Datenbankliste unter dem
logsNamespace angezeigt.
Der Tabellenname für Serverzugriffsprotokolle lautetamazon_s3__server_access. Die vollqualifizierte Tabellenreferenz lautet:
"s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access"
Analyse des Verkehrs
Beispiel Volumen der Anfragen im Laufe der Zeit
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;
Beispiel Mix nach Operationstyp anfragen
SELECT operation, COUNT(*) AS cnt FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY operation ORDER BY cnt DESC;
Beispiel Verkehr nach Bucket
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;
Behebung von Fehlern
Beispiel Aufschlüsselung der Fehlerrate
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;
Beispiel 403 Anfragen mit verweigertem Zugriff
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;
Beispiel Anfragen vom Typ 404 Nicht gefunden
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;
Beispiel 503 SlowDown (Drosselungs-) Ereignisse
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;
Zugriffsmuster
Beispiel Verkehr nach Quell-IP
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;
Beispiel Operationen nach Anforderer
SELECT requester, operation, COUNT(*) AS requests FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY requester, operation ORDER BY requests DESC;
Beispiel Am häufigsten aufgerufene Schlüssel
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;
Latenzanalyse
Beispiel Latenz nach Vorgangstyp
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;
Beispiel Langsamste Tasten nach p95-Latenz
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;
Beispiel Latenz im Laufe der Zeit
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;
Kostenzuweisung
Beispiel Datenübertragung nach Operation
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;
Beispiel Größte Objekte, die bedient werden
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;
Sicherheitsanalyse
Beispiel IPs mit hohen Fehlerraten
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;
Beispiel Fehlgeschlagene Zugriffsversuche per Schlüssel
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;
Beispiel Verteilung der TLS-Version
SELECT tls_version, COUNT(*) AS cnt FROM "s3tablescatalog/aws-cloudwatch"."logs"."amazon_s3__server_access" GROUP BY tls_version ORDER BY cnt DESC;
Verwendung von KI-Agenten zur Abfrage von Amazon S3 S3-Serverzugriffsprotokollen
MCP-compatible KI-Agenten können die S3-Tabellen ermitteln, die Ihre Amazon S3 S3-Serverzugriffsprotokolle enthalten, SQL-Abfragen generieren und die Ergebnisse analysieren. Da Ihre Amazon S3 S3-Serverzugriffsprotokolle als Iceberg-Tabellen im aws-cloudwatch Tabellen-Bucket exportiert werden, können Agenten sie über denselben S3 Tables-Katalog abfragen, den Sie mit Amazon Athena, Amazon EMR, Amazon Redshift oder einem anderen Tool verwenden. Iceberg-compatible
Das Agenten-Toolkit für AWSaws-cloudwatch Tabellen-Bucket. Um ihn zu verwenden, laden Sie den Skill aus dem Repository herunter GitHub und fügen Sie ihn dem Skills-Verzeichnis Ihres Agenten hinzu.
Sie können beispielsweise einen Agenten bitten, die 10 wichtigsten Quell-IP-Adressen nach Anzahl der Anfragen in Ihren S3-Serverzugriffsprotokollen der letzten 24 Stunden anzuzeigen. Der Agent verwendet den Skill, um die Zugriffs-Log-Tabelle zu finden und die Abfrage in Athena auszuführen.