Azure Functions에 Azure Service Bus 트리거
Service Bus 트리거를 사용하여 Service Bus 큐 또는 토픽의 메시지에 응답합니다. 확장 버전 3.1.0부터 세션 사용 큐나 토픽에서 트리거할 수 있습니다.
설정 및 구성 세부 정보에 대한 자세한 내용은 개요를 참조하세요.
사용량 및 프리미엄 플랜에 대한 Service Bus 크기 조정 결정은 대상 기반 크기 조정을 기반으로 이루어집니다. 자세한 내용은 대상 기반 크기 조정을 참조하세요.
Important
이 문서에서는 탭을 사용하여 여러 버전의 Node.js 프로그래밍 모델을 지원합니다. v4 모델은 일반적으로 사용 가능하며 JavaScript 및 TypeScript 개발자를 위해 보다 유연하고 직관적인 환경을 제공하도록 설계되었습니다. v4 모델의 작동 방식에 대한 자세한 내용은 Azure Functions Node.js 개발자 가이드를 참조하세요. v3과 v4의 차이점에 대해 자세히 알아보려면 마이그레이션 가이드를 참조하세요.
Azure Functions는 Python에 대해 두 가지 프로그래밍 모델을 지원합니다. 바인딩을 정의하는 방법은 선택한 프로그래밍 모델에 따라 달라집니다.
Python v2 프로그래밍 모델을 사용하면 Python 함수 코드에서 직접 데코레이터를 사용하여 바인딩을 정의할 수 있습니다. 자세한 내용은 Python 개발자 가이드를 참조하세요.
이 문서에서는 두 프로그래밍 모델을 모두 지원합니다.
예시
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.*
네임스페이스를 사용합니다.
Important
In Process 모델에 대한 지원은 2026년 11월 10일에 종료됩니다. 전체 지원을 위해 앱을 격리된 작업자 모델로 마이그레이션하는 것이 좋습니다.
이 코드는 다음을 정의하고 초기화합니다.ILogger
private readonly ILogger<ServiceBusReceivedMessageFunctions> _logger;
public ServiceBusReceivedMessageFunctions(ILogger<ServiceBusReceivedMessageFunctions> logger)
{
_logger = logger;
}
이 예제에서는 단일 Service Bus 큐 메시지를 수신하고 로그에 쓰는 C# 함수를 보여 줍니다.
[Function(nameof(ServiceBusReceivedMessageFunction))]
[ServiceBusOutput("outputQueue", Connection = "ServiceBusConnection")]
public string ServiceBusReceivedMessageFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection")] ServiceBusReceivedMessage message)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
var outputMessage = $"Output message created at {DateTime.Now}";
return outputMessage;
}
이 예제에서는 단일 일괄 처리로 여러 Service Bus 큐 메시지를 수신하고 각각 로그에 쓰는 C# 함수 를 보여 줍니다.
[Function(nameof(ServiceBusReceivedMessageBatchFunction))]
public void ServiceBusReceivedMessageBatchFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection", IsBatched = true)] ServiceBusReceivedMessage[] messages)
{
foreach (ServiceBusReceivedMessage message in messages)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
}
}
이 예제에서는 여러 Service Bus 큐 메시지를 수신하고 로그에 쓴 다음 완료된 대로 메시지를 정산하는 C# 함수를 보여 줍니다.
[Function(nameof(ServiceBusMessageActionsFunction))]
public async Task ServiceBusMessageActionsFunction(
[ServiceBusTrigger("queue", Connection = "ServiceBusConnection", AutoCompleteMessages = false)]
ServiceBusReceivedMessage message,
ServiceBusMessageActions messageActions)
{
_logger.LogInformation("Message ID: {id}", message.MessageId);
_logger.LogInformation("Message Body: {body}", message.Body);
_logger.LogInformation("Message Content-Type: {contentType}", message.ContentType);
// Complete the message
await messageActions.CompleteMessageAsync(message);
}
다음 Java 함수는 Java 함수 런타임 라이브러리의 주석을 사용하여 @ServiceBusQueueTrigger
Service Bus 큐 트리거에 대한 구성을 설명합니다. 이 함수는 큐에 배치된 메시지를 가져와 로그에 추가합니다.
@FunctionName("sbprocessor")
public void serviceBusProcess(
@ServiceBusQueueTrigger(name = "msg",
queueName = "myqueuename",
connection = "myconnvarname") String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
메시지가 Service Bus 토픽에 추가될 때 Java 함수도 트리거할 수 있습니다. 다음 예에서는 @ServiceBusTopicTrigger
주석을 사용하여 트리거 구성을 설명합니다.
@FunctionName("sbtopicprocessor")
public void run(
@ServiceBusTopicTrigger(
name = "message",
topicName = "mytopicname",
subscriptionName = "mysubscription",
connection = "ServiceBusConnection"
) String message,
final ExecutionContext context
) {
context.getLogger().info(message);
}
다음 예에서는 Service Bus 트리거 TypeScript 함수를 보여 줍니다. 함수는 메시지 메타데이터를 읽고 Service Bus 큐 메시지를 기록합니다.
import { app, InvocationContext } from '@azure/functions';
export async function serviceBusQueueTrigger1(message: unknown, context: InvocationContext): Promise<void> {
context.log('Service bus queue function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
context.log('MessageId =', context.triggerMetadata.messageId);
}
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'MyServiceBusConnection',
queueName: 'testqueue',
handler: serviceBusQueueTrigger1,
});
다음 예에서는 Service Bus 트리거 JavaScript 함수를 보여 줍니다. 함수는 메시지 메타데이터를 읽고 Service Bus 큐 메시지를 기록합니다.
const { app } = require('@azure/functions');
app.serviceBusQueue('serviceBusQueueTrigger1', {
connection: 'MyServiceBusConnection',
queueName: 'testqueue',
handler: (message, context) => {
context.log('Service bus queue function processed message:', message);
context.log('EnqueuedTimeUtc =', context.triggerMetadata.enqueuedTimeUtc);
context.log('DeliveryCount =', context.triggerMetadata.deliveryCount);
context.log('MessageId =', context.triggerMetadata.messageId);
},
});
다음 예제에서는 function.json 파일의 Service Bus 트리거 바인딩 및 바인딩을 사용하는 PowerShell 함수를 보여줍니다.
function.json 파일의 바인딩 데이터는 다음과 같습니다.
{
"bindings": [
{
"name": "mySbMsg",
"type": "serviceBusTrigger",
"direction": "in",
"topicName": "mytopic",
"subscriptionName": "mysubscription",
"connection": "AzureServiceBusConnectionString"
}
]
}
Service Bus 메시지를 보낼 때 실행되는 함수는 다음과 같습니다.
param([string] $mySbMsg, $TriggerMetadata)
Write-Host "PowerShell ServiceBus queue trigger function processed message: $mySbMsg"
다음 예에서는 트리거를 통해 Service Bus 큐 메시지를 읽는 방법을 보여줍니다. 이 예제는 v1 또는 v2 Python 프로그래밍 모델을 사용하는지 여부에 따라 달라집니다.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="ServiceBusQueueTrigger1")
@app.service_bus_queue_trigger(arg_name="msg",
queue_name="<QUEUE_NAME>",
connection="<CONNECTION_SETTING>")
def test_function(msg: func.ServiceBusMessage):
logging.info('Python ServiceBus queue trigger processed message: %s',
msg.get_body().decode('utf-8'))
다음 예제에서는 트리거를 통해 Service Bus 큐 토픽을 읽는 방법을 보여 줍니다.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="ServiceBusTopicTrigger1")
@app.service_bus_topic_trigger(arg_name="message",
topic_name="TOPIC_NAME",
connection="CONNECTION_SETTING",
subscription_name="SUBSCRIPTION_NAME")
def test_function(message: func.ServiceBusMessage):
message_body = message.get_body().decode("utf-8")
logging.info("Python ServiceBus topic trigger processed message.")
logging.info("Message Body: " + message_body)
특성
In Process 및 격리된 작업자 프로세스 C# 라이브러리는 모두 ServiceBusTriggerAttribute 특성을 사용하여 함수 트리거를 정의합니다. 대신 C# 스크립트는 C# 스크립팅 가이드에 설명된 대로 function.json 구성 파일을 사용합니다.
다음 표에서는 이 트리거 특성을 사용하여 설정할 수 있는 특성을 설명합니다.
속성 | 설명 |
---|---|
QueueName | 모니터링할 큐의 이름입니다. 토픽이 아닌 큐를 모니터링하는 경우에만 설정합니다. |
TopicName | 모니터링할 토픽의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
SubscriptionName | 모니터링할 구독의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
Connection | Service Bus에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
IsBatched | 메시지는 일괄 처리로 전달됩니다. 배열 또는 컬렉션 형식이 필요합니다. |
IsSessionsEnabled | true 세션 인식 큐나 구독에 연결하는 경우 입니다. false 그렇지 않으면 기본값입니다. |
AutoCompleteMessages | true 트리거가 성공적으로 호출된 후 메시지를 자동으로 완료해야 하면 입니다. false 코드에서 메시지 해결을 처리하는 경우와 같이 그렇지 않으면 입니다. 명시적으로 설정하지 않으면 동작은 .의 구성host.json 을 autoCompleteMessages 기반으로 합니다. |
로컬에서 개발하는 경우 Values
컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.
데코레이터
Python v2 프로그래밍 모델에만 적용됩니다.
데코레이터를 사용하여 정의된 Python v2 함수의 경우 다음 속성은 service_bus_queue_trigger
다음과 같습니다.
속성 | 설명 |
---|---|
arg_name |
함수 코드에서 큐 또는 토픽 메시지를 나타내는 변수의 이름입니다. |
queue_name |
모니터링할 큐의 이름입니다. 토픽이 아닌 큐를 모니터링하는 경우에만 설정합니다. |
connection |
Service Bus에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
function.json 사용하여 정의된 Python 함수는 구성 섹션을 참조하세요.
주석
ServiceBusQueueTrigger
주석을 사용하면 Service Bus 큐 메시지를 만들 때 실행되는 함수를 만들 수 있습니다. 사용 가능한 구성 옵션에는 다음 속성이 포함됩니다.
속성 | 설명 |
---|---|
이름 | 함수 코드에서 큐 또는 토픽 메시지를 나타내는 변수의 이름입니다. |
queueName | 모니터링할 큐의 이름입니다. 토픽이 아닌 큐를 모니터링하는 경우에만 설정합니다. |
topicName | 모니터링할 토픽의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
subscriptionName | 모니터링할 구독의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
connection | Service Bus에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
주석을 ServiceBusTopicTrigger
사용하면 함수를 트리거하는 데이터를 대상으로 하는 토픽 및 구독을 지정할 수 있습니다.
로컬에서 개발하는 경우 Values
컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.
자세한 내용은 트리거 예제 를 참조하세요.
구성
Python v1 프로그래밍 모델에만 적용됩니다.
다음 표에서는 app.serviceBusQueue()
또는 app.serviceBusTopic()
메서드에 전달된 options
개체에 설정할 수 있는 속성을 설명합니다.
속성 | 설명 |
---|---|
queueName | 모니터링할 큐의 이름입니다. 토픽이 아닌 큐를 모니터링하는 경우에만 설정합니다. |
topicName | 모니터링할 토픽의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
subscriptionName | 모니터링할 구독의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
connection | Service Bus에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
accessRights | 연결 문자열에 대한 액세스 권한입니다. 사용 가능한 값은 manage 및 listen 입니다. 기본값은 manage 이며, connection 에 관리 권한이 있음을 의미합니다. 관리 권한이 없는 연결 문자열을 사용하는 경우 accessRights 을 "listen"으로 설정합니다. 그렇지 않으면 함수 런타임은 관리 권한이 필요한 작업 시도를 실패할 수 있습니다. Azure Functions 버전 2.x 이상에서는 최신 버전의 Service Bus SDK가 관리 작업을 지원하지 않으므로 이 속성을 사용할 수 없습니다. |
isSessionsEnabled | true 세션 인식 큐나 구독에 연결하는 경우 입니다. false 그렇지 않으면 기본값입니다. |
autoComplete | C#이 아닌 함수의 경우 true 여야 합니다. 즉, 트리거는 처리 후 자동으로 완료를 호출하거나 함수 코드가 완료를 수동으로 호출해야 합니다.true 로 설정한 경우 함수 실행이 성공적으로 완료되면 트리거가 자동으로 메시지를 완료하고 그렇지 않으면 메시지가 중단됩니다.함수의 예외로 인해 런타임이 백그라운드에서 abandonAsync 를 호출합니다. 예외가 completeAsync 발생하지 않으면 백그라운드에서 호출됩니다. Azure Functions 2.x 이상에서만 이 속성을 사용할 수 있습니다. |
로컬에서 개발하는 경우 Values
컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.
다음 표에서는 function.json 파일에 설정된 바인딩 구성 속성을 설명합니다.
function.json 속성 | 설명 |
---|---|
type | serviceBusTrigger 로 설정해야 합니다. 이 속성은 사용자가 Azure Portal에서 트리거를 만들 때 자동으로 설정됩니다. |
direction | "in"으로 설정해야 합니다. 이 속성은 사용자가 Azure Portal에서 트리거를 만들 때 자동으로 설정됩니다. |
이름 | 함수 코드에서 큐 또는 토픽 메시지를 나타내는 변수의 이름입니다. |
queueName | 모니터링할 큐의 이름입니다. 토픽이 아닌 큐를 모니터링하는 경우에만 설정합니다. |
topicName | 모니터링할 토픽의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
subscriptionName | 모니터링할 구독의 이름입니다. 큐가 아닌 토픽을 모니터링하는 경우에만 설정합니다. |
connection | Service Bus에 연결하는 방법을 지정하는 앱 설정 또는 설정 컬렉션의 이름입니다. 연결을 참조하세요. |
accessRights | 연결 문자열에 대한 액세스 권한입니다. 사용 가능한 값은 manage 및 listen 입니다. 기본값은 manage 이며, connection 에 관리 권한이 있음을 의미합니다. 관리 권한이 없는 연결 문자열을 사용하는 경우 accessRights 을 "listen"으로 설정합니다. 그렇지 않으면 함수 런타임은 관리 권한이 필요한 작업 시도를 실패할 수 있습니다. Azure Functions 버전 2.x 이상에서는 최신 버전의 Service Bus SDK가 관리 작업을 지원하지 않으므로 이 속성을 사용할 수 없습니다. |
isSessionsEnabled | true 세션 인식 큐나 구독에 연결하는 경우 입니다. false 그렇지 않으면 기본값입니다. |
autoComplete | C#이 아닌 함수의 경우 true 여야 합니다. 즉, 트리거는 처리 후 자동으로 완료를 호출하거나 함수 코드가 완료를 수동으로 호출해야 합니다.true 로 설정한 경우 함수 실행이 성공적으로 완료되면 트리거가 자동으로 메시지를 완료하고 그렇지 않으면 메시지가 중단됩니다.함수의 예외로 인해 런타임이 백그라운드에서 abandonAsync 를 호출합니다. 예외가 completeAsync 발생하지 않으면 백그라운드에서 호출됩니다. Azure Functions 2.x 이상에서만 이 속성을 사용할 수 있습니다. |
로컬에서 개발하는 경우 Values
컬렉션의 local.settings.json 파일에 애플리케이션 설정을 추가합니다.
전체 예제는 예제 섹션을 참조하세요.
사용
다음 매개 변수 형식은 모든 C# 양식 및 확장 버전에서 지원됩니다.
Type | 설명 |
---|---|
System.String | 메시지가 간단한 텍스트일 때 사용합니다. |
byte[] | 이진 파일 데이터 메시지에 사용합니다. |
Object | 메시지에 JSON이 포함된 경우 Functions는 JSON 데이터를 알려진 일반 CLR 개체 형식으로 역직렬화하려고 시도합니다. |
메시징 관련 매개 변수 형식에는 추가 메시지 메타데이터가 포함됩니다. Service Bus 트리거에서 지원하는 특정 형식은 Functions 런타임 버전, 확장 패키지 버전 및 사용된 C# 형식에 따라 다릅니다.
함수가 단일 메시지를 처리하도록 하려면 Service Bus 트리거가 다음 형식에 바인딩할 수 있습니다.
Type | 설명 |
---|---|
string |
문자열 메시지입니다. 메시지가 간단한 텍스트일 때 사용합니다. |
byte[] |
메시지의 바이트입니다. |
JSON 직렬화 가능 형식 | 이벤트에 JSON 데이터가 포함된 경우 Functions는 JSON 데이터를 POCO(일반 CLR 개체) 형식으로 역직렬화하려고 합니다. |
ServiceBusReceivedMessage1 | 메시지 개체입니다. 바인딩할 ServiceBusReceivedMessage 때 필요에 따라 ServiceBusMessageActions1,2 형식의 매개 변수를 포함하여 메시지 결제 작업을 수행할 수도 있습니다. |
함수가 메시지 일괄 처리를 처리하도록 하려면 Service Bus 트리거가 다음 형식에 바인딩할 수 있습니다.
Type | 설명 |
---|---|
T[] 여기서 T 는 단일 메시지 유형 중 하나입니다. |
일괄 처리의 이벤트 배열입니다. 각 항목은 하나의 이벤트를 나타냅니다. 바인딩할 ServiceBusReceivedMessage[] 때 필요에 따라 ServiceBusMessageActions1,2 형식의 매개 변수를 포함하여 메시지 결제 작업을 수행할 수도 있습니다. |
1 이러한 형식을 사용하려면 Microsoft.Azure.Functions.Worker.Extensions.ServiceBus 5.14.1 이상 및 SDK 형식 바인딩에 대한 일반적인 종속성을 참조해야 합니다.
2 사용할 ServiceBusMessageActions
때 트리거 특성 false
의 AutoCompleteMessages
속성을 .로 설정합니다. 이렇게 하면 함수 호출이 성공한 후 런타임에서 메시지를 완료하지 못하게 됩니다.
Connection
속성이 정의되지 않으면 Functions는 Service Bus 연결 문자열의 기본 이름인 AzureWebJobsServiceBus
라는 앱 설정을 찾습니다. Connection
속성을 설정하여 사용할 Service Bus 연결 문자열이 포함된 애플리케이션 설정의 이름을 지정할 수도 있습니다.
들어오는 Service Bus 메시지는 a 또는 ServiceBusTopicMessage
매개 변수를 ServiceBusQueueMessage
통해 사용할 수 있습니다.
Service Bus 인스턴스는 function.json 파일의 이름 속성에 구성된 매개 변수를 통해 사용할 수 있습니다.
큐 메시지는 .로 func.ServiceBusMessage
형식화된 매개 변수를 통해 함수에서 사용할 수 있습니다. Service Bus 메시지가 문자열 또는 JSON 개체로 함수에 전달됩니다.
전체 예제는 예제 섹션을 참조하세요.
연결
connection
속성은 앱이 Service Bus에 연결해야 하는 방법을 지정하는 환경 구성에 대한 참조입니다. 다음을 지정할 수 있습니다.
구성된 값이 단일 설정에 대해 정확히 일치하고 다른 설정에 대해 접두사가 일치하는 경우 정확한 일치가 사용됩니다.
Connection string
연결 문자열 가져오려면 관리 자격 증명 가져오기에 표시된 단계를 따릅니다. 연결 문자열 특정 큐 또는 토픽에 국한되지 않고 Service Bus 네임스페이스에 대한 것이어야 합니다.
이 연결 문자열은 바인딩 구성의 connection
속성에 지정된 값과 일치하는 이름으로 애플리케이션 설정에 저장해야 합니다.
앱 설정 이름이 "AzureWebJobs"로 시작하는 경우 이름의 나머지만 지정할 수 있습니다. 예를 들어 "MyServiceBus"로 설정한 connection
경우 Functions 런타임은 "AzureWebJobsMyServiceBus"라는 앱 설정을 찾습니다. 비워 두 connection
면 Functions 런타임은 "AzureWebJobsServiceBus"라는 앱 설정에서 기본 Service Bus 연결 문자열 사용합니다.
ID 기반 연결
버전 5.x 이상을 사용하는 경우 비밀과 함께 연결 문자열 사용하는 대신 앱에서 Microsoft Entra ID를 사용하도록 할 수 있습니다. 이렇게 하려면 트리거 및 바인딩 구성의 connection
속성에 매핑되는 공통 접두사 아래에 설정을 정의합니다.
이 모드에서 확장에는 다음 속성이 필요합니다.
속성 | 환경 변수 템플릿 | 설명 | 예제 값 |
---|---|---|---|
정규화된 Namespace | <CONNECTION_NAME_PREFIX>__fullyQualifiedNamespace |
정규화된 Service Bus 네임스페이스입니다. | <service_bus_namespace>.servicebus.windows.net |
연결을 사용자 지정하기 위해 추가 속성을 설정할 수 있습니다. ID 기반 연결의 공통 속성을 참조하세요.
참고 항목
Azure App Configuration 또는 Key Vault를 사용하여 관리 ID 연결에 대한 설정을 제공하는 경우 설정 이름은 올바르게 확인되도록 __
대신 :
또는 /
와 같은 유효한 키 구분 기호를 사용해야 합니다.
예들 들어 <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace
입니다.
Azure Functions 서비스에서 호스트되는 경우 ID 기반 연결에 관리 ID가 사용됩니다. 사용자가 할당한 ID는 credential
및 clientID
속성을 사용하여 지정할 수 있지만 기본적으로 시스템 할당 ID가 사용됩니다. 리소스 ID를 사용하여 사용자가 할당한 ID를 구성하는 것은 지원되지 않습니다. 로컬 개발과 같은 다른 컨텍스트에서 실행할 때 사용자 지정할 수 있지만 대신 개발자 ID가 사용됩니다. ID 기반 연결을 사용하여 로컬 개발을 참조하세요.
ID에 권한 부여
사용되는 모든 ID에는 의도한 작업을 수행할 수 있는 권한이 있어야 합니다. 대부분 Azure 서비스의 경우 이는 해당 권한을 제공하는 기본 제공 또는 사용자 지정 역할을 사용하여 Azure RBAC에서 역할을 할당해야 함을 의미합니다.
Important
일부 사용 권한은 모든 컨텍스트에 필요하지 않은 대상 서비스에 의해 노출될 수 있습니다. 가능한 경우 최소 권한 원칙을 준수하여 ID에 필요한 권한만 부여하세요. 예를 들어 앱이 데이터 원본에서 읽을 수만 있으면 되는 경우 읽기 권한만 있는 역할을 사용합니다. 읽기 작업에 대한 과도한 권한이 될 수 있으므로 해당 서비스에 쓰기도 허용하는 역할을 할당하는 것은 부적절합니다. 마찬가지로 역할 할당이 읽어야 하는 리소스에 대해서만 범위가 할당되도록 할 수 있습니다.
런타임에 항목 및 큐에 대한 액세스를 제공하는 역할 할당을 만들어야 합니다. 소유자와 같은 관리 역할로는 충분하지 않습니다. 다음 표는 정상적인 작동에서 Service Bus 확장을 사용할 때 권장되는 기본 제공 역할을 보여 줍니다. 작성하는 코드에 따라 애플리케이션에 추가 권한이 필요할 수 있습니다.
바인딩 유형 | 기본 제공 역할 예 |
---|---|
Trigger1 | Azure Service Bus 데이터 수신기, Azure Service Bus 데이터 소유자 |
출력 바인딩 | Azure Service Bus 데이터 보내는 사람 |
1 Service Bus 항목에서 트리거하려면 역할 할당에 Service Bus 구독 리소스에 대한 유효 범위가 있어야 합니다. 항목만 포함하면 오류가 발생합니다. Azure Portal과 같은 일부 클라이언트는 Service Bus 구독 리소스를 역할 할당 범위로 노출하지 않습니다. 이러한 경우 Azure CLI를 대신 사용할 수 있습니다. 자세한 내용은 Azure Service Bus용 Azure 기본 제공 역할을 참조하세요.
포이즌 메시지
포이즌 메시지 처리는 Azure Functions에서 제어하거나 구성할 수 없습니다. Service Bus는 포이즌 메시지 자체를 처리합니다.
PeekLock 동작
Functions 런타임은 PeekLock 모드에서 메시지를 받습니다.
기본적으로 런타임은 함수가 성공적으로 완료되면 메시지를 호출 Complete
하거나 함수가 실패할 경우 호출 Abandon
합니다. 에서 속성을host.json
사용하여 자동 완성을 autoCompleteMessages
사용하지 않도록 설정할 수 있습니다.
기본적으로 런타임은 함수가 성공적으로 완료되면 메시지를 호출 Complete
하거나 함수가 실패할 경우 호출 Abandon
합니다. 트리거 특성의 autoCompleteMessages
속성을 host.json
사용하거나 속성을 통해 자동 완성을 사용하지 않도록 설정할 수 있습니다. 함수 코드가 메시지 해결을 처리하는 경우 자동 완성을 사용하지 않도록 설정해야 합니다.
함수가 시간 제한보다 PeekLock
오래 실행되면 함수가 실행되는 한 잠금이 자동으로 갱신됩니다. ServiceBusProcessor.MaxAutoLockRenewalDuration maxAutoRenewDuration
에 매핑되는 host.json 구성할 수 있습니다. 이 설정의 기본값은 5분입니다.
메시지 메타데이터
메시징 관련 형식을 사용하면 개체의 속성으로 메타데이터를 쉽게 검색할 수 있습니다. 이러한 속성은 Functions 런타임 버전, 확장 패키지 버전 및 사용된 C# 형식에 따라 다릅니다.
이러한 속성은 ServiceBusReceivedMessage 클래스의 멤버입니다.
속성 | Type | 설명 |
---|---|---|
ApplicationProperties |
ApplicationProperties |
보낸 사람이 설정한 속성입니다. |
ContentType |
string |
애플리케이션별 논리에 대해 보낸 사람 및 수신자가 사용하는 콘텐츠 형식 식별자입니다. |
CorrelationId |
string |
상관관계 ID입니다. |
DeliveryCount |
Int32 |
배달 횟수입니다. |
EnqueuedTime |
DateTime |
큐에 담은 시간(UTC)입니다. |
ScheduledEnqueueTimeUtc |
DateTime |
UTC의 예정된 큐에 넣은 시간입니다. |
ExpiresAt |
DateTime |
만료 시간(UTC)입니다. |
MessageId |
string |
Service Bus가 중복 메시지를 식별하는 데 사용할 수 있는 사용자 정의 값(사용 가능한 경우)입니다. |
ReplyTo |
string |
큐 주소에 대한 회신입니다. |
Subject |
string |
Label 메타데이터 속성 대신 사용할 수 있는 애플리케이션별 레이블입니다. |
To |
string |
주소로 보내기입니다. |