Chuyển đến nội dung chính
ECS

Chỉ tăng CPU/bộ nhớ cho batch chạy theo lịch trên ECS mà không cần thêm task definition

Ghi đè tài nguyên lúc chạy cho riêng batch dùng chung image với web, giữ cấu hình đơn giản với một task definition duy nhất.

Khi chạy web và batch ban đêm bằng cùng một container image trên ECS Fargate, thường gặp tình huống "chỉ batch là thiếu bộ nhớ". Nếu tạo thêm một task definition chỉ để đổi tài nguyên, mỗi lần cập nhật image hay biến môi trường phải sửa hai nơi, dễ sót cấu hình.

Hướng xử lý: ghi đè bằng overrides khi chạy

API RunTask của ECS có tham số overrides, cho phép ghi đè CPU/bộ nhớ của cả task và lệnh của từng container ngay lúc chạy. Dùng universal target (ecs:runTask) của EventBridge Scheduler thì chỉ cần khai báo các giá trị này trong Input của lịch chạy.

{
  "Cluster": "arn:aws:ecs:ap-northeast-1:123456789012:cluster/app",
  "TaskDefinition": "app-web",
  "LaunchType": "FARGATE",
  "NetworkConfiguration": {
    "AwsvpcConfiguration": {
      "Subnets": ["subnet-xxxx"],
      "SecurityGroups": ["sg-xxxx"]
    }
  },
  "Overrides": {
    "Cpu": "2048",
    "Memory": "8192",
    "ContainerOverrides": [
      { "Name": "app", "Command": ["bin/rails", "runner", "DailyReport.run"] }
    ]
  }
}

Lưu ý

Tổng kết

Giữ một task definition duy nhất và chỉ ghi đè tài nguyên cho những job cần thiết giúp giảm cả công deploy lẫn lỗi cấu hình. Nên đo lượng tài nguyên thực tế của từng batch bằng Container Insights trên CloudWatch trước khi quyết định.

Bắt đầu bằng 30 phút
trao đổi bằng tiếng Nhật.

Quý khách có thể liên hệ ngay cả khi mới ở mức "Việc này có làm được không?". Bridge SE sẽ phản hồi trong 1 ngày làm việc và chúng tôi không gọi điện chào hàng làm phiền.

Liên hệ qua emailTư vấn miễn phí