AWS App Runner
Fully Managed Web Apps & APIs, GitHub CI/CD, VPC Connector, Zero-config Deploy
Tổng quan
AWS App Runner là dịch vụ fully managed giúp deploy web applications và APIs từ source code hoặc container image — không cần biết về servers, load balancers, hay auto scaling.
Ví von: App Runner giống như Heroku của AWS — push code lên là chạy, không cần lo infra.
Vị trí trong hệ sinh thái AWS Compute
Cách App Runner hoạt động
Luồng triển khai
Kiến trúc bên trong
Nguồn deploy (Source)
App Runner hỗ trợ 2 loại source:
1. Container Registry (ECR)
2. Source Code Repository (GitHub)
apprunner.yaml (cấu hình build)
Cấu hình Service
Compute (CPU & Memory)
| CPU | Memory | Ghi chú |
|---|---|---|
| 0.25 vCPU | 0.5 GB | Dev/test nhỏ |
| 0.5 vCPU | 1 GB | Mặc định |
| 1 vCPU | 2 GB | Web apps vừa |
| 2 vCPU | 4 GB | APIs với traffic cao |
| 4 vCPU | 8 GB, 10 GB, 12 GB | Heavy workloads |
App Runner dùng per-instance sizing, không phải per-task như Fargate.
Environment Variables & Secrets
Custom Domain
Auto Scaling
App Runner có Auto Scaling Configuration riêng — không phải EC2 ASG:
Scale-to-zero (Pause)
Networking & VPC
Mặc định (không VPC)
Với VPC Connector (kết nối resources private)
Khi app cần truy cập RDS, ElastiCache, internal services trong VPC:
Inbound Private Endpoint
Ngược lại — nếu muốn App Runner chỉ nhận traffic từ bên trong VPC (không public):
Observability
CloudWatch Metrics tự động
App Runner tự gửi metrics vào CloudWatch:
| Metric | Mô tả |
|---|---|
RequestCount | Tổng số HTTP requests |
2xxStatusResponses | Requests thành công |
4xxStatusResponses | Client errors |
5xxStatusResponses | Server errors |
RequestLatency | Latency trung bình (ms) |
ActiveInstances | Số instances đang chạy |
CloudWatch Logs
AWS X-Ray (Distributed Tracing)
Security & IAM
Instance Role (Task Role tương đương)
Gán IAM Role cho App Runner service để app có thể gọi AWS services:
Access Role (cho ECR Private)
Khi source là ECR Private image, App Runner cần role để pull:
WAF Integration
Pricing
Hai thành phần chi phí
Ví dụ tính phí
So sánh với các dịch vụ khác
App Runner vs Fargate vs Elastic Beanstalk vs Lambda
| Tiêu chí | App Runner | Fargate (ECS) | Elastic Beanstalk | Lambda |
|---|---|---|---|---|
| Loại workload | Web apps, APIs | Bất kỳ container | Web apps | Event-driven functions |
| Quản lý infra | Không cần gì | Không cần servers | Bán managed | Không cần gì |
| Source input | Code hoặc image | Image only | Code (zip) hoặc Docker | Code (zip) |
| Scaling | Tự động (request-based) | Tùy chỉnh nhiều | Tự động (nhiều policy) | Tự động (event-based) |
| Cold start | Vài giây (scale từ 0) | ~1-2 phút | ~phút | ms-giây |
| Max runtime | Không giới hạn | Không giới hạn | Không giới hạn | 15 phút |
| Pricing model | vCPU+mem (active) + mem (idle) | vCPU+mem (running time) | EC2 instances | Per request + duration |
| VPC access | Qua VPC Connector | Native | Native | Qua VPC config |
| Complexity | ⭐ Thấp nhất | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Control | ⭐ Thấp nhất | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ |
App Runner vs Fargate - Khi nào chọn cái nào?
Khi nào dùng App Runner?
Phù hợp nhất:
Không phù hợp:
Câu hỏi thường gặp trong thi cử
Q1: Điểm khác biệt chính giữa App Runner và Fargate là gì?
A: App Runner fully managed hơn — tự xử lý load balancer, TLS, CI/CD integration, auto scaling mà không cần cấu hình gì. Fargate vẫn cần bạn setup ECS task definitions, services, load balancer, target groups. App Runner phù hợp với web apps/APIs đơn giản; Fargate linh hoạt hơn cho workloads phức tạp.
Q2: App Runner có thể kết nối tới RDS trong private VPC không?
A: Có — thông qua VPC Connector. Bạn cấu hình connector với subnets và security groups, App Runner dùng nó để route outbound traffic vào VPC.
Q3: Làm thế nào để App Runner deploy tự động khi push code lên GitHub?
A: Khi tạo service từ GitHub, bật tùy chọn Automatic deployments — App Runner sẽ theo dõi branch được chỉ định và tự build + deploy mỗi khi có commit mới.
Q4: Khi không có traffic, App Runner có tính tiền không?
A: Có nhưng chỉ tính memory (không tính CPU). Nếu muốn $0 hoàn toàn khi idle, cần Pause service (scale về 0) — nhưng sẽ có cold start khi có request đầu tiên.
Q5: Một công ty muốn deploy REST API từ container image, không muốn quản lý servers hay load balancers, cần HTTPS tự động. Dịch vụ nào phù hợp nhất?
A: AWS App Runner — deploy từ ECR image, HTTPS endpoint tự động, load balancer managed, auto scaling built-in, không cần cấu hình gì thêm.
Q6: App Runner hỗ trợ những runtime nào nếu deploy từ source code?
A: Python, Node.js, Java (Corretto), .NET, PHP, Ruby, Go. Ngoài ra có thể dùng custom Dockerfile nếu runtime không có trong danh sách.
Q7: So sánh App Runner với Lambda — khi nào chọn App Runner?
A: Chọn App Runner khi: workload chạy lâu hơn 15 phút, cần server-style framework (Express, FastAPI, Spring Boot), app có state trong memory giữa requests, muốn container-based deployment. Chọn Lambda khi: event-driven, function ngắn, cần scale cực nhanh từ 0 → nhiều, tính tiền theo millisecond.
Tài liệu tham khảo: