Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
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 HttpExample. Funkcja zapisuje w kolejce przechowywania o nazwie outqueue, którą adnotacja @QueueOutput określa dla parametru msg.
@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 | 4.x1 | 1.x2 | 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 | ✔ | ✔ | ✔ |
- Zarejestruj wszystkie powiązania z wyjątkiem protokołu HTTP i czasomierza. Zobacz Rejestrowanie rozszerzeń powiązań usługi Azure Functions. Ten krok nie jest wymagany w przypadku korzystania ze środowiska uruchomieniowego usługi Functions w wersji 1.x.
- Wsparcie kończy się dla wersji 1.x środowiska uruchomieniowego usługi Azure Functions 14 września 2026 r. Aby uzyskać pełną pomoc techniczną, przeprowadź migrację aplikacji do wersji 4.x.
- Wyzwalacze nie są obsługiwane w planie Zużycie. Ten typ powiązania wymaga wyzwalaczy opartych na środowisku uruchomieniowym.
- Ten typ powiązania jest obsługiwany tylko w rozwiązaniach Kubernetes, Azure 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 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.
Typy zestawów SDK
Rozszerzenia powiązań usługi Azure Functions używają zestawów SDK usług platformy Azure do łączenia się z usługami platformy Azure. Określone typy zestawów SDK używane przez powiązania mogą mieć wpływ na sposób pracy z danymi w funkcjach. Niektóre powiązania obsługują typy specyficzne dla zestawu SDK, które zapewniają bogatszą funkcjonalność i lepszą integrację z usługą, podczas gdy inne używają bardziej ogólnych typów, takich jak ciągi lub tablice bajtów. Jeśli są dostępne, użycie typów specyficznych dla zestawu SDK może zapewnić korzyści, takie jak lepsze bezpieczeństwo typów, łatwiejsze manipulowanie danymi i dostęp do funkcji specyficznych dla usługi.
Ta tabela wskazuje rozszerzenia powiązań, które obecnie obsługują typy zestawów SDK:
| Extension | Types | Poziom pomocy technicznej |
|---|---|---|
| Azure Blob Storage | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Wyzwalacz: ogólna dostępność Dane wejściowe: ogólna dostępność |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Dane wejściowe: ogólna dostępność |
| Azure Event Grid | CloudEventEventGridEvent |
Wyzwalacz: ogólna dostępność |
| Azure Event Hubs | EventDataEventHubProducerClient |
Wyzwalacz: ogólna dostępność |
| Azure Queue Storage | QueueClientQueueMessage |
Wyzwalacz: ogólna dostępność |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Wyzwalacz: ogólna dostępność |
| Azure Table Storage | TableClientTableEntity |
Dane wejściowe: ogólna dostępność |
Zagadnienia dotyczące typów zestawów SDK:
- W przypadku używania wyrażeń powiązań , które opierają się na danych wyzwalacza, nie można używać typów zestawu SDK dla samego wyzwalacza.
- W przypadku scenariuszy dotyczących wyjścia, w których można użyć typu SDK, należy utworzyć klientów SDK i nawiązać bezpośrednio współpracę z nimi zamiast używać powiązania wyjściowego.
- Wyzwalacz usługi Azure Cosmos DB używa zestawienia zmian usługi Azure Cosmos DB i uwidacznia elementy zestawienia zmian jako typy serializowalne w formacie JSON. W związku z tym typy zestawów SDK nie są obsługiwane dla tego wyzwalacza.
Aby uzyskać więcej informacji, zobacz Typy zestawów SDK w przewodniku dla deweloperów języka C#.
| Extension | Types | Poziom pomocy technicznej | Przykłady |
|---|---|---|---|
| Azure Blob Storage | BlobClientContainerClientStorageStreamDownloader |
Wyzwalacz: ogólna dostępność Dane wejściowe: ogólna dostępność |
Szybki startBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Dane wejściowe: wersja zapoznawcza |
Szybki startContainerProxyCosmosClientDatabaseProxy |
| Azure Event Hubs | EventData |
Wyzwalacz: wersja zapoznawcza |
Szybki startEventData |
| Azure Service Bus | ServiceBusReceivedMessage |
Wyzwalacz: wersja zapoznawcza |
Szybki startServiceBusReceivedMessage |
Zagadnienia dotyczące typów zestawów SDK:
- W przypadku scenariuszy dotyczących wyjścia, w których można użyć typu SDK, należy utworzyć klientów SDK i nawiązać bezpośrednio współpracę z nimi zamiast używać powiązania wyjściowego.
- Wyzwalacz usługi Azure Cosmos DB używa zestawienia zmian usługi Azure Cosmos DB i uwidacznia elementy zestawienia zmian jako typy serializowalne w formacie JSON. W związku z tym typy zestawów SDK nie są obsługiwane dla tego wyzwalacza.
Typy zestawów SDK są obsługiwane tylko w przypadku korzystania z modelu programowania w języku Python w wersji 2. Aby uzyskać więcej informacji, zobacz Powiązania typów zestawu SDK w przewodniku dla deweloperów języka Python.
| Extension | Types | Poziom pomocy technicznej |
|---|---|---|
| Azure Blob Storage | BlobClientContainerClientReadableStream |
Preview |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Preview |
Typy zestawów SDK są obsługiwane tylko w przypadku korzystania z modelu programowania Node w wersji 4. Aby uzyskać więcej informacji, zobacz Typy zestawów SDK w przewodniku dla deweloperów Node.js.
| Extension | Types | Poziom pomocy technicznej |
|---|---|---|
| Azure Blob Storage | BlobClientBlobContainerClient |
Preview |
Aby uzyskać więcej informacji, zobacz Typy zestawów SDK w przewodniku dla deweloperów języka Java.
Ważne
Typy zestawów SDK nie są obecnie obsługiwane w przypadku aplikacji programu PowerShell.
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.