Athena speichert keine Protokolle selbst. Es fragt Protokolldateien in S3 ab, wie CloudTrail-, VPC-Flow-Logs, Lastausgleichs- und WAF-Protokolle, durch Tabellen, die Sie definieren. Normale Abfrageergebnisse werden als CSV in Ihrem Ergebniseimer gespeichert. Um stattdessen JSON zu erhalten, umschließen Sie die Abfrage in UNLOAD … WITH (format = ‚JSON‘): Athena schreibt zeilenweise getrenntes JSON in ein S3-Präfix und Sie laden es herunter.
Viele AWS-Teams speichern monatelang Protokolle in S3 und fragen diese mit Athena ab, anstatt alles an ein SIEM zu senden. Prime Core hat mehr als 24.000 einzigartige Erkennungsregeln, die auf 676 MITRE ATT&CK-Techniken abgebildet sind. Unten sehen Sie, wie man ein Stück herausnimmt, es bereinigt und kostenlos in LogTotal untersucht.
Bevor Sie beginnen
Berechtigungen. Sie müssen Athena-Abfragen ausführen (athena:StartQueryExecution und verwandte), die Tabellendefinitionen in Glue lesen, den Quelleneimer lesen und in einen Export-Eimer schreiben. Fügen Sie kms:Decrypt hinzu, wenn die Protokolle mit KMS verschlüsselt sind.
Kennen Sie die Tabelle und ihre Partitionen. Eine CloudTrail-Tabelle ist normalerweise nach Region und Datum partitioniert, entweder mit Partition Projection oder mit selbst hinzugefügten Partitionen. Athena rechnet nach gescannten Daten ab, daher bei jeder Abfrage nach Partitionen filtern. Eine Abfrage ohne kann Jahre von Protokollen scannen.
Eine Arbeitsgruppe. Athena führt Abfragen in einer Arbeitsgruppe mit einem Ergebnisspeicherort aus. UNLOAD schreibt auf ein eigenes Ziel, aber die Arbeitsgruppe muss dennoch eingerichtet werden.
Exportieren mit UNLOAD
UNLOAD (
SELECT *
FROM cloudtrail_logs
WHERE region = 'eu-west-1'
AND day = '2026/10/19'
AND useridentity.arn LIKE '%suspicious-user%'
)
TO 's3://my-athena-exports/ct-1019/'
WITH (format = 'JSON', compression = 'NONE')
Passen Sie die Partitionsspalten (region, day) an Ihre Tabellendefinition an. Das Zielpräfix muss leer sein.
Von der Kommandozeile:
QID=$(aws athena start-query-execution –work-group primary
–query-string „$(cat unload.sql)“
–query ‚QueryExecutionId‘ –output text)
# warten bis ERFOLGREICH
bis [ „$(aws athena get-query-execution –query-execution-id „$QID“
–query ‚QueryExecution.Status.State‘ –output text)“ = „SUCCEEDED“ ]; do sleep 5; done
aws s3 cp s3://my-athena-exports/ct-1019/ ./ct-1019/ –recursive
zcat -f ./ct-1019/* > ct_1019.jsonl
zcat -f verarbeitet sowohl komprimierte als auch unkomprimierte Ausgaben, falls die Kompression auf dem Standard gelassen wurde. Wenn die Abfrage fehlschlägt, endet die Warte-Schleife nie. Überprüfen Sie auch auf FEHLGESCHLAGEN, wenn Sie das regelmäßig skripten.
Warum nicht get-query-results? Es funktioniert, aber es gibt Zeilen als Listen von Zeichenfolgen zurück, 1.000 pro Seite, die Sie dann wieder in Objekte zusammensetzen müssen. UNLOAD liefert Ihnen sauberes JSON in einem Schritt.
Hochladen, bereinigen und in LogTotal überprüfen
- Hochladen. Öffnen logtotal.com und die .jsonl-Datei einfügen.
- Bereinigen.
- Überprüfen.
Wenn es schiefgeht
| Symptom | Wahrscheinliche Ursache | Fix |
|---|---|---|
| Abfrage scannt Terabytes | Kein Partitionsfilter | Nach den Partitionsspalten filtern |
| Fehler über den Ergebnisspeicherort | Zielpräfix ist nicht leer | Ein neues Präfix verwenden |
| Zugriff verweigert | Fehlende S3-, Glue- oder KMS-Berechtigungen | Jeder prüfen; KMS ist der übliche Verdächtige |
| Null Zeilen | Partitionen nicht geladen oder das falsche Partitionsformat | Partition Projection überprüfen oder MSCK REPAIR TABLE ausführen |
| Ausgabedateien lassen sich nicht als Text öffnen | GZIP-Kompression | Verwenden Sie zcat oder setzen Sie die Kompression auf ‚NONE‘ |
FAQ
Ist das dasselbe wie Amazon Security Lake?
Security Lake verwendet auch Athena, jedoch mit eigenen OCSF-Tabellen und Lake Formation-Berechtigungen.
Kann ich stattdessen rohe CloudTrail-Dateien exportieren?
Ja. Wenn Sie nur ganze Tage benötigen, ist das Kopieren der Dateien von S3 einfacher. Athena zeigt seine Stärken, wenn Sie filtern müssen.