programing

앱 설정을 통한 Azure Function 타이머 구성

lastcode 2023. 5. 2. 22:43
반응형

앱 설정을 통한 Azure Function 타이머 구성

저는 Azure 함수 타이머 잡을 작업하고 있습니다. 앱 설정에서 cron 식을 가져와야 합니다.Azure 기능의 앱 설정에서 값을 얻으려면 어떻게 해야 하는지 알려주세요.나는 30분마다 오전 9시부터 오후 12시까지 나의 zure 기능을 실행하고 싶습니다\

{
 "disabled": false,
 "bindings": [
   {
     "name": "timerInfo",
     "type": "timerTrigger",
     "direction": "in",
     "schedule": "0 * * * * *"
   }
 ]
}

스케줄을 다음으로 설정합니다."schedule": "%EmailScheduleTriggerTime%"그런 다음 appsetting.json 또는 local로 이동합니다.settings.json EmailScheduleTrigger를 설정할 수 있습니다.시간 값:

{
  "IsEncrypted": false,
  "Values": {
    "EmailScheduleTriggerTime": "0 30 9-12 * * *", //Run every  30 minutes from 9:00 to 12:00

  },
  "ConnectionStrings": {
    "DefaultConnection": ""
  }
}

[FunctionName("TimerfunctionApp")] 
public static void Run([TimerTrigger("%EmailScheduleTriggerTime%")] TimerInfo TInfo, TraceWriter log)

VS2017 Functions 툴링을 사용하고 에서 기능을 정의하는 경우. project 포털에서 하는 것이 할 수 .AppSettings 사용%구문:

[FunctionName("MyTimerFunction")] 
public static void Run([TimerTrigger("%TimerInterval%")] TimerInfo myTimer, TraceWriter log, ..

앱 를 들어 " " " " " " " " " " " " " " " " " " 에 입력합니다.local.settings.json

{
  "Values" : { 
      "TimerInterval" : "0 30 9-12 * * *"
    }
}

답변에 의 모든 값을 얻을 수 (" 전답변추려면가다구있수얻니습을값을이대한필드모에든일성").appsettings.json를 사용한 입니다.%- - 출만아니라뿐처▁▁only▁-에서 뿐만 아니라Values구성 개체입니다.

예:

appsettings.json:

{      
  "ScheduleConfiguration": {
    "FunctionOne": {
      "CronExpression": "0 40 2 * * *"
    }
  }
}

Functions.cs:

    /// <summary>
    /// %ScheduleConfiguration:FunctionOne:CronExpression%
    ///  - e.g. "0 40 2 * * *" - executes at 02:40:00am every day
    /// </summary>
    [FunctionName("FunctionOne")]
    public async Task FunctionOne(
        [TimerTrigger("%ScheduleConfiguration:FunctionOne:CronExpression%")]
        TimerInfo timerInfo)
    {
        // Azure function code
    }

이 게시물은 이미 좋은 답변을 받았기 때문에, 저는 여기서 제 경험을 공유하고 싶습니다.cron 표현식을 추가하여 앱을 로컬로 실행하려고 했습니다.appsettings.json 기능 할 때 했습니다.

직원TimerTrigger' 함수에 오류가 있습니다. Microsoft.애저, 웹잡스호스트: 인덱싱 방법 '직원' 오류타이머 트리거'입니다.마이크로소프트.애저, 웹잡스호스트: '%직원'TimerTrigger%'이(가) 값으로 확인되지 않습니다.

을 그서우리해기야에서 래위일다식을것니입옮으로 합니다.appsettings.jsonlocal.settings.json잘 작동해서 현지에서 테스트할 수 있었습니다.

편집: 배포를 위한 참고 사항 추가

기능 앱은 zure에 있는 기능 앱 자체의 애플리케이션 설정에서 타이머 트리거 설정을 읽습니다.

기능 앱을 azure에 배포하려는 경우 azure 포털에 있는 기능 앱의 Application Settings에서 수행해야 하는 작은 변경 사항이 있습니다.

zure 포털 -> 구성 -> 응용 프로그램 설정에서 기능 앱을 선택하여 해당 설정으로 이동할 수 있습니다.

가장 먼저 추가해야 하는 설정은 타이머 트리거를 실행할 시간대입니다. 여기에는 동일한 설정이 있습니다.

참고: 이러한 값은 대소문자를 구분합니다.

키 = WEBITE_TIME_ZONE

이제 여기에 추가할 두 번째 설정은 타이머 트리거 기능에 대한 것입니다. 이 이미지에서는 타이머가 동부 표준 시간으로 오전 10시와 오후 2시에 실행되는 것을 볼 수 있습니다.

왜 동부 표준시를 묻나요? 음, 우리의 첫 번째 설정은 웹사이트 시간대에 대한 것이었기 때문에 두 설정 모두 동시에 작동한다는 것을 기억하세요.

참고: 타이머 트리거의 이름은 함수 앱에 있는 이름과 일치해야 합니다. 이러한 값은 대소문자를 구분하며 타이머 트리거 기능에 있는 값과 정확히 일치해야 합니다.

여기에 이미지 설명 입력

이러한 설정을 추가했으면 변경 내용을 저장하는 것을 잊지 마십시오. 이제 기능 앱을 배포할 준비가 모두 되었습니다.

이 답변이 현지에서 타이머 기능을 배치하고 실행하는 데 도움이 되길 바랍니다.

앞서 언급했듯이 (Nodejs의 경우) 사용할 수 있습니다.%scheduleValue% 함수.json 및 사용 중scheduleValue로컬 매개 변수로 사용합니다.settings.json 및 여기서는 Microsoft 문서에 언급되어 있습니다. - https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?tabs=javascript#configuration

함수.json 로컬.j.json

Azure 기능은 아래 Microsoft 문서 타이머 트리거를 참조하십시오.

샘플 Json 구성:

{
    "schedule": "0 */5 * * * *",
    "name": "myTimer",
    "type": "timerTrigger",
    "direction": "in"
}

C# 코드:

public static void Run(TimerInfo myTimer, ILogger log)
{
    if (myTimer.IsPastDue)
    {
        log.LogInformation("Timer is running late!");
    }
    log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}" );  
}

코드 출처: Microsoft 웹 사이트

언급URL : https://stackoverflow.com/questions/45538960/azure-function-timer-configure-through-app-settings

반응형