某企業部署在 AWS 上的 Web 應用使用 Application Load Balancer(ALB)進行流量分發,為提升安全審計與性能分析能力,需記錄所有訪問請求的詳細信息,包括客戶端 IP、請求路徑、響應狀態碼等。傳統日志分析依賴應用層埋點,存在數據不完整、維護成本高等問題。通過啟用 ALB 訪問日志功能,可將原始請求數據直接存儲至 Amazon S3 存儲桶,為后續安全監控、流量分析和故障排查提供可靠數據源,同時滿足合規性要求。
AWS Application Load Balancer 原生支持訪問日志功能,通過配置可將日志數據按指定格式寫入 S3 存儲桶。方案核心步驟包括:創建專用 S3 存儲桶并配置權限策略,確保 ALB 服務角色(AWSServiceRoleForElasticLoadBalancing)具備寫入權限;在 ALB 控制臺中啟用訪問日志,關聯目標存儲桶并設置日志前綴與記錄間隔(默認每5分鐘生成一個日志文件)。此方案無需編寫代碼,僅需通過 AWS 管理控制臺即可完成配置,適合快速部署與運維。
步驟一:創建 S3 存儲桶
登錄 AWS 控制臺,導航至 S3 服務,點擊 創建存儲桶。
輸入唯一名稱(如 alb-access-logs-bucket-${區域}),選擇目標區域(與 ALB 相同),取消勾選 阻止所有公共訪問(日志存儲桶無需公開訪問)。
在 對象所有權 中選擇 ACL 禁用,確保數據由 IAM 策略控制。
步驟二:配置存儲桶權限策略
進入存儲桶 權限 選項卡,編輯 存儲桶策略,粘貼以下 JSON 策略(替換 ${存儲桶名稱} 和 ${區域}):
json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::${存儲桶名稱}/AWSLogs/${AWS 賬戶 ID}/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}保存策略,確保 ALB 服務角色具備寫入權限。
步驟三:啟用 ALB 訪問日志
導航至 EC2 → 負載均衡器,選擇目標 ALB,進入 描述 選項卡。
點擊 編輯訪問日志,勾選 啟用訪問日志,選擇目標存儲桶,輸入日志文件前綴(如 ALB/)。
點擊 保存,配置立即生效。
1. 日志文件生成檢查
等待約5分鐘后,訪問 S3 存儲桶,確認路徑 AWSLogs/${AWS 賬戶 ID}/ALB/ 下生成以 .log.gz 結尾的壓縮文件。下載并解壓文件,檢查日志格式是否包含 timestamp、client_ip、request_path、response_code 等字段。
2. 功能測試驗證
通過客戶端訪問 ALB 監聽的域名,觸發請求流量。刷新 S3 存儲桶,確認新日志文件記錄了測試請求的詳細信息(如狀態碼 200 或 404)。使用 Amazon Athena 或 AWS Glue 對日志數據進行查詢分析,驗證數據可被有效解析。