WebJobs는 Azure App Service의 기능으로 웹앱과 동일한 인스턴스에서 프로그램이나 스크립트를 실행할 수 있습니다. 모든 App Service 계획은 추가 비용 없이 WebJobs를 지원합니다. 이 자습서에서는 선호하는 개발 스택을 사용하여 예약된(트리거된) WebJob을 만드는 방법을 안내합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 기존 App Service .NET 9 앱입니다.
- Always on을 앱에서 항상 사용하도록 설정해야 합니다.
- Windows 컨테이너 및 모든 Linux 앱의 경우 앱 설정
WEBSITE_SKIP_RUNNING_KUDUAGENT이 .로 설정되어 있는지 확인합니다false.
로컬에서 WebJob 준비
이 단계에서는 기본 .NET WebJob 프로젝트를 만들고 프로젝트 루트로 이동합니다.
dotnet new console -n webjob –framework net9.0 cd webjob다음으로
Program.cs를 현재 시각을 콘솔에 쓰는 다음 코드로 바꿉니다.using System; class Program { static void Main() { DateTimeOffset now = DateTimeOffset.Now; Console.WriteLine("Current time with is: " + now.ToString("hh:mm:ss tt zzz")); } }webjob 디렉토리에서 webjob을 실행하여 현재 시각이 콘솔에 출력되는지 확인합니다.
dotnet run다음과 비슷한 결과가 나타나야 합니다.
Current time with is: 07:53:07 PM -05:00앱이 작동하는지 확인되면 빌드하고 부모 디렉터리로 이동합니다.
(Linux에만 해당) 프로젝트 루트에서 다음 코드를 사용하여
run.sh빌드된 실행 파일을 실행하도록 만듭니다.#!/bin/bash ./webjob이제 다음 명령에 표시된 대로 파일을 .zip 패키지합니다.
Azure에서 예약된 WebJob 만들기
Azure Portal에서 App Service 앱의 App Service 페이지로 이동합니다.
왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.
표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다. 파일 업로드에서 이전에 만들거나 다운로드한 .zip 파일을 선택해야 합니다.
설정 가치 설명 이름 웹잡 WebJob 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다. 파일 업로드 webjob.zip 실행 파일 또는 스크립트 파일이 포함된 .zip 파일입니다. 지원되는 파일 형식은 지원 파일 형식 섹션에 나열되어 있습니다. 유형 자극받음 WebJob이 실행되는 시점을 지정합니다(연속 또는 트리거됨). 트리거 예약됨 예약 또는 수동입니다. 일정이 안정적으로 작동하도록 Always on이 활성화되어 있는지 확인합니다. CRON 식 0 0/1 * * * * 이 빠른 시작에서는 1분마다 실행되는 일정을 사용합니다. 구문에 대한 자세한 내용은 CRON 식을 참조하세요. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.
예약된 WebJob은 CRON 식에 정의된 일정에 따라 실행됩니다.
WebJobs는 Azure App Service의 기능으로 웹앱과 동일한 인스턴스에서 프로그램이나 스크립트를 실행할 수 있습니다. 모든 App Service 요금제는 추가 비용 없이 WebJobs를 지원합니다. 이 샘플에서는 예약된(트리거된) WebJob을 사용하여 1분마다 한 번씩 시스템 시간을 출력합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 기존 Linux Python 앱입니다.
- Always on을 앱에서 항상 사용하도록 설정해야 합니다.
- 앱 설정
WEBSITE_SKIP_RUNNING_KUDUAGENT이false로 설정되어 있는지 확인합니다.
샘플 웹 작업 준비
미리 빌드된 샘플 프로젝트를 다운로드 하여 빠르게 시작합니다. 샘플에는 아래와 같이 콘솔에 현재 시간을 출력하는 파일이
webjob.py포함되어 있습니다.import datetime current_datetime = datetime.datetime.now() print(current_datetime) # Output: 2025-03-27 10:27:21.240752다운로드한 zip 파일을 추출한 다음 부모 디렉터리 없이 파일만
webjob.py포함하는 새 zip 파일을 만듭니다. WebJobs를 사용하려면 실행 파일 또는 스크립트가 zip 파일의 루트에 있어야 합니다.
예약된 WebJob 만들기
Azure Portal에서 App Service 앱의 App Service 페이지로 이동합니다.
왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.
표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다. 파일 업로드의 경우 샘플 WebJob 준비 섹션에서 이전에 만든 .zip 파일을 선택해야 합니다.
설정 가치 Description 이름 웹잡 WebJob 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다. 파일 업로드 webjob.zip 루트 수준에 webjob.py를 포함한 .zip 파일. 지원되는 파일 형식은 지원 파일 형식 섹션에 나열되어 있습니다.유형 자극받음 WebJob이 실행되는 시점을 지정합니다(연속 또는 트리거됨). 트리거 예약됨 예약 또는 수동입니다. 일정이 안정적으로 작동하도록 Always on이 활성화되어 있는지 확인합니다. CRON 식 0 0/1 * * * * 이 빠른 시작에서는 1분마다 실행되는 일정을 사용합니다. 구문에 대한 자세한 내용은 CRON 식을 참조하세요. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.
예약된 WebJob은 CRON 식에 정의된 일정에 따라 실행됩니다.
WebJobs는 Azure App Service의 기능으로 웹앱과 동일한 인스턴스에서 프로그램이나 스크립트를 실행할 수 있습니다. 모든 App Service 요금제는 추가 비용 없이 WebJobs를 지원합니다. 이 샘플에서는 예약된(트리거된) WebJob을 사용하여 1분마다 한 번씩 시스템 시간을 출력합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 기존 App Service Node 앱입니다.
- Always on을 앱에서 항상 사용하도록 설정해야 합니다.
- Linux의 경우 앱 설정
WEBSITE_SKIP_RUNNING_KUDUAGENT이 .로 설정되어 있는지 확인합니다false.
샘플 WebJob 준비
미리 빌드된 샘플 프로젝트를 다운로드 하여 빠르게 시작합니다. 샘플에는 아래와 같이 콘솔에 현재 시간을 출력하는 JavaScript 파일이
webjob.js포함되어 있습니다.// Import the 'Date' object from JavaScript const currentTime = new Date(); // Format the time as a string const formattedTime = currentTime.toLocaleTimeString(); // Output the formatted time to the console console.log(`Current system time is: ${formattedTime}`);다운로드한 zip 파일을 추출한 다음 부모 디렉터리 없이 파일만
webjob.js포함하는 새 zip 파일을 만듭니다. WebJobs를 사용하려면 실행 파일 또는 스크립트가 zip 파일의 루트에 있어야 합니다.
예약된 WebJob 만들기
Azure Portal에서 App Service 앱의 App Service 페이지로 이동합니다.
왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.
표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다. 파일 업로드의 경우 샘플 WebJob 준비 섹션에서 이전에 만든 .zip 파일을 선택해야 합니다.
설정 가치 Description 이름 웹잡 WebJob 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다. 파일 업로드 webjob.zip 루트 수준에 webjob.js이 포함된 .zip 파일입니다. 지원되는 파일 형식은 지원 파일 형식 섹션에 나열되어 있습니다.유형 자극받음 WebJob이 실행되는 시점을 지정합니다(연속 또는 트리거됨). 트리거 예약됨 예약 또는 수동입니다. 일정이 안정적으로 작동하도록 Always on이 활성화되어 있는지 확인합니다. CRON 식 0 0/1 * * * * 이 빠른 시작에서는 1분마다 실행되는 일정을 사용합니다. 구문에 대한 자세한 내용은 CRON 식을 참조하세요. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.
예약된 WebJob은 CRON 식에 정의된 일정에 따라 실행됩니다.
WebJobs는 Azure App Service의 기능으로 웹앱과 동일한 인스턴스에서 프로그램이나 스크립트를 실행할 수 있습니다. 모든 App Service 요금제는 추가 비용 없이 WebJobs를 지원합니다. 이 샘플에서는 예약된(트리거된) WebJob을 사용하여 1분마다 한 번씩 시스템 시간을 출력합니다.
중요합니다
WebJobs는 Java 8 및 Java 11 런타임 스택을 사용하는 Linux 앱을 포함하여 Alpine Linux 기반의 사용자 지정 Linux 컨테이너에서는 지원되지 않습니다. Java 17 Linux 앱부터 Azure App Service는 WebJobs와 호환되는 Alpine이 아닌 기반 이미지를 사용합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- 기존 App Service Java 앱입니다.
- Azure App Service Web Apps용 Maven 플러그 인입니다.
- Always on을 앱에서 항상 사용하도록 설정해야 합니다.
- 앱 설정이
WEBSITE_SKIP_RUNNING_KUDUAGENT로 설정되어 있는지 확인합니다false.
WebJob 준비
샘플 Java WebJob을 다운로드합니다. **
.JAR파일을 Maven을 사용하여 빌드합니다.project/src/main/java/webjob/HelloWorld.java에 위치한 Java 프로젝트는 메시지와 현재 시각을 콘솔에 출력합니다.import java.time.LocalDateTime; public class HelloWorld { public static void main(String[] args) { System.out.println("------------------------------------------------------------"); System.out.println("Hello World from WebJob: " + LocalDateTime.now()); System.out.println("------------------------------------------------------------"); } }project/디렉터리에서 다음 명령을 실행하여 실행 파일.jar을 생성하도록 Java 프로젝트를 빌드하고 패키지합니다.mvn install mvn packagejar 파일은 빌드가 성공적으로 완료된 후
project/target/webjob-artifact-1.0.0.jar에 위치합니다.project/target/webjob-artifact-1.0.0.jar를.zip파일로 패키지합니다.zip webjob.zip project/target/webjob-artifact-1.0.0.jar
Azure에서 예약된 WebJob 만들기
Azure Portal에서 App Service 앱의 App Service 페이지로 이동합니다.
왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.
표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다. 파일 업로드의 경우 이전 섹션에서 만든 .zip 파일을 선택해야 합니다.
설정 가치 설명 이름 웹잡 WebJob 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다. 파일 업로드 webjob.zip .zip 파일에는 webjob-artifact-1.0.0.jar가 포함되어 있습니다. 지원되는 파일 형식은 지원 파일 형식 섹션에 나열되어 있습니다.유형 자극받음 WebJob이 실행되는 시점을 지정합니다(연속 또는 트리거됨). 트리거 예약됨 예약 또는 수동입니다. 일정이 안정적으로 작동하도록 Always on이 활성화되어 있는지 확인합니다. CRON 식 0 0/1 * * * * 이 빠른 시작에서는 1분마다 실행되는 일정을 사용합니다. 구문에 대한 자세한 내용은 CRON 식을 참조하세요. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.
예약된 WebJob은 CRON 식에 정의된 일정에 따라 실행됩니다.
WebJobs는 Azure App Service의 기능으로 웹앱과 동일한 인스턴스에서 프로그램이나 스크립트를 실행할 수 있습니다. 모든 App Service 요금제는 추가 비용 없이 WebJobs를 지원합니다. 이 샘플에서는 예약된(트리거된) WebJob을 사용하여 1분마다 한 번씩 시스템 시간을 출력합니다.
필수 조건
- 활성 구독이 있는 Azure 계정. 무료로 계정을 만듭니다.
- Linux의 기존 App Service PHP 앱입니다. 이 빠른 시작에서는 PHP 앱이 사용됩니다.
- Always on을 앱에서 항상 사용하도록 설정해야 합니다.
- 앱 설정
WEBSITE_SKIP_RUNNING_KUDUAGENT이false로 설정되어 있는지 확인합니다.
샘플 WebJob 준비
미리 빌드된 샘플 프로젝트를 다운로드 하여 빠르게 시작합니다. 샘플에는 아래와 같이 콘솔에 현재 시간을 출력하는 PHP 파일이
webjob.php포함되어 있습니다.<?php // Get the current time $current_time = date("Y-m-d H:i:s"); // Display the current time echo "The current time is: " . $current_time; ?>다운로드한 zip 파일을 추출한 다음 부모 디렉터리 없이 파일만
webjob.php포함하는 새 zip 파일을 만듭니다. WebJobs를 사용하려면 실행 파일 또는 스크립트가 zip 파일의 루트에 있어야 합니다.
예약된 WebJob 만들기
Azure Portal에서 App Service 앱의 App Service 페이지로 이동합니다.
왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.
표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다. 파일 업로드의 경우 샘플 WebJob 준비 섹션에서 이전에 만든 .zip 파일을 선택해야 합니다.
설정 가치 Description 이름 웹잡 WebJob 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다. 파일 업로드 webjob.zip 루트 수준에 webjob.php가 포함된 .zip 파일입니다. 지원되는 파일 형식은 지원 파일 형식 섹션에 나열되어 있습니다.유형 자극받음 WebJob이 실행되는 시점을 지정합니다(연속 또는 트리거됨). 트리거 예약됨 예약 또는 수동입니다. 일정이 안정적으로 작동하도록 Always on이 활성화되어 있는지 확인합니다. CRON 식 0 0/1 * * * * 이 빠른 시작에서는 1분마다 실행되는 일정을 사용합니다. 구문에 대한 자세한 내용은 CRON 식을 참조하세요. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.
예약된 WebJob은 CRON 식에 정의된 일정에 따라 실행됩니다.
비고
CRON 식을 실행하는 데 사용되는 기본 표준 시간대는 UTC(협정 세계시)입니다. CRON 식이 다른 표준 시간대를 기반으로 실행되도록 하려면 WEBSITE_TIME_ZONE이라는 함수 앱에 대한 앱 설정을 만듭니다. 자세히 알아보려면 NCRONTAB 표준 시간대를 참조하세요.
WebJob 로그 검토
이전에 만든 WebJob에 대한 로그를 선택합니다.
출력은 다음과 비슷하게 표시됩니다.
정리
WebJob을 제거하려면 포털에서 WebJob을 선택하고 Delete을(를) 선택합니다.