Amazon ECS là gì?
Amazon Elastic Container Service (ECS) là một dịch vụ Orchestration Container được quản lý hoàn toàn bởi AWS. ECS cho phép bạn dễ dàng chạy, dừng và quản lý các container ứng dụng trên một Cluster máy chủ hoặc thông qua AWS Fargate (serverless compute cho containers).
ECS giúp bạn tập trung vào ứng dụng thay vì phải tự quản lý hạ tầng (tương tự như Kubernetes nhưng managed).
Các thành phần chính trong ECS
1. Cluster
- Là nhóm tài nguyên (EC2 instances hoặc Fargate tasks) nơi các container sẽ chạy.
- Một cluster có thể chứa nhiều dịch vụ và tác vụ.
2. Task Definition
- Là “blueprint (bản thiết kế)” cho ứng dụng container.
- Bao gồm thông tin:
- Docker image nào sẽ dùng.
- Cấu hình CPU, Memory.
- Port mapping của Container.
- Các biến môi trường.
- Số lượng container bên trong task.
- …v.v.
Ví dụ: bạn định nghĩa một task chạy một web server từ image
nginx.
3. Task
- Một task là instance cụ thể của Task Definition đang chạy.
- Có thể chạy một hoặc nhiều container bên trong.
4. Service
- Quản lý vòng đời của tasks (Task Manager).
- Đảm bảo số lượng task chạy đúng như mong muốn (desired count).
- Tích hợp với Elastic Load Balancing (ELB) để phân phối traffic.
5. Container Agent
Trong trường hợp bạn sử dụng EC2 Launch Type, mỗi EC2 instance trong cluster sẽ cần chạy một ECS Container Agent.
- Giao tiếp với ECS để gửi trạng thái và nhận lệnh start/stop task.
Cách ECS triển khai containers
Có hai cách triển khai containers trong ECS là EC2 Launch Type và Fargate Launch Type.
EC2 Launch Type
- Containers chạy trên các EC2 instance mà bạn quản lý.
- Bạn chịu trách nhiệm provisioning, patching, scaling.
- Cần cài đặt và chạy ECS Container Agent trên mỗi instance.
Fargate Launch Type
Fargate là serverless compute engine để chạy container trên AWS.
- Chạy containers mà không cần quản lý server.
- AWS lo toàn bộ hạ tầng, chạy các ECS Tasks dựa vào CPU/RAM mà bạn cần.
- Bạn chỉ cần định nghĩa Task Definition và ECS sẽ lo phần còn lại.
Security trong ECS
- Sử dụng IAM Roles để cấp quyền cho tasks.
- Mỗi task có thể có một IAM role riêng biệt, giúp kiểm soát quyền truy cập tài nguyên AWS.
- Hỗ trợ VPC để cách ly mạng và bảo mật.
- Tích hợp với AWS Secrets Manager và AWS Systems Manager Parameter Store để quản lý bí mật và cấu hình.
ECS Task Role là gì?
- Là IAM Role được gán cho một task.
- Gắn vào Task Definition.
- Cho phép task đó có quyền truy cập các dịch vụ AWS mà không cần dùng chung IAM user credentials.
- Ví dụ: một task cần truy cập S3, bạn có thể tạo một IAM role với quyền truy cập S3 và gán role đó cho task.
- Giúp tăng cường bảo mật và tuân thủ nguyên tắc least privilege.
ECS Execution Role là gì?
- Là IAM Role mà ECS sử dụng để thực thi các tác vụ như kéo image từ ECR, ghi log vào CloudWatch.
- Cần thiết để ECS có thể thực hiện các hành động liên quan đến quản lý container.
| Execution Role | Task Role | |
|---|---|---|
| Ai dùng? | ECS Control Plane (khi khởi động container) | Ứng dụng bên trong container |
| Khi nào? | Trước khi container chạy | Trong khi container chạy |
| Dùng để làm gì | Pull image, lấy secret, gửi logs | App gọi AWS services (S3, DynamoDB, SQS) |
Ưu điểm của ECS
- Native với AWS: Tích hợp chặt chẽ với IAM, VPC, CloudWatch, ALB/NLB.
- Đơn giản: Không cần học thêm công cụ phức tạp (so với Kubernetes).
- Linh hoạt: Có thể chọn EC2 (tự quản lý) hoặc Fargate (serverless).
- Bảo mật: Quản lý bằng IAM roles, có thể kiểm soát đến từng task.
Khi nào nên dùng ECS?
- Khi bạn muốn chạy containers với ít effort quản lý hạ tầng.
- Khi bạn đã sử dụng nhiều dịch vụ AWS và muốn tích hợp dễ dàng.
- Khi bạn muốn lựa chọn giữa tự quản lý cluster (EC2) hoặc serverless (Fargate).
ECR là gì
Amazon Elastic Container Registry (ECR) là một dịch vụ quản lý Docker container registry được quản lý hoàn toàn bởi AWS. ECR giúp bạn dễ dàng lưu trữ, quản lý và triển khai Docker container images. ECR tích hợp chặt chẽ với ECS, giúp bạn dễ dàng kéo images khi triển khai containers.
- Bao gồm hai loại registry:
- Public: Miễn phí, ai cũng có thể truy cập (https://gallery.ecr.aws).
- Private: Chỉ người có quyền mới truy cập được.
- Hỗ trợ tích hợp với IAM để kiểm soát quyền truy cập.