Какой инструмент можно использовать в Azure, чтобы поставить CRON-задачу?

Ответ

В Azure есть несколько сервисов для выполнения задач по расписанию (аналог CRON):

  1. Azure Functions (с Timer Trigger): Идеально для выполнения кода (например, на C#, Python, JavaScript) по расписанию. Управляется через выражение CRON.
    // Пример функции на C#
    public static class MyTimerFunction
    {
        [FunctionName("TimerTriggerCSharp")]
        public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
        {
            // Задача выполняется каждые 5 минут
            log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
        }
    }
  2. Azure Logic Apps: Низко-код решение. Можно использовать встроенное действие Recurrence для настройки сложных расписаний и оркестрации различных сервисов.
  3. Azure Container Instances (ACI) + Azure Container Registry (ACR): Для запуска контейнеризированных задач по расписанию можно использовать связку ACR Tasks с триггером по расписанию.
  4. Azure Kubernetes Service (AKS) + CronJob: Если ваша инфраструктура построена на Kubernetes, используйте стандартный ресурс CronJob.

Для большинства сценариев Azure Functions с Timer Trigger — это стандартный и наиболее гибкий выбор.

Ответ 18+ 🔞

Слушай, а в Azure-то с этим CRON'ом вообще отдельная история, просто ёперный театр! Сидишь такой, думаешь: "Ну чё, надо мне тут задачу по расписанию запускать, как в старые добрые". А там тебе, блядь, целый овердохуища вариантов на выбор, глаза разбегаются. Ну, как с машиной — можно на велосипеде, а можно на танке, но суть-то одна.

Вот, например, Azure Functions с этим самым Timer Trigger'ом. Это, можно сказать, классика жанра, прям пизда рулю. Представь: пишешь ты свой кусок кода на C#, Python или ещё на чём, настраиваешь крон-выражение, и всё — оно само по себе выполняется, как часы. Удобно, гибко, и доверия к нему — не ноль, а вполне себе нормально.

// Вот смотри, как просто выглядит
public static class MyTimerFunction
{
    [FunctionName("TimerTriggerCSharp")]
    public static void Run([TimerTrigger("0 */5 * * * *")] TimerInfo myTimer, ILogger log)
    {
        // И эта штука будет орать в лог каждые пять минут, хоть ты тресни
        log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
    }
}

Дальше идёт Azure Logic Apps. Это уже для тех, кому код писать влом, или для хитрожопых сценариев, где нужно десять сервисов между собой подружить. Там всё на мышкой: тыкаешь в интерфейсе, настраиваешь расписание действием "Recurrence" — и готово. Но иногда от их дизайнера просто волнение ебать начинается, такой он... своеобразный.

А вот если ты совсем упоротый и всё у тебя в контейнерах, то есть Azure Container Instances (ACI). Можно настроить ACR Tasks, чтобы он сам, по расписанию, твой контейнер из реестра вытаскивал и запускал. Штука мощная, но для простой задачи — это как из пушки по воробьям, честно говоря.

Ну и вершина инженерной мысли — Azure Kubernetes Service (AKS). Если у тебя там целый зоопарк из микросервисов живёт, то можно использовать стандартный для кубера CronJob. Но это уже уровень "сам себе стреляю в ногу", потому что содержать весь этот K8s — то ещё удовольствие, терпения нужно овердохуища.

Короче, если у тебя задача простая и кодовая — бери Azure Functions, не прогадаешь. Остальные варианты — это когда уже реально нужна конкретная фича, а не просто "раз в час что-то сделать". Выбирай с умом, а то потом сам от себя охуеешь, когда простую таску на AKS разворачивать будешь.