🌿 What?

  • Là dịch vụ của AWS, giúp dễ dàng chạy và quản lý các Docker containers trên 1 cụm EC2 instances hoặc AWS Fargate - một công cụ tính toán không máy chủ cho các containers.
  • Launch Docker container on AWS = Launch EC2 Tasks trên ECS Cluster.

🌿 EC2 Launch Type

  • EC2 Launch Type: bạn phải cung cấp và bảo trì cho cơ sở hạ tầng(là các EC2 instances)
  • Mỗi EC2 Instance phải chạy một ECS Agent để đăng ký trên ECS Cluster. Sau đó, AWS có thể takes care việc starting/stopping các containers.

🌿 Fargate Type

  • Launch Docker containers trên AWS mà không cần tạo bất kỳ một EC2 Instances nào - tất cả đều là serverless
  • Chỉ cần tạo task định nghĩa, AWS sẽ thực hiện chạy ECS Tasks cho chung ta dựa theo lượng CPU/RAM mà chúng ta cần.
  • Khi mở rộng, chỉ cần tạo thêm các tasks, không cần tạo thêm EC2 Instances.
  • Trong khi đi thi, Fargate Type được khuyến khích sử dụng hơn vì nó là serverless - dễ mở rộng và quản lý.

🌿 IAM Roles

  • Có 2 dạng ứng với 2 type.
  • EC2 Instance Profile (EC2 Launch Type only):
    • Chỉ được sử dụng bởi các ECS Agents
    • Tác dụng:
      • Sử dụng để gọi API tới ECS service.
      • Gửi container logs đến CloudWatch Logs
      • Pull Docker image từ ECR
      • Xem các dữ liệu nhạy cảm trong Secrets Manager hoặc SSM Parameter Store.
  • ECS Task Role:
    • Cho phép các task sử dụng(mỗi task sẽ có những roles được chỉ định)
    • Tác dụng:
      • Sử dụng role để truy cập tới các AWS services của bạn.
      • Task Role được định nghĩa trong task definition.

🌿Tích hợp với Load Balancer

  • ALB - Application Load Balancer: có được hỗ trợ và chạy được với hầu hết các use cases.
  • Network Load Balancer: nên sử dụng với các use cases cần thông lượng/hiệu suất cao hoặc là khi sử dụng với AWS Private Link.

🌿 Data Volumes (EFS)

  • Mount thẳng EFS vào ECS tasks.
  • Có thể chạy được với cả 2 Type: EC2 Launch Type and Fargate Type.
  • Các tasks chạy trên bất kỳ AZ nào cũng sẽ chia sẻ chung dữ liệu trên EFS(chung một mối)
  • Fargate + EFS = Serverless.
  • Use cases: cần chia sẻ và dùng chung dữ liệu cho các containers trên nhiều AZ.
  • Note:
    • S3 không thể mount được như một file system.