Mục tiêu của bài lab:
- Tạo một VPC mới (vpc-09667a2bb703ab673)
- Tạo S3 Bucket để chứa VPC Flow Logs.
- Bật VPC Flow Logs bằng AWS Console.
- Cấu hình log lưu vào S3.
- Kiểm tra cấu trúc thư mục lưu log.
VPC Flow Logs là gì?
VPC Flow Logs ghi lại metadata của lưu lượng mạng trong VPC:
Ví dụ:
10.0.1.10 → 8.8.8.8
TCP 443
ACCEPT
Nó không ghi nội dung gói tin.
Bước 1: Tạo S3 Bucket lưu trữ Flow Logs
Đăng nhập AWS Console.
Vào:
S3
Chọn:
Create bucket
Ví dụ:
vpc-flowlog-hourly-lab
Region:
ap-southeast-1
Bấm:
Create bucket
Bucket Policy:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AWSLogDeliveryAclCheck",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:GetBucketAcl",
"Resource": "arn:aws:s3:::vpc-flowlog-lab"
},
{
"Sid": "AWSLogDeliveryWrite",
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::vpc-flowlog-lab/*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
}
]
}
Bước 2: Tạo EC2 để sinh traffic thử nghiệm
Flow Logs chỉ sinh log khi có traffic.
Vào:
EC2
Chọn:
Launch Instance
Tên:
flowlog-test
AMI:
Amazon Linux 2023
Instance type:
t2.micro
Network:
flowlog-lab VPC
Bật:
Auto assign public IP
Launch.
Bước 3: Bật VPC Flow Logs
Vào:
VPC Console
Chọn VPC vừa tạo.
Tab:
Flow Logs
Bấm:
Create Flow Log
Cấu hình Flow Log
Flow log name
flowlog-hourly-test
Filter
All
Destination
Send to Amazon S3
S3 URI
arn:aws:s3:::vpc-flowlog-hourly-lab
Log format
AWS default format
Maximum aggregation interval
1 minute
(giúp log xuất hiện nhanh hơn khi test)
Bước 4: Tạo traffic để kiểm tra
SSH vào EC2.
Chạy:
ping google.com
hoặc:
curl https://aws.amazon.com
hoặc:
yum update -y
Chờ khoảng:
5-15 phút
Bước 5: Kiểm tra log trên S3
Vào:
S3
Mở bucket:
vpc-flowlog-hourly-lab
Bạn sẽ thấy:
AWSLogs/
Đi tiếp:
AWSLogs
└── 123456789012
└── vpcflowlogs
└── ap-southeast-1
Trường hợp 1: Chỉ lưu theo ngày
Bạn sẽ thấy:
2026/
└── 06/
└── 15/
file.parquet
Trường hợp 2: Lưu theo giờ
Bạn sẽ thấy:
year=2026/
└── month=06/
└── day=15/
└── hour=09/
file.parquet
hoặc
year=2026/
└── month=06/
└── day=15/
└── hour=10/
Giải thích các thuộc tính cấu hình
1. Filter
Chọn loại traffic cần ghi log.
Accept: Chỉ ghi các kết nối được cho phép, Các traffic được Security Group/NACL cho phép
Reject: Chỉ ghi các traffic bị từ chối
All: Accept + Reject
2. Maximum Aggregation Interval
AWS gom nhiều packet thành một record.
10 minutes (mặc định): 10:00 -> 10:10 toàn bộ traffic sẽ được tổng hợp thành các record.
3. Destination
Nơi lưu log.
4. Resource-based Policy
Thông báo này:
A resource-based policy will be created...
Nghĩa là AWS sẽ tự thêm Bucket Policy cho phép service:
delivery.logs.amazonaws.com
ghi log vào bucket.
Ví dụ policy tương tự:
{
"Effect": "Allow",
"Principal": {
"Service": "delivery.logs.amazonaws.com"
},
"Action": "s3:PutObject"
}
Nếu bucket khác account thì thường phải tự cấu hình policy.
5. Log Record Format
AWS Default Format
Custom Format
6. Hive-compatible S3 prefix
Tắt (mặc định)
AWS tạo thư mục như:
AWSLogs/
└── 812125551079/
└── vpcflowlogs/
└── ap-southeast-1/
└── 2026/
└── 06/
└── 16/
└── 03/
file.log.gz
Bật Hive-compatible
AWS đổi thành:
AWSLogs/
└── aws-account-id=812125551079/
└── aws-service=vpcflowlogs/
└── aws-region=ap-southeast-1/
└── year=2026/
└── month=06/
└── day=16/
└── hour=03/
file.log.gz
7. Partition logs by time
Tùy chọn này quyết định AWS chia thư mục theo ngày hay theo giờ.
Every 24 hours (Default)
AWS tạo:
2026/06/16/
hoặc nếu bật Hive:
year=2026/month=06/day=16/
Toàn bộ log của ngày đó nằm chung.
Ví dụ:
2026-06-16 00:00
→
2026-06-16 23:59
Every 1 hour
AWS tạo:
2026/06/16/00/
2026/06/16/01/
2026/06/16/02/
2026/06/16/03/
...
hoặc Hive:
year=2026/month=06/day=16/hour=00/
year=2026/month=06/day=16/hour=01/
year=2026/month=06/day=16/hour=02/