Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule poznasz ogólne pojęcia związane z wyzwalaczami i powiązaniami funkcji.
Wyzwalacze powodują uruchomienie funkcji. Wyzwalacz definiuje sposób wywoływanej funkcji, a funkcja musi mieć dokładnie jeden wyzwalacz. Wyzwalacze mogą również przekazywać dane do funkcji, tak jak w przypadku wywołań metod.
Powią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ązanie wyjściowe) przy użyciu parametrów powiązania. Wyzwalacz funkcji jest zasadniczo specjalnym typem powiązania wejściowego.
Można mieszać i dopasowywać powiązania, aby odpowiadały konkretnemu scenariuszowi 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ę.
Rozważmy następujące przykłady implementacji 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 Azure Blob Storage i tworzy nowy dokument usługi Azure Cosmos DB. | Czasomierz | Blob Storage | Azure Cosmos DB |
| Usługa Azure 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 są wyczerpujące, ale ilustrują, jak można używać razem wyzwalaczy i powiązań. Aby zapoznać się z bardziej kompleksowym zestawem scenariuszy, zobacz Scenariusze usługi Azure Functions.
Napiwek
Usługa Azure Functions nie wymaga 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ń
W poniższym przykładzie przedstawiono 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# można skonfigurować wyzwalacze i powiązania, dekorując metody i parametry za pomocą atrybutów języka C#. Określony atrybut, który zastosujesz, 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 przedstawiono definicję MultiResponse obiektu. Definicja obiektu powraca HttpResponse do żądania HTTP 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 języka C# dotyczący izolowanych modeli procesów roboczych.
Starsze funkcje skryptów języka C# używają function.json pliku definicji. 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 można skonfigurować wyzwalacze i powiązania, dodając adnotacje do określonych metod i parametrów. Ten wyzwalacz HTTP (@HttpTrigger) jest zdefiniowany w metodzie run dla funkcji o nazwie HttpTriggerQueueOutput. Funkcja zapisuje w kolejce magazynu, którą adnotacja @QueueOutput definiuje na parametrze 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 definiowania wyzwalaczy i powiązań dla funkcji Node.js zależy od określonej wersji Node.js dla usługi Azure Functions:
W Node.js dla usługi Azure 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.
Metoda http w wyeksportowanym app obiekcie definiuje wyzwalacz HTTP. Metoda storageQueue na 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 w wyeksportowanym app obiekcie definiuje wyzwalacz HTTP. Metoda storageQueue na 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 Azure Functions:
W języku Python dla usługi Azure 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.')
Zagadnienia dotyczące wiązań
Nie wszystkie usługi obsługują powiązania wejściowe i wyjściowe. Zobacz konkretne rozszerzenie powiązania dla konkretnych przykładów 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 tego artykułu.
Nazwy wyzwalaczy i powiązań są ograniczone do znaków alfanumerycznych i
_znaku podkreślenia.
Zadanie dodawania 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 webhooks | ✔ | ✔ | ✔ | ✔ | |
| Iot | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Aplikacje mobilne | ✔ | ✔ | ✔ | ||
| Protokół kontekstu modelu | ✔ | ✔ | |||
| Notification Hubs | ✔ | ✔ | |||
| Magazynowanie Kolejki | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Magistrala usług | ✔ | ✔ | ✔ | ✔ | |
| Usługa Azure SignalR Service | ✔ | ✔ | ✔ | ✔ | |
| Table Storage | ✔ | ✔ | ✔ | ✔ | |
| Czasomierz | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1Obsługa 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.
2 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ń usługi Azure Functions.
3 Wyzwalacze nie są obsługiwane w planie Zużycie. Ten typ powiązania wymaga wyzwalaczy opartych na środowisku uruchomieniowym.
4 Ten typ powiązania jest obsługiwany tylko w Kubernetes, Azure IoT Edge i innych trybach samodzielnie hostowanych.
Aby uzyskać informacje o powiązaniach w wersji zapoznawczej lub są zatwierdzone do użytku produkcyjnego, zobacz Obsługiwane języki.
Określone wersje rozszerzeń powiązań 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 dla 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 |
Łącze |
| Azure Cosmos DB |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Azure Data Explorer |
Dane wejściowe Wyjście |
Łącze |
| Azure SQL |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Event Grid |
Wyzwalacz Wyjście |
Łącze |
| Centra zdarzeń |
Wyzwalacz Wyjście |
|
| Centrum IoT |
Wyzwalacz Wyjście |
|
| HTTP | Wyzwalacz | Łącze |
| Queue Storage |
Wyzwalacz Wyjście |
Łącze |
| RabbitMQ |
Wyzwalacz Wyjście |
|
| SendGrid | Wyjście | |
| Magistrala usług |
Wyzwalacz Wyjście |
Łącze |
| Azure SignalR Service |
Wyzwalacz Dane wejściowe Wyjście |
|
| Magazyn tabel |
Dane wejściowe Wyjście |
|
| Czasomierz | Wyzwalacz | Łącze |
| Twilio | Wyjście | Łącze |
| Usługa | Przykłady | Przykłady |
|---|---|---|
| Blob Storage |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Azure Cosmos DB |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Azure Data Explorer |
Dane wejściowe Wyjście |
Łącze |
| Azure SQL |
Wyzwalacz Dane wejściowe Wyjście |
|
| Event Grid |
Wyzwalacz Wyjście |
Łącze |
| Centra zdarzeń |
Wyzwalacz Wyjście |
|
| Centrum IoT |
Wyzwalacz Wyjście |
|
| HTTP | Wyzwalacz | Łącze |
| Queue Storage |
Wyzwalacz Wyjście |
Łącze |
| RabbitMQ |
Wyzwalacz Wyjście |
|
| SendGrid | Wyjście | |
| Magistrala usług |
Wyzwalacz Wyjście |
Łącze |
| Azure SignalR Service |
Wyzwalacz Dane wejściowe Wyjście |
|
| Magazyn tabel |
Dane wejściowe Wyjście |
|
| Czasomierz | Wyzwalacz | Łącze |
| Twilio | Wyjście |
| Usługa | Przykłady | Przykłady |
|---|---|---|
| Blob Storage |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Azure Cosmos DB |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Azure Data Explorer |
Dane wejściowe Wyjście |
|
| Azure SQL |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Event Grid |
Wyzwalacz Wyjście |
|
| Centra zdarzeń |
Wyzwalacz Wyjście |
|
| Centrum IoT |
Wyzwalacz Wyjście |
|
| HTTP | Wyzwalacz | Łącze |
| Queue Storage |
Wyzwalacz Wyjście |
Łącze |
| RabbitMQ |
Wyzwalacz Wyjście |
|
| SendGrid | Wyjście | |
| Magistrala usług |
Wyzwalacz Wyjście |
Łącze |
| Azure SignalR Service |
Wyzwalacz Dane wejściowe Wyjście |
|
| Magazyn tabel |
Dane wejściowe Wyjście |
|
| Czasomierz | Wyzwalacz | |
| Twilio | Wyjście |
| Usługa | Przykłady | Przykłady |
|---|---|---|
| Blob Storage |
Wyzwalacz Dane wejściowe Wyjście |
|
| Azure Cosmos DB |
Wyzwalacz Dane wejściowe Wyjście |
|
| Azure SQL |
Wyzwalacz Dane wejściowe Wyjście |
|
| Event Grid |
Wyzwalacz Wyjście |
|
| Centra zdarzeń |
Wyzwalacz Wyjście |
|
| Centrum IoT |
Wyzwalacz Wyjście |
|
| HTTP | Wyzwalacz | Łącze |
| Queue Storage |
Wyzwalacz Wyjście |
|
| RabbitMQ |
Wyzwalacz Wyjście |
|
| SendGrid | Wyjście | |
| Magistrala usług |
Wyzwalacz Wyjście |
|
| Azure SignalR Service |
Wyzwalacz Dane wejściowe Wyjście |
|
| Magazyn tabel |
Dane wejściowe Wyjście |
|
| Czasomierz | Wyzwalacz | |
| Twilio | Wyjście |
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 |
Łącze |
| Azure Cosmos DB |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Azure Data Explorer |
Dane wejściowe Wyjście |
|
| Azure SQL |
Wyzwalacz Dane wejściowe Wyjście |
Łącze |
| Event Grid |
Wyzwalacz Wyjście |
|
| Centra zdarzeń |
Wyzwalacz Wyjście |
|
| Centrum IoT |
Wyzwalacz Wyjście |
|
| HTTP | Wyzwalacz | Łącze |
| Queue Storage |
Wyzwalacz Wyjście |
|
| RabbitMQ |
Wyzwalacz Wyjście |
|
| SendGrid | Wyjście | |
| Magistrala usług |
Wyzwalacz Wyjście |
Łącze |
| Azure SignalR Service |
Wyzwalacz Dane wejściowe Wyjście |
|
| Magazyn tabel |
Dane wejściowe Wyjście |
|
| Czasomierz | Wyzwalacz | |
| Twilio | Wyjście |
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 przez dowolny obsługiwany język. Aby uzyskać więcej informacji na temat tworzenia powiązań niestandardowych, zobacz Tworzenie niestandardowych powiązań wejściowych i wyjściowych.