c# azure function timer trigger

wangki·2026년 1월 15일

Azure

목록 보기
3/3

개요

개발을 하면서 특정 시간에 자동으로 실행되는 방법이 필요했다. Azure Function을 사용중인데 timer trigger라는 기능이 있어서 어떻게 사용하는지 알아볼 예정이다.

내용

visual studio로 Azure Function을 만들어 timer trigger 펑션을 만들었다.

using System;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace FunctionApp4;

public class Function1
{
    private readonly ILogger _logger;

    public Function1(ILoggerFactory loggerFactory)
    {
        _logger = loggerFactory.CreateLogger<Function1>();
    }

    [Function("Function1")]
    public void Run([TimerTrigger("* * * * * *")] TimerInfo myTimer)
    {
        _logger.LogInformation("C# Timer trigger function executed at: {executionTime}", DateTime.Now);
        
        if (myTimer.ScheduleStatus is not null)
        {
            _logger.LogInformation("Next timer schedule at: {nextSchedule}", myTimer.ScheduleStatus.Next);
        }
    }
}

https://learn.microsoft.com/ko-kr/azure/azure-functions/functions-bindings-timer?tabs=python-v2%2Cisolated-process%2Cnodejs-v4&pivots=programming-language-csharp

타이머 설정

NCRONTAB 식이라고 한다.
Cron 표현법이라고 하는 것 같은데 처음 들어본다.

찾아보니 CronMaker 을 통해서 크론식을 생성할 수 있는 것 같다.

전달되는 파라미터


설정된 타임마다 함수가 호출될 때, 위와 같은 값을 넘기는 것 같다.
궁금해서

 var json = JsonSerializer.Serialize(myTimer, new JsonSerializerOptions { WriteIndented = true });
 _logger.LogInformation("timer object: {}", json);

직렬화 해서 json으로 나타내서 찍어보니 아래와 같았다. 나중에 필요하면 확인해봐야겠다.

0 */1 * * * *

이렇게 표현하면 매 분마다 실행이 되는거라고 한다.
낯설어서 헷갈리니깐 자주 봐야겠다.

근데 저렇게 변경하고 실행하니깐 에러가 발생했다.

timer trigger를 실행하기 위해서는 blob storage와 연결이 되어있어야 한다는 것 같다. 그러면 왜 * * * * * *은 정상적으로 돌아갔는지 궁금했다. 이유는 정확히 특정 시점을 기다려야 하는 경우 반드시 저장소를 뒤져서 마지막 실행 기록을 확인한다고 한다. 1초 주기로 실행하는 경우에는 이전 기록을 확인할 필요가 없는 것이다.

마소가 제공해 주는 azurite를 설치하여 실행해 주었다.
"0 */1 * * * *" 1분마다 실행하도록 타임 트리거를 설정해 준 뒤, 실행하였다.

1분마다 함수가 트리거되어 호출되는 것을 볼 수 있다.

결론

특정 시간에 호출되는 함수가 필요했었는데 cron을 활용하게 되면 원하는 시점에 함수를 트리거 할 수 있을 것 같다. 트리거 함수 내부에 실제 로직을 작성해봐야겠다.
추가로 트리거 함수 내부에서 어느정도 무거운 작업을 처리할 수 있는지에 대해서 알아볼 예정이다. 또한 blob storagecron에 대해서 좀 더 자세히 알아봐야겠다.

2개의 댓글

comment-user-thumbnail
2026년 1월 15일

유익하군요 좋은 설명 감사합니다
꾸준히 올려주세요~

1개의 답글