Udostępnij za pośrednictwem


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:

  1. 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.
  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ń.
  3. Wyzwalacze nie są obsługiwane w planie Zużycie. Wymaga wyzwalaczy opartych na środowisku uruchomieniowym.
  4. 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.