1. 確保用戶擁有 AmazonS3FullAccess 和 AmazonAthenaFullAccess 權(quán)限。
2. 創(chuàng)建專用 S3 存儲桶(如 cloudtrail-logs-
3. 登錄 AWS CloudTrail 控制臺,創(chuàng)建新跟蹤(Trail)。
名稱:athena-cloudtrail-demo
日志存儲位置:選擇上一步創(chuàng)建的 S3 存儲桶。
啟用多區(qū)域日志記錄(可選,根據(jù)需求)。
等待 15 分鐘,確保日志開始寫入 S3。
本次采用AWS Console界面完成作業(yè)。 示例2,顯示在特定時間段內(nèi)發(fā)送 GET 對象請求的所有請求者
注意:根據(jù)項(xiàng)目的具體情況,可以采用不同的實(shí)施方法。比如使用命令行(CLI)部署、代碼部署 (CloudFomation、Terraform等)、以及其它開發(fā)語言(SDK)完成作業(yè)。
步驟一:在 Athena 中創(chuàng)建表
1. 進(jìn)入 CloudTrail 控制臺,導(dǎo)航至 Event history。
2. 點(diǎn)擊 Run advanced queries in Amazon Athena,自動跳轉(zhuǎn)至 Athena 控制臺。
3. 選擇存儲日志的 S3 路徑(如 s3://cloudtrail-logs-
4. 點(diǎn)擊 Create table,Athena 會自動生成表結(jié)構(gòu)(基于 CloudTrail 的 JSON 格式)。
步驟二:執(zhí)行查詢分析
示例1,顯示在特定時間段內(nèi)發(fā)送 PUT 對象請求的所有請求者
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.PUT.OBJECT'
AND timestamp
BETWEEN '2024/01/29'
AND '2024/01/30'
LIMIT 100;
SELECT bucket_name, requester, remoteip, key, httpstatus, errorcode, requestdatetime
FROM s3_access_logs_db.mybucket_logs
WHERE operation='REST.GET.OBJECT'
AND timestamp
BETWEEN '2024/01/29'
AND '2024/01/30'
LIMIT 100;
1. 檢查返回的數(shù)據(jù)是否符合預(yù)期(如時間范圍、事件類型)。
2. 使用 LIMIT 子句限制結(jié)果集大小,避免高額查詢費(fèi)用。
3. 在 Athena 控制臺查看 Query history,監(jiān)控掃描數(shù)據(jù)量及費(fèi)用