Запланируйте запуск AWS ECS Fargate и остановите задачи - PullRequest
0 голосов
/ 20 декабря 2018

В документации AWS говорится: « Fargate поддерживает планирование задач в ответ на события CloudWatch. Вы можете легко запускать и останавливать задачи Fargate, которые вам нужно запускать только в определенное время »

Запуск задач Fargate можно легко включить из событий CLoudWatch или планировщика задач ECS.

Но ОСТАНОВКА задач Fargate я не могу найти.Возможно ли, что для остановки задач нужно использовать лямбда, а не нативную функцию Fargate?

Моя цель - запускать контейнер ECS только с 8 до 17 часов!

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

ответ @Francesco Grotta прав.Мы можем создать следующие ресурсы для запуска этого действия по расписанию:

  • Лямбда-функция, запуск или остановка путем обновления службы ECS DesiredCount.
  • Запланированное CloudWatchСобытия, чтобы запустить задачи ECS.
  • Запланированные события CloudWatch, чтобы остановить задачи ECS.

Лямбда-функция, которая запускает или останавливает службу ECS на основе ввода из CloudWatchСобытия:

    if(event.status == 'stop'){
        var params = {
            cluster: process.env.ECS_CLUSTER,
            service: process.env.ECS_SERVICE_NAME,
            desiredCount: 0
        };
    }
    else{
        var params = {
            cluster: process.env.ECS_CLUSTER,
            service: process.env.ECS_SERVICE_NAME,
            desiredCount: 1
        };
    }

    var ecs = new AWS.ECS();
    ecs.updateService(params, function (err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else console.log(data);           // successful response
    });

В шаблоне Cloudformation создайте ресурсы, которые будут запускать лямбда-функцию по расписанию:

  StartEcsLambdaSchedule:
    Type: AWS::Events::Rule
    Properties:
      Description: >
        A schedule for the Lambda function to start ECS service during office hours.
      ScheduleExpression: !Ref StartEcsLambdaScheduleExpression
      State: ENABLED
      Targets:
        - Arn: !Sub ${EcsTaskScheduleLambdaFunction.Arn}
          Id: StartEcsLambdaScheduleV1
          Input: '{"status": "start"}'

  StopEcsLambdaSchedule:
    Type: AWS::Events::Rule
    Properties:
      Description: >
        A schedule for the Lambda function to stop ECS service after office hours.
      ScheduleExpression: !Ref StopEcsLambdaScheduleExpression
      State: ENABLED
      Targets:
        - Arn: !Sub ${EcsTaskScheduleLambdaFunction.Arn}
          Id: StopEcsLambdaScheduleV1
          Input: '{"status": "stop"}'
0 голосов
/ 24 декабря 2018

Это то же самое, что и «Пуск», но вам нужно указать «Желаемая задача» на 0. Моя проблема в том, что планировщику нужно определение задачи, поэтому, если я обновлю его, мне нужно будет изменить и планировщик.Существует какой-то сервис, лямбда или проект, чтобы справиться с этим?Мне нужно остановить контейнер Cluster of Fargate.

...