Athena sama nie przechowuje logów. Zapytuje pliki logów w S3, takie jak CloudTrail, VPC Flow Logs, logi z load balancerów i WAF, poprzez definiowane przez Ciebie tabele. Normalne wyniki zapytań są zapisywane jako CSV w Twoim koszyku wyników. Aby uzyskać JSON, otocz zapytanie w UNLOAD … WITH (format = 'JSON’): Athena zapisuje wiersze JSON do prefiksu S3, a Ty pobierasz je.
Wiele zespołów AWS trzyma miesiące logów w S3 i zapytuje je za pomocą Athena zamiast wysyłać wszystko do SIEM. Prime Core ma ponad 24 000 unikalnych reguł wykrywania, przypisanych do 676 technik MITRE ATT&CK. Poniżej jest, jak uzyskać wycinek, zdezynfekować go i zbadać za darmo w LogTotal.
Zanim zaczniesz
Uprawnienia. Musisz uruchomić zapytania Athena (athena:StartQueryExecution i pokrewne), przeczytać definicje tabel w Glue, przeczytać źródłowy koszyk i zapisać do koszyka eksportu. Dodaj kms:Decrypt, jeśli logi są zaszyfrowane z użyciem KMS.
Znaj tabelę i jej partycje. Tabela CloudTrail jest zwykle dzielona partycjami według regionu i daty, albo z użyciem projekcji partycji, albo z partycjami, które dodałeś. Athena pobiera opłaty za dane zeskanowane, więc filtruj na partycjach za każdym razem. Zapytanie bez nich może zeskanować lata logów.
Grupa robocza. Athena uruchamia zapytania w grupie roboczej z lokalizacją wyników. UNLOAD zapisuje do własnego celu, ale grupa robocza nadal musi być skonfigurowana.
Eksportuj z UNLOAD
UNLOAD (
SELECT *
Z cloudtrail_logs
GDZIE region = 'eu-west-1'
I day = '2026/10/19'
I useridentity.arn LIKE '%podejrzany_użytkownik%'
)
DO 's3://my-athena-exports/ct-1019/'
Z (format = 'JSON', kompresja = 'NONE')
Dostosuj kolumny partycji (region, day) do definicji tabeli. Prefiks celu musi być pusty.
Z linii komend:
QID=$(aws athena start-query-execution –work-group primary
–query-string „$(cat unload.sql)”
–query 'QueryExecutionId’ –output text)
# poczekaj na SUCCEEDED
do [ „$(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 obsługuje zarówno skompresowane, jak i nieskompresowane wyniki, w przypadku gdy kompresja została pozostawiona na domyślną. Jeśli zapytanie zakończy się niepowodzeniem, pętla oczekiwania nigdy się nie kończy. Sprawdź również pod kątem FAILED, jeśli regularnie skryptujesz to.
Czemu nie get-query-results? Działa, ale zwraca wiersze jako listy ciągów, 1 000 na stronę, które następnie musisz złożyć z powrotem w obiekty. UNLOAD daje Ci czysty JSON w jednym kroku.
Prześlij, oczyść i zrecenzuj w LogTotal
- Prześlij. Otwórz logtotal.com i wrzuć plik .jsonl.
- Zdezynfekuj.
- Zrecenzuj.
Kiedy coś idzie nie tak
| Symptom | Prawdopodobna przyczyna | Fix |
|---|---|---|
| Zapytanie skanuje terabajty | Brak filtra partycji | Filtruj na kolumnach partycji |
| Błąd dotyczący lokalizacji wyników | Prefiks celu nie jest pusty | Użyj nowego prefiksu |
| Odmowa dostępu | Brakująca zgoda do S3, Glue lub KMS | Sprawdź każdy; KMS jest zazwyczaj podejrzany |
| Zero wierszy | Partycje niezaładowane lub zły format partycji | Sprawdź projekcję partycji lub uruchom MSCK REPAIR TABLE |
| Pliki wynikowe nie otwierają się jako tekst | Kompresja GZIP | Użyj zcat, lub ustaw kompresja = 'NONE’ |
FAQ
Czy to to samo co Amazon Security Lake?
Security Lake również używa Athena, ale z własnymi tabelami OCSF i uprawnieniami Lake Formation.
Czy mogę zamiast tego eksportować surowe pliki CloudTrail?
Tak. Jeśli potrzebujesz tylko całych dni, kopiowanie plików z S3 jest prostsze. Athena przydaje się, gdy potrzebujesz filtrować.