함수를 만들 때 트리거 템플릿 집합에서 언어별 트리거 코드가 프로젝트에 추가됩니다. 입력 또는 출력 바인딩을 사용하여 함수를 다른 서비스에 연결하려면 함수에 특정 바인딩 정의를 추가해야 합니다. 바인딩에 대한 자세한 내용은 Azure Functions 트리거 및 바인딩 개념 참조하세요.
로컬 개발
함수를 로컬로 개발할 때 바인딩을 추가하려면 함수 코드를 업데이트해야 합니다. function.json사용하는 언어의 경우 Visual Studio Code 함수에 바인딩을 추가하는 도구를 제공합니다.
예제에 따라 수동으로 바인딩 추가
기존 함수에 바인딩을 추가할 때 코드의 함수 정의에 바인딩별 특성을 추가해야 합니다.
기존 함수에 바인딩을 추가할 때 코드의 함수 정의에 바인딩별 주석을 추가해야 합니다.
기존 함수에 바인딩을 추가할 때 함수 코드를 업데이트하고 function.json 구성 파일에 정의를 추가해야 합니다.
Go에서는 main() 함수에서 플루언트 등록 API를 사용해 지원되는 트리거를 구성합니다. 각 트리거 유형에는 구성에 대한 기능 옵션이 있는 전용 등록 방법이 있습니다. 별도의 바인딩 구성 파일이 필요하지 않습니다.
다음 예제에서는 HTTP 트리거 함수를 보여줍니다. Go 함수에서 Queue Storage에 기록해야 하는 경우 Queue Storage 출력 바인딩이 현재 Go 작업자에서 지원되지 않으므로 Go용 Azure SDK 직접 사용합니다.
package main
import (
"encoding/json"
"fmt"
"net/http"
"github.com/azure/azure-functions-golang-worker/sdk"
"github.com/azure/azure-functions-golang-worker/worker"
)
func main() {
app := sdk.FunctionApp()
app.HTTP("HttpExample", httpHandler,
sdk.WithMethods("GET", "POST"),
sdk.WithAuth("anonymous"),
)
worker.Start(app)
}
func httpHandler(w http.ResponseWriter, r *http.Request) {
name := r.URL.Query().Get("name")
if name == "" {
var body struct{ Name string }
json.NewDecoder(r.Body).Decode(&body)
name = body.Name
}
if name == "" {
w.WriteHeader(http.StatusBadRequest)
fmt.Fprint(w, "Please pass a name on the query string or in the request body.")
return
}
// Queue output bindings are not yet supported in the Go worker.
// Use the Azure SDK for Go to write to Queue Storage directly.
fmt.Fprintf(w, "Hello, %s!", name)
}
메모
Go 작업자는 현재 트리거만 지원합니다. 큐 스토리지 출력 바인딩과 같은 입력 및 출력 바인딩은 아직 사용할 수 없습니다. Go용 Azure SDK 사용하여 함수 코드에서 직접 다른 Azure 서비스와 상호 작용합니다.
Go 작업자는 현재 다음 트리거 유형을 지원합니다.
| 트리거 유형 | 등록 방법 | 예시 |
|---|---|---|
| HTTP | app.HTTP() |
HTTP 샘플 |
| 타이머 | app.Timer() |
타이머 예제 |
| Azure Cosmos DB | app.CosmosDB() |
Cosmos DB 샘플 |
| Azure Service Bus(큐) | app.ServiceBusQueue() |
Service Bus 큐 예제 |
| Azure Service Bus (토픽) | app.ServiceBusTopic() |
Service Bus 토픽 샘플 |
| 이벤트 허브 | app.EventHub() |
Event Hubs 샘플 |
| 이벤트 그리드 | app.EventGrid() |
Event Grid 샘플 |
| Blob Storage | app.Blob() |
Blob 예제 |
자세한 내용은 Go 개발자 참조를 참조하세요.
다음 예제에서는 Queue Storage 출력 바인딩이 HTTP 트리거 함수에 추가되어, 함수 정의가 어떻게 되는지를 보여줍니다.
HTTP 트리거 함수도 HTTP 응답을 반환하므로 함수는 HTTP 및 큐 출력을 모두 나타내는 MultiResponse 개체를 반환합니다.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
이 예제는 출력 바인딩을 포함하는 MultiResponse 개체의 정의입니다.
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
이 예제에서는 ASP.NET Core 통합 사용합니다. ASP.NET Core 통합을 사용하지 않는 경우 HttpRequestHttpRequestData, IActionResultHttpResponseData 변경해야 합니다.
함수가 완료되면 큐에 메시지가 전송됩니다. 출력 바인딩을 정의하는 방법은 프로세스 모델에 따라 다릅니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@QueueOutput(name = "msg", queueName = "outqueue",
connection = "AzureWebJobsStorage") OutputBinding<String> msg,
final ExecutionContext context) {
참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.
const { app, output } = require('@azure/functions');
const sendToQueue = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
extraOutputs: [sendToQueue],
handler: async (request, context) => {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
},
});
출력 바인딩을 정의하는 방법은 Node.js 모델의 버전에 따라 달라집니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.
@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
logging.info('Python HTTP trigger function processed a request.')
출력 바인딩을 정의하는 방법은 Python 모델의 버전에 따라 달라집니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.
import {
app,
output,
HttpRequest,
HttpResponseInit,
InvocationContext,
StorageQueueOutput,
} from '@azure/functions';
const sendToQueue: StorageQueueOutput = output.storageQueue({
queueName: 'outqueue',
connection: 'AzureWebJobsStorage',
});
export async function HttpExample(
request: HttpRequest,
context: InvocationContext,
): Promise<HttpResponseInit> {
try {
context.log(`Http function processed request for url "${request.url}"`);
const name = request.query.get('name') || (await request.text());
context.log(`Name: ${name}`);
if (name) {
const msg = `Name passed to the function ${name}`;
context.extraOutputs.set(sendToQueue, [msg]);
return { body: msg };
} else {
context.log('Missing required data');
return { status: 404, body: 'Missing required data' };
}
} catch (error) {
context.log(`Error: ${error}`);
return { status: 500, body: 'Internal Server Error' };
}
}
app.http('HttpExample', {
methods: ['GET', 'POST'],
authLevel: 'anonymous',
handler: HttpExample,
});
출력 바인딩을 정의하는 방법은 Node.js 모델의 버전에 따라 달라집니다. 참조할 수 있는 예제 바인딩 코드에 대한 링크를 비롯한 자세한 내용은 함수에 바인딩 추가를 참조하세요.
다음 표를 사용하여 기존 함수를 업데이트하는 데 사용할 수 있는 특정 바인딩 형식의 예를 찾을 수 있습니다. 먼저 project 해당하는 언어 탭을 선택합니다.
C#용 바인딩 코드는 특정 프로세스 모델에 따라 다릅니다.
| 서비스 | 예시 | 샘플 |
|---|---|---|
| Blob Storage |
트리거 인푸트 Output |
Link |
| Azure Cosmos DB |
트리거 인푸트 Output |
Link |
| Azure Data Explorer |
인푸트 Output |
Link |
| Azure SQL |
트리거 인푸트 Output |
Link |
| 이벤트 그리드 (Event Grid) |
트리거 Output |
Link |
| 이벤트 허브 (Event Hubs) |
트리거 Output |
|
| IoT Hub |
트리거 Output |
|
| HTTP | 트리거 | Link |
| Queue Storage |
트리거 Output |
Link |
| RabbitMQ |
트리거 Output |
|
| SendGrid | Output | |
| 서비스 버스 |
트리거 Output |
Link |
| Azure SignalR Service |
트리거 인푸트 Output |
|
| 테이블 스토리지 |
인푸트 Output |
|
| Timer | 트리거 | Link |
| Twilio | Output | Link |
| 서비스 | 예시 | 샘플 |
|---|---|---|
| Blob Storage |
트리거 인푸트 Output |
Link |
| Azure Cosmos DB |
트리거 인푸트 Output |
Link |
| Azure Data Explorer |
인푸트 Output |
Link |
| Azure SQL |
트리거 인푸트 Output |
|
| 이벤트 그리드 (Event Grid) |
트리거 Output |
Link |
| 이벤트 허브 (Event Hubs) |
트리거 Output |
|
| IoT Hub |
트리거 Output |
|
| HTTP | 트리거 | Link |
| Queue Storage |
트리거 Output |
Link |
| RabbitMQ |
트리거 Output |
|
| SendGrid | Output | |
| 서비스 버스 |
트리거 Output |
Link |
| Azure SignalR Service |
트리거 인푸트 Output |
|
| 테이블 스토리지 |
인푸트 Output |
|
| Timer | 트리거 | Link |
| Twilio | Output |
| 서비스 | 예시 | 샘플 |
|---|---|---|
| Blob Storage |
트리거 인푸트 Output |
Link |
| Azure Cosmos DB |
트리거 인푸트 Output |
Link |
| Azure Data Explorer |
인푸트 Output |
|
| Azure SQL |
트리거 인푸트 Output |
Link |
| 이벤트 그리드 (Event Grid) |
트리거 Output |
|
| 이벤트 허브 (Event Hubs) |
트리거 Output |
|
| IoT Hub |
트리거 Output |
|
| HTTP | 트리거 | Link |
| Queue Storage |
트리거 Output |
Link |
| RabbitMQ |
트리거 Output |
|
| SendGrid | Output | |
| 서비스 버스 |
트리거 Output |
Link |
| Azure SignalR Service |
트리거 인푸트 Output |
|
| 테이블 스토리지 |
인푸트 Output |
|
| Timer | 트리거 | |
| Twilio | Output |
| 서비스 | 예시 | 샘플 |
|---|---|---|
| Blob Storage |
트리거 인푸트 Output |
|
| Azure Cosmos DB |
트리거 인푸트 Output |
|
| Azure SQL |
트리거 인푸트 Output |
|
| 이벤트 그리드 (Event Grid) |
트리거 Output |
|
| 이벤트 허브 (Event Hubs) |
트리거 Output |
|
| IoT Hub |
트리거 Output |
|
| HTTP | 트리거 | Link |
| Queue Storage |
트리거 Output |
|
| RabbitMQ |
트리거 Output |
|
| SendGrid | Output | |
| 서비스 버스 |
트리거 Output |
|
| Azure SignalR Service |
트리거 인푸트 Output |
|
| 테이블 스토리지 |
인푸트 Output |
|
| Timer | 트리거 | |
| Twilio | Output |
Python용 바인딩 코드는 Python 모델 버전에 따라 다릅니다.
| 서비스 | 예시 | 샘플 |
|---|---|---|
| Blob Storage |
트리거 인푸트 Output |
Link |
| Azure Cosmos DB |
트리거 인푸트 Output |
Link |
| Azure Data Explorer |
인푸트 Output |
|
| Azure SQL |
트리거 인푸트 Output |
Link |
| 이벤트 그리드 (Event Grid) |
트리거 Output |
|
| 이벤트 허브 (Event Hubs) |
트리거 Output |
|
| IoT Hub |
트리거 Output |
|
| HTTP | 트리거 | Link |
| Queue Storage |
트리거 Output |
|
| RabbitMQ |
트리거 Output |
|
| SendGrid | Output | |
| 서비스 버스 |
트리거 Output |
Link |
| Azure SignalR Service |
트리거 인푸트 Output |
|
| 테이블 스토리지 |
인푸트 Output |
|
| Timer | 트리거 | |
| Twilio | Output |
Visual Studio 코드
Visual Studio Code를 사용하여 함수를 개발하고 함수가 function.json 파일을 사용하는 경우 Azure Functions 확장 프로그램에서 기존 function.json 파일에 바인딩을 자동으로 추가할 수 있습니다. 자세한 내용은 입력 및 출력 바인딩 추가를 참조하세요.
Azure portal
Azure portal 함수를 개발할 때 지정된 함수의 인테그레이션 탭에 입력 및 출력 바인딩을 추가합니다. 새 바인딩은 언어에 따라 function.json 파일 또는 메서드 특성에 추가됩니다. 다음 문서에서는 포털에서 기존 함수에 바인딩을 추가하는 방법의 예를 보여 줍니다.