Compliance Reporting with Athena
Aggregate and schedule reports from immutable audit logs stored in the S3 bucket audit-demo-logs.

Amazon Athena
- Prepare log data on S3
- Logs have been written to the
audit-demo-logs bucket in the logs/ folder (see step 4).
- Ensure bucket versioning and Object Lock are still active, so data cannot be deleted/overwritten.


- Create AWS Glue Crawler

- AWS Console → Glue → Crawlers → Add crawler.
- Name:
AuditLogsS3Crawler.
- Data store: select S3, enter path s3://audit-demo-logs/logs/.
- IAM role: select (or create)
GlueCrawlerRole with permissions:
JSON:
- {
-
"Effect": "Allow",
-
"Action": ["s3:GetObject","s3:ListBucket"],
-
"Resource": ["arn:aws:s3:::audit-demo-logs","arn:aws:s3:::audit-demo-logs/logs/*"]
- }
- Output → Database:
audit_reports, Table prefix: audit_logs.
- Schedule: None (run on demand).
- After creation, select Run crawler and wait for the status Succeeded.




- Configure Amazon Athena
- AWS Console → Athena.
- Settings (top right) → Query result location: s3://audit-demo-query-results/.
- In Query Editor, select the database
audit_reports.
- Check the table:
SELECT *
FROM “audit_reports”.“audit_logsaudit_demo_logs”
LIMIT 5;



- Verify results
- Go to S3
audit-demo-query-results/Unsaved -> Check the file

