중요합니다
Azure Functions 런타임 버전 1.x 지원은 2026년 9월 14일에 종료되었습니다. 전체 지원을 위해 앱을 버전 4.x로 마이그레이션합니다.
이 글은 런타임 1.x를 여전히 사용하는 함수 앱에 대한 주요 역사적 정보와 상세 참고문헌 링크를 보존합니다. 새로운 함수 앱에는 런타임 1.x를 사용하지 마세요.
런타임 1.x 범위
Azure Functions 런타임 1.x는 2026년 9월 14일에 지원이 종료되었으며, 신규 또는 기존 함수 앱에는 지원되지 않습니다. 런타임 1.x는 다음과 같은 특징을 가졌습니다:
- 이 게임은 Windows에서만 실행되었습니다.
- .NET 프레임워크와 자바스크립트 앱을 대상으로 한 C# 앱을 지원했습니다.
- C# 앱들은 프로세스 내에서 실행되었습니다. 런타임 1.x는 격리 워커 모델을 지원하지 않았습니다.
- 로컬 개발을 위해 Azure Functions Core Tools 버전 1.x를 사용했습니다. Core Tools 1.x는 Windows에서만 실행됩니다.
- 런타임에는 지원되는 바인딩이 포함되어 있었습니다. 이후 런타임 버전에서는 별도로 버전이 지정된 바인딩 확장 또는 확장 번들을 사용합니다.
런타임, 확장 및 프로그래밍 모델 버전
Azure Functions의 런타임 버전은 바인딩 확장, 확장 번들, 또는 언어 프로그래밍 모델에서 사용하는 버전과는 다릅니다. 다른 컴포넌트의 버전 라벨은 해당 앱이 Azure Functions 런타임 1.x를 사용한다는 의미가 아닙니다. 다음은 그 예입니다.
- Python v1과 v2 프로그래밍 모델은 런타임 4.x에서 실행됩니다.
- Node.js v3와 v4 프로그래밍 모델은 런타임 4.x에서 실행됩니다.
- 확장 번들과 결속 확장 패키지 버전은 런타임 버전과 독립적입니다.
런타임 4.x로 마이그레이션
앱을 완전한 지원으로 되돌리려면, runtime 1.x에서 runtime 4.x로 마이그레이션하세요. 마이그레이션 가이드는 다음과 같은 작업을 다룹니다:
- 런타임 1.x를 목표로 하는 앱을 식별하세요.
- C# 또는 JavaScript에 지원하는 대상을 선택하세요.
- 프로젝트, 바인딩, 앱 설정, host.json 파일을 업데이트하세요.
- 앱을 로컬에서 테스트하고 Azure에서 함수 앱을 업데이트하세요.
앱 설정만 FUNCTIONS_EXTENSION_VERSION 바꾸지 마세요. 런타임 업그레이드는 프로젝트, 코드, 바인딩, 구성 변경을 요구할 수 있습니다.
런타임 1.x에 특화된 앱 설정
이 더 이상 지원되지 않는 AzureWebJobsDashboard 설정은 런타임 1.x에서만 지원됩니다. 이 계정에는 Azure 포털의 모니터 탭에 로그를 저장하고 표시하는 데 사용되는 선택적 범용 저장 연결 문자열계정이 포함되어 있습니다.
| 키 | 샘플 값 |
|---|---|
AzureWebJobsDashboard |
DefaultEndpointsProtocol=https;AccountName=... |
런타임 1.x는 앱 설정을 지원 AZURE_FUNCTIONS_ENVIRONMENT 하지 않습니다.
이 값 ~1 은 FUNCTIONS_EXTENSION_VERSION 함수 앱을 런타임 1.x에 핀 고정합니다. 파일 시스템 키 저장소(AzureWebJobsSecretStorageType=files)가 기본값입니다.
사이트 속성은 functionsRuntimeAdminIsolationEnabled 런타임 1.x에서 사용할 수 없습니다. 이 설정은 FUNCTIONS_V2_COMPATIBILITY_MODE 런타임 1.x 앱에는 적용되지 않습니다.
Project와 언어 차이
런타임 1.x C# 클래스 라이브러리 프로젝트는 .NET 프레임워크를 대상으로 했으며 패키지 1.x 버전을 Microsoft.NET.Sdk.Functions 사용했습니다. 벌목에 쓸 TraceWriter 수 있겠네요. 현재 C# 프로젝트 모델과 마이그레이션 고려사항에 대해서는 .NET 클래스 라이브러리 개발자 가이드와 런타임 1.x 마이그레이션 가이드를 참조하세요.
C# 클래스 라이브러리 프로젝트
다음 예시는 런타임 1.x 프로젝트 파일의 관련 부분들을 보여줍니다:
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.24" />
</ItemGroup>
패키지 의존성에는 Microsoft.NET.Sdk.Functions 트리거와 바인딩이 포함됩니다. 1.x 프로젝트는 .NET 프레임워크를 목표로 하기 때문에 1.x 트리거와 결속을 의미합니다. 패키지는 또한 에 의존하고 간접WindowsAzure.Storage적으로 에 의존 Newtonsoft.Json 합니다. 이러한 의존성은 프로젝트가 목표 함수 런타임과 호환되는 버전을 사용하도록 보장합니다. 예를 들어, .NET Framework 4.6.1을 목표로 하는 Functions 런타임은 버전 11이 아닌 9.0.1과 Newtonsoft.Json 호환됩니다.
Application Insights 로깅에 사용되는 TraceWriter 런타임 1.x.
TraceWriter 구조화된 로그링을 지원하지 않습니다.
다음 예시는 a 를 TelemetryClient 생성하고, TrackMetricTrackDependency 를 사용하여 TrackEvent사용자 정의 텔레메트리를 기록합니다. 또한 함수 실행 컨텍스트를 사용하여 사용자 지정 텔레메트리와 현재 호출을 연관시킵니다.
사용자 지정 텔레메트리 예시
using System;
using System.Linq;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.DataContracts;
using Microsoft.ApplicationInsights.Extensibility;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Extensions.Http;
using Microsoft.Extensions.Logging;
namespace functionapp0915
{
public static class HttpTrigger2
{
private static string key = TelemetryConfiguration.Active.InstrumentationKey =
Environment.GetEnvironmentVariable(
"APPINSIGHTS_INSTRUMENTATIONKEY", EnvironmentVariableTarget.Process);
private static TelemetryClient telemetryClient =
new TelemetryClient() { InstrumentationKey = key };
[FunctionName("HttpTrigger2")]
public static async Task<HttpResponseMessage> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
HttpRequestMessage req, ExecutionContext context, ILogger log)
{
log.LogInformation("C# HTTP trigger function processed a request.");
DateTime start = DateTime.UtcNow;
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
dynamic data = await req.Content.ReadAsAsync<object>();
name = name ?? data?.name;
var evt = new EventTelemetry("Function called");
UpdateTelemetryContext(evt.Context, context, name);
telemetryClient.TrackEvent(evt);
var metric = new MetricTelemetry("Test Metric", DateTime.Now.Millisecond);
UpdateTelemetryContext(metric.Context, context, name);
telemetryClient.TrackMetric(metric);
var dependency = new DependencyTelemetry
{
Name = "GET api/planets/1/",
Target = "swapi.co",
Data = "https://swapi.co/api/planets/1/",
Timestamp = start,
Duration = DateTime.UtcNow - start,
Success = true
};
UpdateTelemetryContext(dependency.Context, context, name);
telemetryClient.TrackDependency(dependency);
}
private static void UpdateTelemetryContext(
TelemetryContext context,
ExecutionContext functionContext,
string userName)
{
context.Operation.Id = functionContext.InvocationId.ToString();
context.Operation.ParentId = functionContext.InvocationId.ToString();
context.Operation.Name = functionContext.FunctionName;
context.User.Id = userName;
}
}
}
런타임 1.x는 C# 스크립트(.csx)와 자바스크립트 함수도 지원했습니다. C# 스크립트는 런타임 1.x에만 국한되지 않으니, 일반적인 스크립트 안내는 C# 스크립트 개발자 참고 자료를 참고하세요. 런타임별 변경 사항은 마이그레이션 가이드를 사용하세요.
초기 C# 문법의 예시는 런타임 1.x 함수 템플릿을 참조하세요.
C# 스크립트 어셈블리 및 패키지
런타임 1.x C# 스크립트 함수에서는 다음 어셈블리들을 단순한 이름으로 참조할 수 있습니다:
Newtonsoft.JsonMicrosoft.WindowsAzure.StorageMicrosoft.ServiceBusMicrosoft.AspNet.WebHooks.ReceiversMicrosoft.AspNet.WebHooks.Common
런타임 1.x는 의존성을 정의하기 위해 project.json 파일을 사용했습니다. 다음 예시는 NuGet 패키지를 Microsoft.ProjectOxford.Face 추가합니다:
{
"frameworks": {
"net46": {
"dependencies": {
"Microsoft.ProjectOxford.Face": "1.1.0"
}
}
}
}
확장 번들은 런타임 1.x에서 지원되지 않습니다. 커스텀 NuGet 피드를 사용하려면 함수 앱 루트 폴더의 NuGet.Config 파일에 피드를 지정하세요. 자세한 내용은 참조 NuGet 동작 구성을 참조하세요.
Core Tools 1.x를 이용한 로컬 개발
Azure Functions Core Tools 버전 1.x는 런타임 1.x와 연동되어 있으며 Windows에서만 실행됩니다. 런타임 func host start을 시작하려면 . 현재 로컬 개발 지침은 Core Tools를 사용해 로컬 개발하는 Azure Functions를 참조하세요.
Visual Studio는 런타임 1.x Core Tools 버전을 %USERPROFILE%\AppData\Local\Azure.Functions.Cli 저장했고, 최신 버전을 사용했습니다. 프로젝트를 실행할 때 콘솔 출력에서 선택한 버전을 볼 수 있습니다:
[3/1/2018 9:59:53 AM] Starting Host (HostId=contoso2-1518597420, Version=2.0.11353.0, ProcessId=22020, Debug=False, Attempt=0, FunctionsExtensionVersion=)
Runtime 1.x host.json 참조
런타임 1.x 이후에 host.json 스키마와 설정이 변경되었습니다. 기존 구성을 검토할 때 런타임 1.x host.json 참조 를 보고, 마이그레이션 시 현재 host.json 참조 와 비교하세요.
Application Insights로 런타임 1.x 앱을 모니터링하세요
런타임 1.x는 다음과 같은 애플리케이션 인사이트 로그 카테고리를 사용합니다:
| 카테고리 | 테이블 / 표 | Description |
|---|---|---|
Function |
traces | 사용자 생성 로그로서 어떤 로그 수준도 될 수 있습니다. |
Host.Aggregator |
customMetrics | 구성 가능한 기간 동안 함수 호출의 수와 평균을 제공합니다. 기본값은 30초 또는 1,000개의 결과, 먼저 나오는 쪽입니다. 이러한 로그는 Information 수준에서 작성됩니다. |
Host.Executor |
traces | 함수 시작 및 완료 로그. 성공적인 실행은 , Information예외 사용 Error, 그리고 포이즌 큐 메시지와 같은 조건은 를 사용합니다 Warning. |
Host.Results |
요청 | 함수 실행의 성공 또는 실패. 이러한 로그는 Information 수준에서 작성됩니다. |
로그 수준 구성
런타임 1.x는 host.json에서 로그 logger.categoryFilter 레벨을 구성합니다:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Warning",
"categoryLevels": {
"Host.Results": "Information",
"Host.Aggregator": "Trace",
"Function": "Information"
}
}
}
}
여러 범주 이름이 같은 문자열로 시작하면, 더 구체적인 범주가 먼저 매칭됩니다. 다음 예시는 레벨을 제외한 Host.AggregatorError 모든 것을 기록합니다:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Information",
"categoryLevels": {
"Host": "Error",
"Function": "Error",
"Host.Aggregator": "Information"
}
}
}
}
샘플링 구성
기본 최대 텔레메트리 속도는 초당 5개입니다. 런타임 1.x는 다음과 같이 applicationInsights.sampling샘플링을 구성합니다:
{
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 5
}
}
}
다음 예시는 범주 필터링과 표본 추출을 결합한 것입니다:
{
"logger": {
"categoryFilter": {
"defaultLevel": "Warning",
"categoryLevels": {
"Function": "Error",
"Host.Aggregator": "Error",
"Host.Results": "Information",
"Host.Executor": "Warning"
}
}
},
"applicationInsights": {
"sampling": {
"isEnabled": true,
"maxTelemetryItemsPerSecond": 5
}
}
}
런타임 1.x는 함수별 구성을 지원하지 않습니다.
응용 인사이트 기능
런타임 1.x는 요청, 예외, 성능 카운터를 자동으로 수집했습니다. HTTP, Service Bus, Event Hubs, SQL 의존성을 자동으로 수집하지는 않았습니다. 안전한 제어 채널 없이 QuickPulse/Live 메트릭을 지원했고 샘플링도 지원했으나, 심장박동, Service Bus 또는 Event Hubs 상관관계, 완전 설정 가능한 텔레메트리 수집은 지원하지 않았습니다.
런타임 1.x에서 지원되지 않는 기능 및 동작
- 재시도 정책은 지원되지 않습니다.
- 가상 네트워크 트리거의 동적 규모 모니터링은 지원되지 않습니다.
- 프리미엄 및 전용 플랜에서는 기본 함수 실행 타임아웃이 제한이 없습니다. 소비 요금제에서는 기본 타임아웃이 5분이고 최대 타임아웃은 10분입니다.
- 원격 배포 패키지를 사용하는 함수 앱은 Azure Files 공유 없이는 실행할 수 없습니다.
런타임 1.x에 포함된 바인딩
Azure Functions runtime 1.x is retired. 런타임 4.x로 마이그레이션할 때는 현재 바인딩 확장 프로그램이나 확장 번들을 사용하고, 각 바인딩에서 구성 및 타입 변경을 검토하세요.
다음 바인딩들은 런타임 1.x에 포함되어 있었습니다. C# 속성 열은 코드에서 사용되는 짧은 이름들을 보여줍니다. 해당 클래스 이름에는 접미사가 붙 Attribute 습니다.BlobTriggerAttribute 대신 C# 스크립트 함수는 function.json 파일 내에서 바인딩을 정의합니다.
| Type | 트리거 | 입력 | 출력 | C# 속성 |
|---|---|---|---|---|
| Blob Storage | 예 | 예 | 예 |
[BlobTrigger] (트리거)[Blob] (입력/출력) |
| Azure Cosmos DB | 예 | 예 | 예 |
[CosmosDBTrigger] (트리거)[DocumentDB] (입력/출력) |
| 이벤트 그리드 | 예 | No | No | [EventGridTrigger] |
| 이벤트 허브 | 예 | No | 예 |
[EventHubTrigger] (트리거)[EventHub] (출력) |
| HTTP 및 웹후크 | 예 | No | 예 | [HttpTrigger] |
| IoT Hub | 예 | No | No | [EventHubTrigger] |
| 모바일 앱 | No | 예 | 예 | [MobileTable] |
| 알림 허브 | No | No | 예 | [NotificationHub] |
| 대기열 저장소 | 예 | No | 예 |
[QueueTrigger] (트리거)[Queue] (출력) |
| SendGrid | No | No | 예 | [SendGrid] |
| 서비스 버스 | 예 | No | 예 |
[ServiceBusTrigger] (트리거)[ServiceBus] (출력) |
| 테이블 저장 | No | 예 | 예 | [Table] |
| 타이머 | 예 | No | No | [TimerTrigger] |
| Twilio | No | No | 예 | [TwilioSms] |
런타임 1.x를 사용하는 함수 앱은 자동으로 Microsoft.Azure를 참조합니다. WebJobs NuGet 패키지 (버전 2.x).
Blob Storage, Queue Storage, Table Storage 트리거와 바인딩은 WindowsAzure.Storage NuGet 패키지 버전 7.2.1을 사용합니다. 다른 버전의 스토리지 SDK를 참조하고 함수 서명에서 스토리지 SDK 타입에 바인딩하면, Functions 런타임이 해당 타입에 바인딩할 수 없다고 할 수 있습니다. 프로젝트가 WindowsAzure.Storage 7.2.1을 참조하는지 확인하세요.
런타임 1.x에서의 Blob Storage 바인딩
런타임 1.x는 폐기된 Microsoft. WindowsAzure.Storage 네임스페이스에서 노출된 타입을 제공합니다. Azure의 최신 타입. Storage.Blobs는 더 나온 확장과 런타임 4.x가 필요합니다.
런타임 1.x에서 스토리지 바인딩 큐
런타임 1.x는 폐기된 Microsoft. WindowsAzure.Storage 네임스페이스에서 노출된 타입을 제공합니다. Azure의 최신 타입. 스토리지. 큐는 후속 확장과 런타임 4.x가 필요합니다.
큐 저장소 바인딩 설정에 대해서는 런타임 1.x host.json 참조의 큐 섹션을 참조하세요. 런타임 1.x에서는 설정이 maxPollingInterval 밀리초 단위로 표현됩니다. 이후 런타임 버전에서는 데이터 타입이 .로 변경됩니다 TimeSpan.
런타임 1.x에서의 테이블 스토리지 바인딩
런타임 1.x는 더 이상 지원되지 않는 Microsoft. WindowsAzure.Storage.Table 네임스페이스에서 가져온 타입을 노출했습니다. Azure의 최신 타입. Data.Tables는 Azure Tables 확장 기능과 runtime 4.x가 필요합니다.
입력 예제
다음 C# 함수는 단일 테이블 행을 읽습니다. 큐에 전송되는 모든 메시지마다 함수가 트리거됩니다. 행 키 값 {queueTrigger}는 행 키를 메시지 문자열인 메시지 메타데이터에 바인딩합니다.
public class TableStorage
{
public class MyPoco
{
public string PartitionKey { get; set; }
public string RowKey { get; set; }
public string Text { get; set; }
}
[FunctionName("TableInput")]
public static void TableInput(
[QueueTrigger("table-items")] string input,
[Table("MyTable", "MyPartition", "{queueTrigger}")] MyPoco poco,
ILogger log)
{
log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
}
}
다음 C# 함수는 클래스가 파생된 TableEntity여러 테이블 행을 MyPoco 읽습니다.
public class TableStorage
{
public class MyPoco : TableEntity
{
public string Text { get; set; }
}
[FunctionName("TableInput")]
public static void TableInput(
[QueueTrigger("table-items")] string input,
[Table("MyTable", "MyPartition")] IQueryable<MyPoco> pocos,
ILogger log)
{
foreach (MyPoco poco in pocos)
{
log.LogInformation($"PK={poco.PartitionKey}, RK={poco.RowKey}, Text={poco.Text}");
}
}
}
입력 사용
키로 특정 항목을 반환하려면 TableEntity에서 파생된 결합 매개 변수를 사용합니다. 구체 TableName적인 , PartitionKey, RowKey 는 테이블에서 특정 실체를 얻기 위해 사용됩니다.
여러 항목을 반환하는 쿼리를 실행하려면 IQueryable<T>에서 상속되는 형식의 에 바인딩합니다.
출력 사용
out 매개 변수 및 반환 형식에 대해 다음 형식이 지원됩니다.
-
PartitionKey및RowKey속성을 포함하는 POCO(Plain Old CLR Object)입니다.ITableEntity를 구현하거나TableEntity를 상속하여 이러한 속성을 동반할 수 있습니다. -
ICollector<T>또는IAsyncCollector<T>여기서T는PartitionKey및RowKey속성을 포함합니다.ITableEntity를 구현하거나TableEntity를 상속하여 이러한 속성을 동반할 수 있습니다.
스토리지 SDK에서 메서드 매개 변수로 바인딩할 CloudTable수도 있습니다. 그런 다음 해당 개체를 사용하여 테이블에 쓸 수 있습니다.
Event Hubs bindings in runtime 1.x
런타임 1.x는 이벤트 허브 바인딩을 포함했고 별도의 확장이 필요하지 않았습니다. 이 문서는 더 이상 지원되지 않는 Microsoft.Azure. EventHubs.EventData 유형이 노출되었습니다. 이벤트 허브는 단일 이벤트 string[]EventData[] 에 대해 , JSON-직렬화 가능한 타입, string, byte[] 그리고 배치에 대해 지원합니다EventData. 지원되는 EventData출력 바인딩, JSON-직렬화 가능한 타입, string, 그리고 byte[].
이벤트 허브 트리거나 출력 function.json있는 경우 런타임 1.x는 이벤트 허브 이름에 해당 path 속성을 사용합니다. 이후 런타임 버전 eventHubName에서는 . 이벤트 허브 이름이 연결 문자열에 함께 있을 경우, 그 값은 런타임에 해당 속성을 덮어씁니다.
런타임 1.x host.json 파일은 최상위 eventHub 객체를 사용합니다:
{
"eventHub": {
"maxBatchSize": 64,
"prefetchCount": 256,
"batchCheckpointFrequency": 1
}
}
| Property | 기본값 | Description |
|---|---|---|
maxBatchSize |
64 | 수신 루프 당 받은 최대 이벤트 수입니다. |
prefetchCount |
300 | 기본 EventProcessorHost에서 사용하는 기본 프리페치 수입니다. |
batchCheckpointFrequency |
1 | Event Hubs 커서 검사점을 만들기 전에 처리할 이벤트 일괄 처리 수입니다. |
전체 구성 참조는 런타임 1.x host.json 참조 섹션을 참조하세요eventHub.
런타임 1.x에서의 이벤트 그리드 바인딩
3.x 이전 버전의 이벤트 그리드 확장 버전은 CloudEvents 스키마를 지원하지 않습니다. 이 스키마를 사용하려면 HTTP 트리거를 사용하거나 런타임 4.x와 이벤트 그리드 확장 3.x로 마이그레이션하세요.
이벤트 그리드 출력 바인딩은 런타임 2.x 이후 버전에서만 제공됩니다.
바인딩 형식
런타임 1.x 확장은 다음과 같은 매개변수 유형을 지원합니다. CloudEvents 스키마를 지원하지 않으며, 이 스키마는 Event Grid 확장 3.x가 필요합니다.
| Binding | 매개 변수 형식 |
|---|---|
| 이벤트 그리드 트리거 | Newtonsoft.Json.Linq.JObjectstring |
트리거 사용
프로세스 내 C# 클래스 라이브러리 함수는 다음과 같은 이벤트 그리드 트리거 유형을 지원합니다:
Newtonsoft.Json.Linq.JObjectSystem.String
웹훅 엔드포인트와 시스템 키
런타임 1.x 이벤트 그리드 트리거의 호스팅 웹훅 엔드포인트는 다음과 같은 URL 패턴을 사용합니다:
https://{functionappname}.azurewebsites.net/admin/extensions/EventGridExtensionConfig?functionName={functionname}&code={systemkey}
관리자 API에서 이벤트 그리드 시스템 키를 얻으려면, 다음 요청에서 함수 앱 마스터 키를 사용하세요:
https://{functionappname}.azurewebsites.net/admin/host/systemkeys/eventgridextensionconfig_extension?code={masterkey}
로컬 테스트를 위해 이벤트 그리드 트리거 엔드포인트는 다음과 같은 URL 패턴을 사용합니다:
http://localhost:7071/admin/extensions/EventGridExtensionConfig?functionName={FUNCTION_NAME}
런타임 1.x에서의 Service Bus 바인딩
런타임 1.x는 더 이상 지원되지 않는 Microsoft. ServiceBus.메시징 네임스페이스에서 타입을 노출시켰습니다. Azure의 최신 타입. Messaging.ServiceBus는 Service Bus 확장 5.x 이상과 runtime 4.x가 필요합니다.
2026년 9월 30일, Azure Service Bus SDK 라이브러리는 WindowsAzure.ServiceBus, Microsoft.Azure. ServiceBus, 그리고 com.microsoft.azure. ServiceBus는 종료됩니다. 이 라이브러리들은 Azure SDK 가이드라인을 준수하지 않습니다. Service Bus Messaging Protocol(SBMP) 지원도 종료됩니다. 은퇴 후에도 구형 라이브러리를 계속 사용할 수 있지만, Microsoft로부터 공식 지원과 업데이트를 받지 못할 것입니다. 자세한 내용은 지원 종료 공지를 참조하세요.
트리거 사용
큐 또는 주제 메시지 트리거는 다음과 같은 매개변수 유형을 지원합니다:
- BrokeredMessage는BrokeredMessage.GetBody<T>() 메서드를 통해 디직렬화된 메시지를 제공합니다.
-
MessageReceiver 는 메시지 컨테이너로부터 메시지를 수신하고 확인합니다. 이 타입은 가 로 설정
false될 때autoComplete필요합니다.
C# 클래스 라이브러리에서는 속성의 생성자가 큐 이름이나 토픽 이름과 구독을 사용합니다. 또한 연결의 접근 권한을 지정할 수도 있습니다. 액세스 권한을 지정하지 않으면 기본값은 Manage입니다.
Service Bus 계정 선택
ServiceBusAccountAttribute를 사용하여 Service Bus 계정을 지정하세요. 생성자는 Service Bus 연결 문자열 포함하는 앱 설정의 이름을 사용합니다. 속성은 매개변수, 메서드, 클래스 수준에서 적용하세요. 다음 예시는 클래스 수준과 메서드 수준 속성을 보여줍니다:
[ServiceBusAccount("ClassLevelServiceBusAppSetting")]
public static class AzureFunctions
{
[ServiceBusAccount("MethodLevelServiceBusAppSetting")]
[FunctionName("ServiceBusQueueTriggerCSharp")]
public static void Run(
[ServiceBusTrigger("myqueue", AccessRights.Manage)]
string myQueueItem, ILogger log)
{
// ...
}
}
다음 순서가 어떤 Service Bus 계정을 사용할지 결정합니다:
-
ServiceBusTrigger특성의 속성입니다Connection. -
ServiceBusAccount특성과 동일한 매개 변수에 적용된ServiceBusTrigger특성 -
ServiceBusAccount함수에 적용된 특성입니다. -
ServiceBusAccount클래스에 적용된 특성입니다. -
AzureWebJobsServiceBus앱 설정입니다.
메시지 메타데이터
다음 속성들은 BrokeredMessage 및 MessageReceiver 클래스의 구성원입니다.
| Property | Type | Description |
|---|---|---|
ContentType |
string |
송신자와 수신자가 애플리케이션별 논리를 위해 사용하는 콘텐츠 유형 식별자입니다. |
CorrelationId |
string |
상관 관계 ID. |
DeadLetterSource |
string |
죽은 문자 출처. |
DeliveryCount |
Int32 |
배달 횟수입니다. |
EnqueuedTimeUtc |
DateTime |
조정 우주 시(UTC)로 대기된 시간입니다. |
ExpiresAtUtc |
DateTime |
만료 시간(UTC)입니다. |
Label |
string |
애플리케이션별 레이블입니다. |
MessageId |
string |
Service Bus 사용하는 경우 중복 메시지를 식별하는 데 사용할 수 있는 사용자 정의 값입니다. |
MessageReceiver |
MessageReceiver |
Service Bus 메시지 수신자입니다. 메시지를 포기하거나 완성하거나 데드레터로 작성하는 데 사용할 수 있습니다. |
MessageSession |
MessageSession |
세션 사용 큐 및 토픽을 위한 메시지 수신자입니다. |
ReplyTo |
string |
회신 대기열 주소입니다. |
SequenceNumber |
long |
Service Bus에서 메시지에 할당된 고유 번호입니다. |
To |
string |
발송 주소. |
UserProperties |
IDictionary<string, object> |
보낸 사람이 설정한 속성입니다. |
출력 사용
메타데이터가 포함된 메시지를 보낼 때 BrokeredMessage 형식을 사용합니다. 매개변수를 타입 속성으로 return 정의하세요. 함수가 종료될 때 매개변수 값이 null이라면, 함수는 메시지를 생성하지 않습니다.
function.json 바인딩 accessRights 에 대해 는 manage 또는 listen 를 수락하며, 기본값은 입니다.manage 만약 연결 문자열에 Manage 권한이 없다면, 런타임이 관리 작업을 시도하지 못하도록 로 listen 설정 accessRights 하세요.
런타임이 큐가 존재하지 않으면 큐를 생성하고, 로 설정 accessRightsmanage하면 됩니다.
호스트 설정
Service Bus 바인딩 설정에 대해서는 런타임 1.x host.json 참고 자료를 참조하세요.
런타임 1.x에서의 HTTP 및 웹훅 바인딩
HTTP 트리거 함수는 기본적으로 빈 몸체로 반환 HTTP 200 OK 됩니다. 이후 런타임 버전 HTTP 204 No Content에서는 .
function.json의 HTTP 트리거에 대해 해당 속성을 사용하여 webHookType 지정된 제공자의 웹훅 수신자로 트리거를 설정하세요. 이 속성은 런타임 1.x에만 해당됩니다.
런타임 1.x는 인증된 클라이언트 정보에 대한 접근을 지원하지 않습니다.
웹훅 모드
웹훅 템플릿은 웹훅 페이로드에 대한 추가 검증을 제공합니다. 바인딩 속성은 webHookType 웹훅 제공자를 보여주고 지원되는 페이로드를 제어합니다:
| 형식 값 | Description |
|---|---|
genericJson |
특정 공급자에 대한 논리가 없는 범용 웹후크 엔드포인트입니다. 이 설정은 콘텐츠 타입이 포함된 application/json HTTP POST로의 요청을 제한합니다. |
github |
이 함수는 GitHub 웹후크에 응답 합니다. GitHub 웹후크와 함께 authLevel 속성을 사용하지 마세요. |
slack |
함수는 Slack 웹후크에 응답합니다. Slack 웹후크와 함께 authLevel 속성을 사용하지 마세요. |
를 설정할 webHookType때는 속성을 설정 methods 하지 마세요.
GitHub 웹훅에 응답하려면 HTTP 트리거가 있는 함수를 생성하고, 로 github설정 webHookType 한 후 GitHub 저장소의 Add webhook 페이지에 URL과 API 키를 복사하세요.
슬랙 웹훅은 토큰을 생성하므로, 그 토큰으로 함수별 키를 설정하세요.
웹훅 수신기 구성 요소는 웹훅 권한을 담당합니다. 메커니즘은 웹훅 유형에 따라 다르지만, 각 메커니즘은 키에 의존합니다. 기본적으로 함수 키가 사용됩니다 default . 다른 키를 사용하려면 웹훅 제공자를 다음 방법 중 하나로 키 이름을 전송하도록 설정하세요:
- 쿼리 문자열 매개변수, 예를 들어
clientidhttps://<APP_NAME>.azurewebsites.net/api/<FUNCTION_NAME>?clientid=<KEY_NAME>. - 요청 헤더에 있습니다
x-functions-clientid.
HTTP 바인딩 설정에 대해서는 런타임 1.x host.json 참조의 HTTP 섹션을 참조하세요.
런타임 1.x에서의 워밍업 트리거
런타임 1.x는 워밍업 트리거를 지원하지 않습니다.
런타임 1.x에서의 SendGrid 바인딩
NuGet 패키지, 버전 2.x를 설치하여 프로젝트에 확장을 추가합니다.
SendGrid 바인딩 설정에 대해서는 런타임 1.x host.json 참조의 SendGrid 섹션을 참조하세요.
Twilio binding in runtime 1.x
NuGet 패키지 버전 1.x를 설치하여 프로젝트에 확장을 추가합니다.
런타임 1.x의 경우, function.json 파일에서 다음과 같은 바인딩 구성 속성을 사용하세요:
| function.json 속성 | Description |
|---|---|
| type |
twilioSms로 설정합니다. |
| 방향 |
out로 설정합니다. |
| name | Twilio SMS 텍스트 메시지에 대한 함수 코드에 사용되는 변수 이름입니다. |
| accountSid | Twilio 계정 Sid ()를 보관하는 앱 이름으로 설정하세요 (TwilioAccountSid). 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsTwilioAccountSid입니다. |
| authToken | Twilio 인증 토큰을 보유한 앱 설정의 이름으로 설정하세요 (TwilioAccountAuthToken). 설정하지 않으면 기본 앱 설정 이름은 AzureWebJobsTwilioAuthToken입니다. |
| to | SMS 문자가 전송되는 전화번호로 설정하세요. |
| 이후 | SMS 문자가 발신하는 전화번호로 설정하세요. |
| body | 함수에 동적으로 설정할 필요가 없다면 SMS 문자 메시지를 하드코딩하는 방법을 사용하세요. |
이 글에 보존된 구속 정보는 기존 앱을 이해하는 데만 사용하세요. 앱을 업데이트할 때는 런타임 마이그레이션 가이드와 최신 바인딩 문서를 따르세요.
자주 묻는 질문
Azure Functions 런타임 1.x가 여전히 지원되나요?
No. Azure Functions 런타임 1.x 지원은 2026년 9월 14일에 종료되었습니다. 영향을 받은 앱은 완전한 지원을 위해 런타임 4.x로 마이그레이션하세요.
Python v1이나 Node.js v4 프로그래밍 모델이 런타임 1.x를 사용하나요?
No. 언어 프로그래밍 모델 버전은 런타임 버전과 독립적입니다. Python v1 및 v2 프로그래밍 모델과 Node.js v3 및 v4 프로그래밍 모델은 런타임 4.x에서 실행됩니다.