Networking
VPC Endpoints
Gateway Endpoints, Interface Endpoints, PrivateLink, Private Access to AWS Services
VPC Endpoint cho phép EC2 trong Private Subnet kết nối đến AWS Services (S3, SQS, DynamoDB...) mà không cần đi qua Internet.
Tại sao cần VPC Endpoint?
Vấn đề: AWS Services nằm BÊN NGOÀI VPC
EC2 trong Private Subnet không có đường ra Internet
2 cách giải quyết
| Cách | Chi phí | Bảo mật | Tốc độ |
|---|---|---|---|
| NAT Gateway | 💰 $32+/tháng | 🔓 Qua internet | Chậm hơn |
| VPC Endpoint | 💰 $7.2/tháng | 🔒 Private network | Nhanh hơn |
2 loại VPC Endpoint
| Loại | Dùng cho | Chi phí | Cách hoạt động |
|---|---|---|---|
| Gateway Endpoint | S3, DynamoDB | ✅ Miễn phí | Thêm route trong Route Table |
| Interface Endpoint | 100+ services khác | 💰 $0.01/giờ | Tạo ENI trong subnet |
Gateway Endpoint (S3, DynamoDB)
Interface Endpoint (SQS, SSM, ECR...)
Tại sao S3 dùng Gateway, còn SQS dùng Interface?
Vấn đề chính: VPC là "nhà kín", EC2 không có đường ra ngoài để gọi AWS services.
S3 (Gateway Endpoint) = Có "đường hầm" sẵn
SQS (Interface Endpoint) = Cần "cửa" để ra
Tóm tắt
| Service | Có "đường hầm" sẵn? | Cần "cửa" (ENI)? | Security Group? |
|---|---|---|---|
| S3, DynamoDB | ✅ AWS xây sẵn | ❌ Không cần | ❌ Không |
| SQS, SSM, ECR... | ❌ Không có | ✅ Cần (ENI) | ✅ Cần |
💡 Tại sao S3 có đường hầm sẵn? S3 là service được dùng cực nhiều (hàng exabytes/ngày), AWS đầu tư xây đường riêng cho nó. Các service khác ít traffic hơn nên dùng giải pháp chung là ENI.
Interface Endpoint hoạt động như thế nào?
Kiến trúc
Flow chi tiết
Tại sao cần Private DNS?
| Private DNS | nslookup sqs.amazonaws.com | Kết quả |
|---|---|---|
| ❌ OFF | Trả về Public IP (52.x.x.x) | ❌ Traffic đi qua Internet |
| ✅ ON | Trả về Private IP (10.x.x.x) | ✅ Traffic đi qua Endpoint |
Hướng dẫn setup Interface Endpoint
Ví dụ: EC2 Private Subnet → SQS
Bước 1: Kiểm tra VPC DNS Settings
⚠️ Quan trọng: Thiếu 1 trong 2 setting này sẽ khiến Endpoint không hoạt động!
Bước 2: Tạo Security Group cho Endpoint
Bước 3: Tạo Interface Endpoint
Bước 4: Kiểm tra EC2 Security Group
Bước 5: Gắn IAM Role cho EC2
Tạo Role với policy:
Bước 6: Test kết nối
SSH vào EC2:
Troubleshooting
Lỗi 1: nslookup trả về Public IP
Triệu chứng:
Nguyên nhân & Fix:
| Nguyên nhân | Fix |
|---|---|
| VPC DNS Hostnames = OFF | VPC → Edit VPC settings → Enable DNS hostnames |
| Endpoint Private DNS = OFF | Endpoints → Modify private DNS name → Enable |
| Endpoint chưa Available | Đợi 1-2 phút |
Lỗi 2: Connection timeout
Triệu chứng:
Nguyên nhân & Fix:
| Nguyên nhân | Fix |
|---|---|
| Endpoint SG chặn port 443 | Thêm Inbound rule: TCP 443 từ VPC CIDR |
| EC2 SG chặn outbound 443 | Thêm Outbound rule: TCP 443 |
Lỗi 3: Access Denied
Triệu chứng:
Nguyên nhân & Fix:
| Nguyên nhân | Fix |
|---|---|
| EC2 không có IAM Role | Gắn IAM Role với SQS permissions |
| Role thiếu permissions | Thêm sqs:* vào policy |
Debug với VPC Reachability Analyzer
Checklist tổng hợp
Chi phí
| Thành phần | Chi phí |
|---|---|
| Interface Endpoint | $0.01/giờ (~$7.2/tháng) |
| Data transfer qua Endpoint | $0.01/GB |
💡 So sánh: NAT Gateway = $0.045/giờ (~$32/tháng) + $0.045/GB data
Tài liệu tham khảo
Liên kết:
- VPC - Virtual Private Cloud
- Security Groups - Virtual Firewall
- IAM - Identity and Access Management