다음을 통해 공유


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# 함수를 만들 때 주로 사용됩니다.

다음 예제에서는 앱에 추가할 때 각 새 인스턴스에서 실행되는 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 이름(대/소문자 구분 안 함)을 사용하면 됩니다.

구성

메서드에 전달된 개체에 options 설정해야 하는 속성이 app.warmup() 없습니다.

구성

다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.

function.json 속성 설명
type 필수 - warmupTrigger으로 설정해야 합니다.
direction 필수 - in으로 설정해야 합니다.
이름 필수 - 함수 코드에 사용되는 변수 이름입니다. 바인딩 매개 변수에는 warmupContextname이 권장됩니다.

전체 예제는 예제 섹션을 참조하세요.

사용

다음 고려 사항은 C#에서 준비 함수를 사용할 때 적용됩니다.

  • 함수의 이름은 Function 특성을 사용하여 warmup(대/소문자 구분하지 않음)으로 지정해야 합니다.
  • 반환 값 특성은 필요하지 않습니다.
  • Microsoft.Azure.Functions.Worker.Extensions.Warmup 패키지 사용
  • 함수에 개체 인스턴스를 전달할 수 있습니다.

함수 이름은 FunctionName 주석을 사용하여 warmup(대/소문자 구분하지 않음)으로 지정해야 합니다.

일반적인 사용 조언은 페이지 맨 위에 있는 고려 사항 목록을 참조하세요.

function.json의 함수 형식은 warmupTrigger로 설정해야 합니다.

다음 단계