Azure Functions에서 출력 바인딩을 설정하여 새 Azure Queue Storage 메시지를 만들 수 있습니다.
설정 및 구성 세부 정보에 대한 자세한 내용은 개요를 참조하세요.
중요합니다
이 문서에서는 탭을 사용하여 여러 버전의 Node.js 프로그래밍 모델을 지원합니다. v4 모델은 일반적으로 사용 가능하며 JavaScript 및 TypeScript 개발자를 위해 보다 유연하고 직관적인 환경을 제공하도록 설계되었습니다. v4 모델의 작동 방식에 대한 자세한 내용은 Azure Functions Node.js 개발자 가이드를 참조하세요. v3과 v4의 차이점에 대해 자세히 알아보려면 마이그레이션 가이드를 참조하세요.
Azure Functions는 Python에 대해 두 가지 프로그래밍 모델을 지원합니다. 바인딩을 정의하는 방법은 선택한 프로그래밍 모델에 따라 달라집니다.
Python v2 프로그래밍 모델을 사용하면 Python 함수 코드에서 직접 데코레이터를 사용하여 바인딩을 정의할 수 있습니다. 자세한 내용은 Python 개발자 가이드를 참조하세요.
이 문서에서는 두 프로그래밍 모델을 모두 지원합니다.
예시
현재 이 바인딩에 대한 Go 지원은 제공되지 않습니다.
C# 함수는 다음 C# 모드 중 하나를 사용하여 만들 수 있습니다.
-
격리된 작업자 모델: 런타임에서 격리된 작업자 프로세스에서 실행되는 컴파일된 C# 함수입니다. LTS 및 비 LTS 버전 .NET 및 .NET Framework에서 실행되는 C# 함수를 지원하려면 격리된 작업자 프로세스가 필요합니다. 격리된 작업자 프로세스 함수에 대한 확장은
Microsoft.Azure.Functions.Worker.Extensions.*네임스페이스를 사용합니다. -
In Process 모델: Functions 런타임과 동일한 프로세스에서 실행되는 컴파일된 C# 함수입니다. 이 모델의 변형에서는 주로 C# 포털 편집에 지원되는 C# 스크립팅을 사용하여 Functions를 실행할 수 있습니다. In Process 함수에 대한 확장은
Microsoft.Azure.WebJobs.Extensions.*네임스페이스를 사용합니다.
중요합니다
In Process 모델에 대한 지원은 2026년 11월 10일에 종료됩니다. 전체 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.
[Function(nameof(QueueInputOutputFunction))]
[QueueOutput("output-queue")]
public string[] QueueInputOutputFunction([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
{
// Use a string array to return more than one message.
string[] messages = {
$"Album name = {myQueueItem.Name}",
$"Album songs = {myQueueItem.Songs}"};
_logger.LogInformation("{msg1},{msg2}", messages[0], messages[1]);
// Queue Output messages
return messages;
}
Queue Storage에 대한 출력 바인딩을 구성하는 방법에 대한 엔드 투 엔드 예제는 다음 문서 중 하나를 참조하세요.
다음 예제에서는 HTTP 요청에 의해 트리거되는 경우 큐 메시지를 만드는 Java 함수를 보여 줍니다.
@FunctionName("httpToQueue")
@QueueOutput(name = "item", queueName = "myqueue-items", connection = "MyStorageConnectionAppSetting")
public String pushToQueue(
@HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
final String message,
@HttpOutput(name = "response") final OutputBinding<String> result) {
result.setValue(message + " has been added.");
return message;
}
Java 함수 런타임 라이브러리에서 값이 @QueueOutput Queue Storage에 기록되는 매개 변수에 주석을 사용합니다. 매개 변수 형식은 POJO의 모든 네이티브 Java 형식인 위치 OutputBinding<T> 여야 합니다T.
Queue Storage에 대한 출력 바인딩을 구성하는 방법에 대한 엔드 투 엔드 예제는 다음 문서 중 하나를 참조하세요.
다음 예에서는 수신된 각 HTTP 요청에 대한 큐 항목을 만드는 HTTP 트리거 TypeScript 함수를 보여 줍니다.
import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
}
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: httpTrigger1,
});
여러 메시지를 출력하려면 단일 개체 대신 배열을 반환합니다. 예시:
context.extraOutputs.set(queueOutput, ['message 1', 'message 2']);
다음 예에서는 수신된 각 HTTP 요청에 대한 큐 항목을 만드는 HTTP 트리거 JavaScript 함수를 보여 줍니다.
const { app, output } = require('@azure/functions');
const queueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'MyStorageConnectionAppSetting',
});
app.http('httpTrigger1', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [queueOutput],
handler: async (request, context) => {
const body = await request.text();
context.extraOutputs.set(queueOutput, body);
return { body: 'Created queue item.' };
},
});
여러 메시지를 출력하려면 단일 개체 대신 배열을 반환합니다. 예시:
context.extraOutputs.set(queueOutput, ['message 1', 'message 2']);
Queue Storage에 대한 출력 바인딩을 구성하는 방법에 대한 엔드 투 엔드 예제는 다음 문서 중 하나를 참조하세요.
다음 코드 예제에서는 HTTP 트리거 함수에서 큐 메시지를 출력하는 방법을 보여 줍니다. 의 type 구성 섹션은 queue 출력 바인딩을 정의합니다.
{
"bindings": [
{
"authLevel": "anonymous",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "Msg",
"queueName": "outqueue",
"connection": "MyStorageConnectionAppSetting"
}
]
}
PowerShell 함수는 해당 바인딩 구성을 사용하여 Push-OutputBinding을 통해 큐 메시지를 만들 수 있습니다. 이 예제에서는 쿼리 문자열 또는 본문 매개 변수에서 메시지를 만듭니다.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = $Request.Query.Message
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
한 번에 여러 메시지를 보내려면 메시지 배열을 정의하고 큐 출력 바인딩에 메시지를 보내는 데 사용합니다 Push-OutputBinding .
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = @("message1", "message2")
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Queue Storage에 대한 출력 바인딩을 구성하는 방법에 대한 엔드 투 엔드 예제는 다음 문서 중 하나를 참조하세요.
다음 예제에서는 단일 값 및 여러 값을 스토리지 큐에 출력하는 방법을 보여 줍니다. function.json 데 필요한 구성은 어느 쪽이든 동일합니다. 이 예제는 v1 또는 v2 Python 프로그래밍 모델을 사용하는지 여부에 따라 달라집니다.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="QueueOutput1")
@app.route(route="message")
@app.queue_output(arg_name="msg",
queue_name="<QUEUE_NAME>",
connection="<CONNECTION_SETTING>")
def main(req: func.HttpRequest, msg: func.Out[str]) -> func.HttpResponse:
input_msg = req.params.get('name')
logging.info(input_msg)
msg.set(input_msg)
logging.info(f'name: {name}')
return 'OK'
Queue Storage에 대한 출력 바인딩을 구성하는 방법에 대한 엔드 투 엔드 예제는 다음 문서 중 하나를 참조하세요.
특성
C# 라이브러리에서 출력 바인딩을 정의하는 특성은 C# 클래스 라이브러리가 실행되는 모드에 따라 다릅니다.
격리된 작업자 프로세스에서 실행할 때 다음 예제와 같이 큐 이름을 사용하는 QueueOutputAttribute를 사용합니다.
[Function(nameof(QueueInputOutputFunction))]
[QueueOutput("output-queue")]
public string[] QueueInputOutputFunction([QueueTrigger("input-queue")] Album myQueueItem, FunctionContext context)
격리된 작업자 프로세스에서 실행할 때 반환된 변수만 지원됩니다. 출력 매개 변수를 사용할 수 없습니다.
데코레이터
Python v2 프로그래밍 모델에만 적용됩니다.
데코레이터를 사용하여 정의된 Python v2 함수의 경우 다음 속성은 queue_output다음과 같습니다.
| 속성 | 설명 |
|---|---|
arg_name |
함수 코드에서 큐를 나타내는 변수의 이름입니다. |
queue_name |
큐 이름입니다. |
connection |
Azure 큐에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
function.json 사용하여 정의된 Python 함수는 구성 섹션을 참조하세요.
주석
QueueOutput 주석을 사용하면 함수의 출력으로 메시지를 작성할 수 있습니다. 다음 예제에서는 큐 메시지를 만드는 HTTP 트리거 함수를 보여줍니다.
package com.function;
import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;
public class HttpTriggerQueueOutput {
@FunctionName("HttpTriggerQueueOutput")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "message", queueName = "messages", connection = "MyStorageConnectionAppSetting") OutputBinding<String> message,
final ExecutionContext context) {
message.setValue(request.getQueryParameters().get("name"));
return request.createResponseBuilder(HttpStatus.OK).body("Done").build();
}
}
| 속성 | 설명 |
|---|---|
name |
함수 서명에서 매개 변수 이름을 선언합니다. 함수가 트리거되면 해당 매개 변수의 값이 큐 메시지의 내용을 포함합니다. |
queueName |
스토리지 계정에서 큐 이름을 선언합니다. |
connection |
스토리지 계정 연결 문자열 가리킵니다. |
QueueOutput 주석과 연결된 매개 변수는 OutputBinding<T> 인스턴스로 형식이 지정됩니다.
구성
Python v1 프로그래밍 모델에만 적용됩니다.
다음 표에서는 options 메서드에 전달된 output.storageQueue() 개체에 설정할 수 있는 속성에 대해 설명합니다.
| 속성 | 설명 |
|---|---|
| queueName | 큐 이름입니다. |
| 연결 | Azure 큐에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.
| function.json 속성 | 설명 |
|---|---|
| 유형 |
queue로 설정해야 합니다. 이 속성은 사용자가 Azure Portal에서 트리거를 만들 때 자동으로 설정됩니다. |
| 방향 |
out로 설정해야 합니다. 이 속성은 사용자가 Azure Portal에서 트리거를 만들 때 자동으로 설정됩니다. |
| 이름 | 함수 코드에서 큐를 나타내는 변수의 이름입니다.
$return으로 설정하여 함수 반환 값을 참조합니다. |
| queueName | 큐 이름입니다. |
| 연결 | Azure 큐에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
전체 예제는 예제 섹션을 참조하세요.
사용
큐 출력 바인딩의 사용은 확장 패키지 버전과 함수 앱에서 사용되는 C# 형식에 따라 다르며 다음 중 하나일 수 있습니다.
격리된 작업자 프로세스 클래스 라이브러리 컴파일된 C# 함수는 런타임에서 격리된 프로세스에서 실행됩니다.
버전을 선택하여 모드 및 버전에 대한 사용 세부 정보를 확인합니다.
함수가 단일 메시지를 작성하도록 하려는 경우 큐 출력 바인딩은 다음 형식에 바인딩될 수 있습니다.
| 유형 | 설명 |
|---|---|
string |
메시지 콘텐츠를 문자열로 지정입니다. 메시지가 간단한 텍스트일 때 사용합니다. |
byte[] |
메시지의 바이트입니다. |
| JSON 직렬화 가능 형식 | JSON 메시지의 콘텐츠를 나타내는 개체입니다. 함수는 POCO(Plain Old CLR Object) 형식을 JSON 데이터로 직렬화하려고 시도합니다. |
함수가 여러 메시지를 쓰도록 하려는 경우 큐 출력 바인딩을 다음 형식에 바인딩할 수 있습니다.
| 유형 | 설명 |
|---|---|
T[] 여기서 T는 단일 메시지 유형 중 하나입니다. |
여러 메시지의 콘텐츠가 포함된 배열입니다. 각 항목은 하나의 메시지를 나타냅니다. |
다른 출력 시나리오의 경우 Azure.Storage.Queues의 다른 형식과 함께 QueueClient를 직접 만들고 사용합니다. 종속성 주입을 사용하여 Azure SDK에서 클라이언트 형식을 만드는 예제는 Azure 클라이언트 등록을 참조하세요.
QueueOutput 주석을 사용하여 함수에서 큐에 쓰기 위한 두 가지 옵션이 있습니다.
반환 값: 함수 자체에 주석을 적용하면 함수의 반환 값이 큐에 기록됩니다.
명령적: 메시지 값을 명시적으로 설정하려면 주석을 POJO 또는 네이
OutputBinding<T>티브 Java 형식인 형식T의 특정 매개 변수에 적용합니다. 이 구성을 사용하면 값을setValue메서드에 전달하면 큐에 값이 기록됩니다.
큐 메시지에 대한 출력은 function.jsonPush-OutputBinding전달하는 위치를 통해 name 사용할 수 있습니다.
함수에서 구성된 큐로 쓰기 위한 두 가지 옵션이 있습니다.
반환 값: function.json
name속성을 .로 설정합니다$return. 이 구성을 사용하면 함수의 반환 값이 Queue Storage 메시지로 유지됩니다.명령적: Out 형식으로 선언된 매개 변수의 set 메서드에 값을 전달합니다.
set에 전달되는 값은 Queue Storage 메시지로 유지됩니다.
출력 함수 매개 변수는 <
연결
이 속성은 connection 애플리케이션 설정에서 Functions 런타임이 확장에서 사용하는 스토리지 계정에 연결하는 값으로 설정됩니다. 연결 속성 설정의 값은 연결 유형에 따라 달라집니다:
-
관리 신원 연결: 이 속성은
connection<CONNECTION_NAME_PREFIX>여러 설정이 함께 스토리지 계정과 신원 기반 연결을 정의하는 집합에서 공유됩니다. 자세한 내용은 '정체적 연결 정의(Define identity connections)'를 참조하세요. -
Key Vault 참조: 속성 설정은
connection연결 문자열이 중앙에서 유지되는 위치에 대한 Azure Key Vault 참조를 반환합니다. 자세한 내용은 'Define Key Vault connections'를 참조하세요. -
App Configuration 참조: 속성 설정은
connection연결 문자열 또는 Key Vault 참조를 반환하는 Azure App Configuration 참조를 반환합니다. 자세한 내용은 연결 문서의 Azure App Configuration을 참조하세요. -
Connection string: 속성 설정이
connection실제 스토리지 계정 연결 문자열을 반환합니다. 연결 문자열에 공유 비밀 키가 포함되어 있으므로, 가능하다면 관리 신원 연결 사용을 고려해야 합니다. 자세한 내용은 '연결 정의'를 참조하세요.
바인딩 연결에 대해 더 알고 싶으시다면, Azure Functions의 Manage connection을 참고하세요. 연결 문자열을 가져오려면 스토리지 계정 액세스 키 관리에 표시된 단계를 따릅니다.
키나 키 프리픽스로 설정하거나 빈 connection 문자열로 설정 AzureWebJobsStorage 하면, 바인딩 확장은 기본 호스트 스토리지 계정을 사용합니다. 자세한 내용은 저장 성능 최적화를 참조하세요.
예외 및 반환 코드
| 바인딩 | 참조 |
|---|---|
| 큐 | 큐 오류 코드 |
| Blob, 테이블, 큐 | 스토리지 오류 코드 |
| Blob, 테이블, 큐 | 문제 해결 |