class ECSUtil::Commands::RunCommand

Public Instance Methods

run() click to toggle source
# File lib/ecsutil/commands/run.rb, line 2
def run
  task_name = args.shift
  terminate("Task name is required") unless task_name

  task   = config["tasks"][task_name]
  family = sprintf("%s-%s-%s", config["app"], config["env"], task_name)

  arn = load_active_task_definitions.find do |task_arn|
    task_arn.split("/", 2).last.start_with?(family)
  end

  if !arn
    terminate "Cant find task definition for #{family}"
  end

  opts = {
    startedBy: config["user"],
    cluster: config["cluster"],
    taskDefinition: arn,
    launchType: "FARGATE",
    networkConfiguration: {
      awsvpcConfiguration: {
        subnets: [config["subnets"]].flatten,
        securityGroups: [task["security_groups"]].flatten,
        "assignPublicIp": "ENABLED"
      }
    }
  }
  
  if args && args.any?
    step_info "Using override command: #{args}"

    opts[:overrides] = {
      containerOverrides: [
        {
          name: task_name,
          command: args,
        }
      ]
    }
  end

  step_info "Running task using #{arn}"
  aws_call("ecs", "run-task", opts)
end