Wyzwalacze i powiązania w Azure Functions

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. Zasadniczo, wyzwalacz funkcji to specjalny typ 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 otrzymuje 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ść Azure Blob Storage i tworzy nowy dokument Azure Cosmos DB. Czasomierz Blob Storage Azure Cosmos DB
Azure Event Grid służy do odczytywania obrazu z Blob Storage i dokumentu z 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 uzyskać bardziej kompleksowy zestaw scenariuszy, zobacz Azure Functions scenariusze.

Wskazówka

Azure Functions nie wymaga użycia powiązań wejściowych i wyjściowych w celu nawiązania połączenia z usługami Azure. Zawsze możesz utworzyć klienta 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 pokazano funkcję wyzwalaną przez protokół HTTP z powiązaniem wyjściowym, które zapisuje komunikat w kolejce 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#:

Definiujesz wyzwalacz HTTP (HttpTrigger) w metodzie Run dla funkcji o nazwie, HttpExample która zwraca obiekt:MultiResponse

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

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 IActionResult 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 przewodnik dewelopera dotyczący skryptów Azure Functions C# (.csx).

W przypadku funkcji Java można skonfigurować wyzwalacze i powiązania, dodając adnotacje do określonych metod i parametrów. Definiujesz ten wyzwalacz HTTP (@HttpTrigger) 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 Java.

Sposób definiowania wyzwalaczy i powiązań dla funkcji Node.js zależy od określonej wersji Node.js dla Azure Functions:

W Node.js dla 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 eksportowanego app obiektu definiuje http 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 eksportowanego app obiektu definiuje http 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, w jaki definiujesz tę funkcję, zależy od wersji Python for Azure Functions:

W Python dla Azure Functions w wersji 2 zdefiniujesz funkcję bezpośrednio w kodzie przy użyciu dekoratorów:

app = func.FunctionApp(http_auth_level=func.AuthLevel.FUNCTION)

@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 Dodaj powiązania do istniejącej funkcji w Azure Functions.

Azure Functions obsługuje wiele powiązań, które musisz skonfigurować poprawnie. Na przykład funkcja może jednocześnie odczytywać dane z kolejki (wiązanie wejściowe) i zapisywać dane do bazy danych (wiązanie wyjściowe).

Obsługiwane powiązania

Ta tabela przedstawia wyzwalacze i powiązania dostępne w Azure Functions:1

Typ Wyzwalacz Dane wejściowe Dane wyjściowe
Blob Storage ✔ ✔ ✔
Azure Cosmos DB ✔ ✔ ✔
Azure Data Explorer ✔ ✔
Azure SQL ✔ ✔ ✔
Dapr3 ✔ ✔ ✔
Siatka zdarzeń ✔ ✔
Event Hubs ✔ ✔
HTTP i webhooks ✔ ✔
IoT Hub ✔
Kafka2 ✔ ✔
Protokół kontekstu modelu ✔
Magazynowanie Kolejki ✔ ✔
Redis ✔ ✔ ✔
RabbitMQ2 ✔ ✔
SendGrid ✔
Service Bus ✔ ✔
Azure SignalR Service ✔ ✔ ✔
Przechowywanie stołów ✔ ✔
Minutnik ✔
Twilio ✔
Łącznik zarządzany ✔
  1. Zarejestruj wszystkie powiązania z wyjątkiem protokołu HTTP i czasomierza. Zobacz Register Azure Functions binding extensions.
  2. Wyzwalacze nie są obsługiwane w planie Zużycie. Ten typ powiązania wymaga wyzwalaczy opartych na środowisku uruchomieniowym.
  3. 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 które 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 w obsłudze podstawowej wersji zestawu SDK usługi mają wpływ na obsługę rozszerzenia, które z niej korzysta.

Łączniki zarządzane

Zarządzane konektory w przestrzeni nazw Azure Connector rozszerzają dostępne usługi poprzez obsługiwane powiązania. Możesz używać triggerów łączących i akcji SDK do integracji z usługami takimi jak Microsoft 365, Teams i SharePoint, podczas gdy Connector Namespace zarządza webhookami, uwierzytelnianiem i powtórkami. Aby dowiedzieć się więcej, zobacz: Użyj zarządzanych konektorów w Azure Functions.

Typy zestawów SDK

Rozszerzenia powiązań Azure Functions używają SDK Azure do łączenia się z usługami 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 BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Wyzwalacz: ogólna dostępność
Dane wejściowe: ogólna dostępność
Azure Cosmos DB CosmosClient
Database
Container
Dane wejściowe: ogólna dostępność
Azure Event Grid CloudEvent
EventGridEvent
Wyzwalacz: ogólna dostępność
Azure Event Hubs EventData
EventHubProducerClient
Wyzwalacz: ogólna dostępność
Azure Queue Storage QueueClient
QueueMessage
Wyzwalacz: ogólna dostępność
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Wyzwalacz: ogólna dostępność
Azure Table Storage TableClient
TableEntity
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 Azure Cosmos DB używa strumienia zmian Azure Cosmos DB i uwidacznia elementy strumienia zmian jako typy możliwe do serializacji 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 BlobClient
ContainerClient
StorageStreamDownloader
Wyzwalacz: ogólna dostępność
Dane wejściowe: ogólna dostępność
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Dane wejściowe: wersja zapoznawcza Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Wyzwalacz: wersja zapoznawcza Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Wyzwalacz: wersja zapoznawcza Quickstart
ServiceBusReceivedMessage

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 Azure Cosmos DB używa strumienia zmian Azure Cosmos DB i uwidacznia elementy strumienia zmian jako typy możliwe do serializacji 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 Python w wersji 2. Aby uzyskać więcej informacji, zobacz powiązania typu SDK w przewodniku dewelopera Python.

