Pojęcia powiązań i wyzwalaczy usługi Azure Functions
W tym artykule przedstawiono ogólne pojęcia związane z wyzwalaczami i powiązaniami funkcji.
Wyzwalacze powodują uruchomienie funkcji. Wyzwalacz definiuje sposób wywoływania funkcji. Funkcja musi mieć dokładnie jeden wyzwalacz. Wyzwalacze mogą również przekazywać dane do funkcji, tak jak w przypadku wywołań metod.
Wiązanie z funkcją to sposób deklaratywnego łączenia funkcji z innymi zasobami; powiązania przekazują dane do funkcji (powiązanie wejściowe) lub umożliwiają zapisywanie danych z funkcji (powiązania wyjściowego) przy użyciu parametrów powiązania powiązania. Wyzwalacz funkcji jest zasadniczo specjalnym typem powiązania wejściowego.
Możesz mieszać i dopasowywać różne powiązania do konkretnego scenariusza funkcji. Powiązania są opcjonalne, a funkcja może mieć jedno lub wiele powiązań wejściowych i/lub wyjściowych.
Wyzwalacze i powiązania pozwalają uniknąć trwałego kodowania dostępu do innych usług. Funkcja będzie odbierać dane (np. zawartość komunikatu kolejki) w parametrach funkcji. Możesz wysłać dane (np. w celu utworzenia komunikatu kolejki) przy użyciu wartości zwracanej przez funkcję.
Zapoznaj się z poniższymi przykładami sposobu implementacji różnych funkcji.
Przykładowy scenariusz | Wyzwalacz | Powiązanie wejściowe | Powiązanie wyjściowe |
---|---|---|---|
Zostanie wyświetlony nowy komunikat kolejki, który uruchamia funkcję zapisu w innej kolejce. | Kolejka* | Brak | Kolejka* |
Zaplanowane zadanie odczytuje zawartość usługi Blob Storage i tworzy nowy dokument usługi Azure Cosmos DB. | Czasomierz | Blob Storage | Azure Cosmos DB |
Usługa Event Grid służy do odczytywania obrazu z usługi Blob Storage i dokumentu z usługi Azure Cosmos DB w celu wysłania wiadomości e-mail. | Event Grid | Blob Storage i Azure Cosmos DB | SendGrid |
* Reprezentuje różne kolejki
Te przykłady nie mają być wyczerpujące, ale przedstawiono sposób używania wyzwalaczy i powiązań razem. Aby zapoznać się z bardziej kompleksowym zestawem scenariuszy, zobacz Scenariusze usługi Azure Functions.
Napiwek
Funkcje nie wymagają użycia powiązań wejściowych i wyjściowych w celu nawiązania połączenia z usługami platformy Azure. Zawsze możesz utworzyć klienta zestawu Azure SDK w kodzie i użyć go do transferów danych. Aby uzyskać więcej informacji, zobacz Łączenie z usługami.
Definicje wyzwalaczy i powiązań
Funkcja ma jeden wyzwalacz i co najmniej jedno powiązanie. Typ powiązania to dane wejściowe lub wyjściowe. Nie wszystkie usługi obsługują powiązania wejściowe i wyjściowe. Zapoznaj się z konkretnym rozszerzeniem powiązania, aby zapoznać się z przykładami kodu powiązań.
Wyzwalacze i powiązania są definiowane inaczej w zależności od języka programowania. Pamiętaj, aby wybrać język w górnej części artykułu.
W tym przykładzie pokazano funkcję wyzwalaną przez protokół HTTP z powiązaniem wyjściowym, które zapisuje komunikat w kolejce usługi Azure Storage.
W przypadku funkcji biblioteki klas języka C# wyzwalacze i powiązania są konfigurowane przez dekorowanie metod i parametrów za pomocą atrybutów języka C#, gdzie określony atrybut zastosowany może zależeć od modelu środowiska uruchomieniowego języka C#:
Wyzwalacz HTTP (HttpTrigger
) jest zdefiniowany w metodzie Run
dla funkcji o nazwie HttpExample
, która zwraca MultiResponse
obiekt:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
W tym przykładzie MultiResponse
pokazano definicję obiektu, która zarówno zwraca HttpResponse
do żądania HTTP, jak i zapisuje komunikat w kolejce magazynu przy użyciu QueueOutput
powiązania:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
Aby uzyskać więcej informacji, zobacz przewodnik po modelu izolowanego procesu roboczego w języku C#.
Starsze funkcje skryptu języka C# używają pliku definicji function.json. Aby uzyskać więcej informacji, zobacz dokumentację dla deweloperów skryptu języka C# usługi Azure Functions (csx).
W przypadku funkcji Języka Java wyzwalacze i powiązania są konfigurowane przez dodawanie adnotacji do określonych metod i parametrów. Ten wyzwalacz HTTP (@HttpTrigger
) jest zdefiniowany w run
metodzie dla funkcji o nazwie HttpTriggerQueueOutput
, która zapisuje w kolejce magazynu zdefiniowanej @QueueOutput
przez adnotację parametru message
:
@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) {
context.getLogger().info("Java HTTP trigger processed a request.");
Aby uzyskać więcej informacji, zobacz Przewodnik dla deweloperów języka Java.
Sposób, w jaki wyzwalacze i powiązanie są definiowane dla funkcji Node.js zależy od określonej wersji Node.js dla usługi Functions:
W Node.js dla usługi Functions w wersji 4 można skonfigurować wyzwalacze i powiązania przy użyciu obiektów wyeksportowanych z modułu @azure/functions
. Aby uzyskać więcej informacji, zobacz przewodnik dla deweloperów Node.js.
W tym przykładzie jest funkcja wyzwalana przez protokół HTTP, która tworzy element kolejki dla każdego odebranego żądania HTTP.
Metoda http
na wyeksportowanym app
obiekcie definiuje wyzwalacz HTTP, a storageQueue
metoda w metodzie output
definiuje powiązanie wyjściowe dla tego wyzwalacza.
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.' };
},
});
Metoda http
na wyeksportowanym app
obiekcie definiuje wyzwalacz HTTP, a storageQueue
metoda w metodzie output
definiuje powiązanie wyjściowe dla tego wyzwalacza.
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,
});
Ten przykładowy function.json
plik definiuje funkcję:
{
"authLevel": "function",
"type": "httpTrigger",
"direction": "in",
"name": "Request",
"methods": [
"get",
"post"
]
},
{
"type": "http",
"direction": "out",
"name": "Response"
},
{
"type": "queue",
"direction": "out",
"name": "msg",
"queueName": "outqueue",
"connection": "AzureWebJobsStorage"
}
]
}
Aby uzyskać więcej informacji, zobacz Przewodnik dla deweloperów programu PowerShell.
Sposób definiowania funkcji zależy od wersji języka Python dla usługi Functions:
W języku Python dla usługi Functions w wersji 2 zdefiniujesz funkcję bezpośrednio w kodzie przy użyciu dekoratorów.
app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)
@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.')
Dodawanie powiązań do funkcji
Funkcję można połączyć z innymi usługami przy użyciu powiązań wejściowych lub wyjściowych. Dodaj powiązanie, dodając jego określone definicje do funkcji. Aby dowiedzieć się, jak to zrobić, zobacz Dodawanie powiązań do istniejącej funkcji w usłudze Azure Functions.
Usługa Azure Functions obsługuje wiele powiązań, które muszą być poprawnie skonfigurowane. Na przykład funkcja może odczytywać dane z kolejki (powiązanie wejściowe) i zapisywać dane w bazie danych (powiązanie wyjściowe) jednocześnie.
Obsługiwane powiązania
W tej tabeli przedstawiono powiązania obsługiwane w głównych wersjach środowiska uruchomieniowego usługi Azure Functions:
Typ | 1.x1 | 2.x i nowsze2 | Wyzwalacz | Dane wejściowe | Dane wyjściowe |
---|---|---|---|---|---|
Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Data Explorer | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Event Grid | ✔ | ✔ | ✔ | ✔ | |
Event Hubs | ✔ | ✔ | ✔ | ✔ | |
Http i elementy webhook | ✔ | ✔ | ✔ | ✔ | |
IoT Hub | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Queue Storage | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Table Storage | ✔ | ✔ | ✔ | ✔ | |
Czasomierz | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Uwagi:
- Pomoc techniczna zakończy się w wersji 1.x środowiska uruchomieniowego usługi Azure Functions 14 września 2026 r. Zdecydowanie zalecamy przeprowadzenie migracji aplikacji do wersji 4.x w celu uzyskania pełnej pomocy technicznej.
- Począwszy od środowiska uruchomieniowego w wersji 2.x, wszystkie powiązania z wyjątkiem protokołu HTTP i czasomierza muszą być zarejestrowane. Zobacz Rejestrowanie rozszerzeń powiązań.
- Wyzwalacze nie są obsługiwane w planie Zużycie. Wymaga wyzwalaczy opartych na środowisku uruchomieniowym.
- Obsługiwane tylko w rozwiązaniach Kubernetes, IoT Edge i innych trybach hostowanych samodzielnie.
Aby uzyskać informacje o powiązaniach w wersji zapoznawczej lub są zatwierdzone do użytku produkcyjnego, zobacz Obsługiwane języki.
Określone wersje rozszerzenia powiązania są obsługiwane tylko wtedy, gdy podstawowy zestaw SDK usługi jest obsługiwany. Zmiany obsługi w podstawowej wersji zestawu SDK usługi mają wpływ na obsługę rozszerzenia korzystającego.
Przykłady kodu powiązań
Poniższa tabela zawiera więcej przykładów określonych typów powiązań, które pokazują, jak pracować z powiązaniami w funkcjach. Najpierw wybierz kartę języka odpowiadającą projektowi.
Kod powiązania dla języka C# zależy od określonego modelu procesu.
Usługa | Przykłady | Przykłady |
---|---|---|
Blob storage | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Cosmos DB | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Data Explorer | Dane wejściowe Wyjście |
Link |
Azure SQL | Wyzwalacz Dane wejściowe Wyjście |
Link |
Event Grid | Wyzwalacz Wyjście |
Link |
Event Hubs | Wyzwalacz Wyjście |
|
Usługa IoT Hub | Wyzwalacz Wyjście |
|
HTTP | Wyzwalacz | Link |
Queue Storage | Wyzwalacz Wyjście |
Link |
RabbitMQ | Wyzwalacz Wyjście |
|
SendGrid | Wyjście | |
Service Bus | Wyzwalacz Wyjście |
Link |
SignalR | Wyzwalacz Dane wejściowe Wyjście |
|
Table Storage | Dane wejściowe Wyjście |
|
Czasomierz | Wyzwalacz | Link |
Twilio | Wyjście | Link |
Usługa | Przykłady | Przykłady |
---|---|---|
Blob storage | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Cosmos DB | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Data Explorer | Dane wejściowe Wyjście |
Link |
Azure SQL | Wyzwalacz Dane wejściowe Wyjście |
|
Event Grid | Wyzwalacz Wyjście |
Link |
Event Hubs | Wyzwalacz Wyjście |
|
Usługa IoT Hub | Wyzwalacz Wyjście |
|
HTTP | Wyzwalacz | Link |
Queue Storage | Wyzwalacz Wyjście |
Link |
RabbitMQ | Wyzwalacz Wyjście |
|
SendGrid | Wyjście | |
Service Bus | Wyzwalacz Wyjście |
Link |
SignalR | Wyzwalacz Dane wejściowe Wyjście |
|
Table Storage | Dane wejściowe Wyjście |
|
Czasomierz | Wyzwalacz | Link |
Twilio | Wyjście | Link |
Usługa | Przykłady | Przykłady |
---|---|---|
Blob storage | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Cosmos DB | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Data Explorer | Dane wejściowe Wyjście |
|
Azure SQL | Wyzwalacz Dane wejściowe Wyjście |
Link |
Event Grid | Wyzwalacz Wyjście |
Link |
Event Hubs | Wyzwalacz Wyjście |
|
Usługa IoT Hub | Wyzwalacz Wyjście |
|
HTTP | Wyzwalacz | Link |
Queue Storage | Wyzwalacz Wyjście |
Link |
RabbitMQ | Wyzwalacz Wyjście |
|
SendGrid | Wyjście | |
Service Bus | Wyzwalacz Wyjście |
Link |
SignalR | Wyzwalacz Dane wejściowe Wyjście |
|
Table Storage | Dane wejściowe Wyjście |
|
Czasomierz | Wyzwalacz | Link |
Twilio | Wyjście | Link |
Usługa | Przykłady | Przykłady |
---|---|---|
Blob storage | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Cosmos DB | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure SQL | Wyzwalacz Dane wejściowe Wyjście |
|
Event Grid | Wyzwalacz Wyjście |
Link |
Event Hubs | Wyzwalacz Wyjście |
|
Usługa IoT Hub | Wyzwalacz Wyjście |
|
HTTP | Wyzwalacz | Link |
Queue Storage | Wyzwalacz Wyjście |
Link |
RabbitMQ | Wyzwalacz Wyjście |
|
SendGrid | Wyjście | |
Service Bus | Wyzwalacz Wyjście |
Link |
SignalR | Wyzwalacz Dane wejściowe Wyjście |
|
Table Storage | Dane wejściowe Wyjście |
|
Czasomierz | Wyzwalacz | Link |
Twilio | Wyjście | Link |
Kod powiązania dla języka Python zależy od wersji modelu języka Python.
Usługa | Przykłady | Przykłady |
---|---|---|
Blob storage | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Cosmos DB | Wyzwalacz Dane wejściowe Wyjście |
Link |
Azure Data Explorer | Dane wejściowe Wyjście |
|
Azure SQL | Wyzwalacz Dane wejściowe Wyjście |
Link |
Event Grid | Wyzwalacz Wyjście |
Link |
Event Hubs | Wyzwalacz Wyjście |
|
Usługa IoT Hub | Wyzwalacz Wyjście |
|
HTTP | Wyzwalacz | Link |
Queue Storage | Wyzwalacz Wyjście |
Link |
RabbitMQ | Wyzwalacz Wyjście |
|
SendGrid | Wyjście | |
Service Bus | Wyzwalacz Wyjście |
Link |
SignalR | Wyzwalacz Dane wejściowe Wyjście |
|
Table Storage | Dane wejściowe Wyjście |
|
Czasomierz | Wyzwalacz | Link |
Twilio | Wyjście | Link |
Powiązania niestandardowe
Można tworzyć niestandardowe powiązania wejściowe i wyjściowe. Powiązania muszą być tworzone na platformie .NET, ale mogą być używane z dowolnego obsługiwanego języka. Aby uzyskać więcej informacji na temat tworzenia powiązań niestandardowych, zobacz Tworzenie niestandardowych powiązań wejściowych i wyjściowych.