View a markdown version of this page

Abfragen von Zugriffsprotokollen in S3-Tabellen - Amazon Simple Storage Service

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 Analytics-Workloads abzufragen.

  • Amazon Redshift — Fragen Sie Iceberg-Tabellen über Redshift Spectrum oder eine direkte Integration ab.

  • Apache Spark auf Amazon EMR — Verwenden Sie Spark SQL oder die DataFrame API mit dem Iceberg-Connector.

  • Open-source Tools — Jedes Tool, das den Apache Iceberg REST-Katalog unterstützt, wie Trino, DuckDB oder. PyIceberg

Anmerkung

Informationen zum interaktiven Abfragen von Protokollen in CloudWatch Logs Insights (ohne SQL) finden Sie unter. Abfragen von Protokollen mit CloudWatch Logs Insights

Voraussetzungen

Bevor Sie Zugriffsprotokolle in S3-Tabellen abfragen können, müssen Sie die folgenden Schritte ausführen:

  1. Aktivieren Sie die S3-Tabelles-Integration. Siehe Aktivierung der S3-Tabelles-Integration (optional).

  2. Aktivieren Sie die Integration von S3 Tables mit Analysediensten. Navigieren Sie in der Amazon S3-Konsole zu Table-Buckets und wählen Sie Integration aktivieren aus. Dadurch wird der s3tablescatalog Verbundkatalog im Datenkatalog erstellt und Ihre Tabellen werden für Analysedienste sichtbar. Standardmäßig wird der Zugriff über IAM-Berechtigungen gesteuert. Sie können es optional AWS Lake Formation für eine feinkörnige Zugriffskontrolle verwenden. Weitere Informationen finden Sie unter Integrieren von S3-Tabellen in AWS Analysedienste.

  3. Warten Sie, bis die Daten aufgefüllt sind. Daten werden in der Regel innerhalb einer Stunde nach der ersten Übermittlung an CloudWatch Logs angezeigt.

Amazon Athena wird verbunden

  1. Öffnen Sie die Athena-Konsole unter https://console.aws.amazon.com/athena/.

  2. Wählen Sie im Abfrage-Editor den Amazon S3-Tabellen-Katalog aus der Dropdownliste für die Datenquelle aus.

  3. Ihre Protokolltabellen werden in der Datenbankliste unter dem logs Namespace 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 Anforderungsvolumen im Zeitverlauf
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: Zugriff verweigert
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 404 Anfragen wurden 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 (Drosselung) 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 durch den 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 Operationstyp
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 Schlüssel 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 durch 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 Die größten 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 AI-Agenten zur Abfrage von Amazon S3-Serverzugriffsprotokollen

MCP-compatible KI-Agenten können die S3-Tabellen ermitteln, die Ihre Amazon S3-Serverzugriffsprotokolle enthalten, SQL-Abfragen generieren und die Ergebnisse analysieren. Da Ihre Amazon S3-Serverzugriffsprotokolle als Iceberg-Tabellen in den aws-cloudwatch Tabellen-Bucket exportiert werden, können Agenten sie über denselben S3-Tabellen-Katalog abfragen, den Sie mit Amazon Athena, Amazon EMR, Amazon Redshift oder einem anderen Tool verwenden. Iceberg-compatible

Das Agent Toolkit für AWS bietet Fähigkeiten, die Agenten validierte Verfahren für die Arbeit mit Daten vermitteln. AWS Der Skill Querying CloudWatch Logs-Systemtabellen führt SQL-Abfragen für CloudWatch Protokolldaten aus, die in S3-Tabellen exportiert wurden, einschließlich Ihrer Amazon S3-Serverzugriffsprotokolle im aws-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, in Ihren S3-Serverzugriffsprotokollen der letzten 24 Stunden die 10 wichtigsten Quell-IP-Adressen nach Anzahl der Anfragen anzuzeigen. Der Agent verwendet den Skill, um die Tabelle mit den Zugriffsprotokollen zu finden und die Abfrage in Athena auszuführen.