Azure Functions 준비 트리거
이 문서에서는 Azure Functions에서 준비 트리거를 사용하는 방법을 설명합니다. 실행 중인 함수 앱의 크기를 조정하기 위해 인스턴스가 추가되면 준비 트리거가 호출됩니다. 준비 트리거를 사용하면 함수 앱의 새 인스턴스가 시작될 때 실행되는 함수를 정의할 수 있습니다. 준비 트리거를 사용하여 사용자 지정 종속성을 미리 로드하여 함수가 요청 처리를 즉시 시작할 준비가 되도록 할 수 있습니다. 준비 트리거에 대한 일부 작업에는 앱에서 트래픽 수신을 시작하기 전에 연결 열기, 종속성 로드 또는 기타 사용자 지정 논리 실행이 포함될 수 있습니다.
준비 트리거를 사용할 때 다음 고려 사항이 적용됩니다.
- 준비 트리거는 사용량 플랜에서 실행되는 앱에서 사용할 수 없습니다.
- 준비 트리거는 Functions 런타임 버전 1.x에서 지원되지 않습니다.
- 준비 트리거에 대한 지원은 모든 개발 환경에서 기본적으로 제공됩니다. 패키지를 수동으로 설치하거나 확장을 등록할 필요는 없습니다.
- 함수 앱당 하나의 준비 트리거 함수만 있을 수 있으며 인스턴스가 이미 실행 중인 후에는 호출할 수 없습니다.
- 준비 트리거는 다시 시작 또는 다른 비스케일링 시작이 아닌 스케일 아웃 작업 중에만 호출됩니다. 논리가 준비 트리거에 의존하지 않고 필요한 모든 종속성을 로드할 수 있는지 확인합니다. 지연 로딩은 이 목표를 달성하기 위한 좋은 패턴입니다.
- 준비 트리거에 의해 만들어진 종속성은 앱의 다른 함수와 공유되어야 합니다. 자세한 내용은 정적 클라이언트를 참조하세요.
- 기본 제공 인증(Easy Auth라고도 함)을 사용하는 경우 준비 트리거가 호출되려면 HTTPS만 사용하도록 설정해야 합니다.
예시
C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.
- 격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다.
- In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다.
- C# 스크립트: Azure Portal에서 C# 함수를 만들 때 주로 사용됩니다.
Important
In Process 모델에 대한 지원은 2026년 11월 10일에 종료됩니다. 전체 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.
다음 예제에서는 앱에 추가할 때 각 새 인스턴스에서 실행되는 C# 함수 를 보여 줍니다.
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public static class Warmup
{
[Function(nameof(Warmup))]
public static void Run([WarmupTrigger] object warmupContext, FunctionContext context)
{
var logger = context.GetLogger(nameof(Warmup));
logger.LogInformation("Function App instance is now warm!");
}
}
}
다음 예는 각각의 새 인스턴스가 앱에 추가될 때 실행되는 준비 트리거를 보여 줍니다.
@FunctionName("Warmup")
public void warmup( @WarmupTrigger Object warmupContext, ExecutionContext context) {
context.getLogger().info("Function App instance is warm.");
}
다음 예제에서는 앱에 추가할 때 각 새 인스턴스에서 실행되는 준비 트리거가 있는 JavaScript 함수 를 보여 줍니다.
const { app } = require('@azure/functions');
app.warmup('warmupTrigger', {
handler: (warmupContext, context) => {
context.log('Function App instance is warm.');
},
});
다음 예제에서는 앱에 추가할 때 각 새 인스턴스에서 실행되는 준비 트리거가 있는 TypeScript 함수 를 보여 줍니다.
import { app, InvocationContext, WarmupContext } from '@azure/functions';
export async function warmupFunction(warmupContext: WarmupContext, context: InvocationContext): Promise<void> {
context.log('Function App instance is warm.');
}
app.warmup('warmup', {
handler: warmupFunction,
});
function.json 파일은 다음과 같습니다.
{
"bindings": [
{
"type": "warmupTrigger",
"direction": "in",
"name": "warmupContext"
}
]
}
PowerShell 예제 코드가 보류 중입니다.
다음 예는 function.json 파일의 준비 트리거와 앱에 추가될 때 각각의 새 인스턴스에서 실행되는 Python 함수를 보여 줍니다.
함수의 이름을 지정 warmup
해야 하며(대/소문자를 구분하지 않는) 앱당 하나의 준비 함수만 있을 수 있습니다.
function.json 파일은 다음과 같습니다.
{
"bindings": [
{
"type": "warmupTrigger",
"direction": "in",
"name": "warmupContext"
}
]
}
자세한 내용은 구성을 참고하시기 바랍니다.
다음은 Python 코드입니다.
import logging
import azure.functions as func
def main(warmupContext: func.Context) -> None:
logging.info('Function App instance is warm.')
특성
In Process 및 격리된 작업자 프로세스 C# 라이브러리는 모두 WarmupTrigger
특성을 사용하여 함수를 정의합니다. C# 스크립트는 대신 function.json 구성 파일을 사용합니다.
WarmupTrigger
특성을 사용하여 함수를 정의합니다. 이 특성에는 매개 변수가 없습니다.
주석
준비 트리거에는 주석이 필요하지 않습니다. FunctionName
주석에 warmup
이름(대/소문자 구분 안 함)을 사용하면 됩니다.
구성
다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.
function.json 속성 | 설명 |
---|---|
type | 필수 - warmupTrigger 으로 설정해야 합니다. |
direction | 필수 - in 으로 설정해야 합니다. |
이름 | 필수 - 함수 코드에 사용되는 변수 이름입니다. 바인딩 매개 변수에는 warmupContext 의 name 이 권장됩니다. |
전체 예제는 예제 섹션을 참조하세요.
사용
다음 고려 사항은 C#에서 준비 함수를 사용할 때 적용됩니다.
- 함수의 이름은
Function
특성을 사용하여warmup
(대/소문자 구분하지 않음)으로 지정해야 합니다. - 반환 값 특성은 필요하지 않습니다.
Microsoft.Azure.Functions.Worker.Extensions.Warmup
패키지 사용- 함수에 개체 인스턴스를 전달할 수 있습니다.
함수 이름은 FunctionName
주석을 사용하여 warmup
(대/소문자 구분하지 않음)으로 지정해야 합니다.
function.json의 함수 형식은 warmupTrigger
로 설정해야 합니다.