Extension Types Poziom pomocy technicznej
Azure Blob Storage BlobClient
ContainerClient
ReadableStream
Preview
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
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 BlobClient
BlobContainerClient
Preview

Aby uzyskać więcej informacji, zobacz typy SDK w przewodniku dewelopera Java.

Ważne

Typy zestawów SDK nie są obecnie obsługiwane w przypadku aplikacji programu PowerShell.

Język Go obsługuje iniekcję klienta zestawu SDK dla wyzwalaczy, które zapewniają Azure SDK klientów. W publicznej wersji zapoznawczej wyzwalacze usługi Blob Storage mogą otrzymywać uwierzytelniony pakiet Azure SDK *blob.Client bezpośrednio w funkcji obsługi.

Extension Types Poziom pomocy technicznej
Azure Blob Storage *blob.Client Preview

Aby uzyskać więcej informacji, zobacz Wyzwalacze rozszerzeń w dokumentacji dla deweloperów języka Go.

Powiązania agentów

Ważne

Powiązania agentów dla aplikacji funkcji w języku Python są obecnie dostępne w wersji zapoznawczej. Funkcje, nazwy pakietów i konfiguracja mogą się zmieniać przed ogólną dostępnością.

Powiązania agenta umożliwiają wstrzyknięcie obiektu Agent do funkcji w języku Python przy zachowaniu standardowych wyzwalaczy, powiązań i logiki aplikacji Azure Functions. Używaj wiązań agentów, gdy część workflow funkcji korzysta z rozumowania agentycznego, ale kod funkcji musi pozostać odpowiedzialny za wykonanie.

Powiązania agentów obsługują także orkiestrację Durable Functions. Interfejs API context.call_agent() bezpieczny względem odtwarzania uruchamia operacje agenta w ramach działania, dzięki czemu ponowne odtwarzanie orkiestracji pozostaje deterministyczne.

Powiązania agentów są dostępne dla modelu programowania Python v2. Więcej informacji można znaleźć w artykule Powiązania agentów dla aplikacji funkcyjnych w Python.

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
Wynik
Link
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Data Explorer Dane wejściowe
Wynik
Link
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Link
Event Grid Wyzwalacz
Wynik
Link
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Link
Protokół kontekstu modelu Wyzwalacz narzędzia
Wyzwalacz zasobów
Wyzwalacz promptu
Link
Queue Storage Wyzwalacz
Wynik
Link
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Link
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz Link
Twilio Wynik Link
Łączniki zarządzane Wyzwalacz Link
Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Data Explorer Dane wejściowe
Wynik
Link
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Event Grid Wyzwalacz
Wynik
Link
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Link
Protokół kontekstu modelu Wyzwalacz narzędzia
Wyzwalacz zasobów
Wyzwalacz promptu
Link
Queue Storage Wyzwalacz
Wynik
Link
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Link
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz Link
Twilio Wynik
Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Data Explorer Dane wejściowe
Wynik
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Link
Event Grid Wyzwalacz
Wynik
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Link
Protokół kontekstu modelu Wyzwalacz narzędzia
Wyzwalacz zasobów
Wyzwalacz promptu
Link
Queue Storage Wyzwalacz
Wynik
Link
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Link
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz
Twilio Wynik
Łączniki zarządzane Wyzwalacz Link
Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Event Grid Wyzwalacz
Wynik
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Link
Queue Storage Wyzwalacz
Wynik
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz
Twilio Wynik

Kod powiązania dla języka Pythona zależy od wersji modelu Pythona.

Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Link
Azure Data Explorer Dane wejściowe
Wynik
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Link
Event Grid Wyzwalacz
Wynik
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Link
Protokół kontekstu modelu Wyzwalacz narzędzia
Wyzwalacz zasobów
Wyzwalacz promptu
Link
Queue Storage Wyzwalacz
Wynik
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Link
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz
Twilio Wynik
Łączniki zarządzane Wyzwalacz Link

Powiązania niestandardowe

Można tworzyć niestandardowe powiązania wejściowe i wyjściowe. Musisz tworzyć powiązania w środowisku .NET, ale możesz z nich korzystać w dowolnym obsługiwanym języku. Aby uzyskać więcej informacji na temat tworzenia powiązań niestandardowych, zobacz Tworzenie niestandardowych powiązań wejściowych i wyjściowych.