시간 트리거 Azure 함수를 로컬에서 디버깅하는 방법

매우 자주 C#을 사용하여 타이머 트리거 Azure 함수를 개발해야 합니다.
물론 개발 시간을 최적화하기 위해 타이머를 매번 기다릴 수는 없습니다(특히 타이머가 매일 아침 7:00AM인 경우 🙂).

트리거를 기다리는 데 시간을 낭비할 수 없고 즉시 트리거되는 Azure 함수 시간을 시작하는 방법을 살펴보겠습니다.

해결책



Azure Function의 기본 메서드에는 기본적으로 숨겨진 "RunOnStartup"이라는 매개 변수가 있습니다.
시작 시 Azure 함수를 실행하려면 true로 설정하고 디버그 세션을 다시 시작합니다.

[FunctionName("Function1")]
public void Run([TimerTrigger("0 */5 * * * *", RunOnStartup = true)]TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}


그런데 이 경우 Azure Function을 다시 시작하거나 새 버전의 함수를 배포할 때 프로덕션 환경에서도 함수가 시작됩니다.
이를 방지하기 위해 함수 메서드에서 조건부 컴파일 지시문을 사용할 수 있습니다.

#if DEBUG
     RunOnStartup= true
#endif


아래에서 디버그 예외에 대한 컴파일 지시문이 포함된 전체 코드를 찾을 수 있습니다.

[FunctionName("Function1")]
public void Run([TimerTrigger("0 */5 * * * *", 
#if DEBUG
     RunOnStartup= true
#endif    
)]TimerInfo myTimer, ILogger log)
{
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}


그게 다야!
행복한 디버깅. 🦸

좋은 웹페이지 즐겨찾기