search

Hướng dẫn cấu hình VPC Flow Logs trên AWS và lưu trữ log vào S3

calendar_today Đăng ngày: 09/09/2026

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/