Udostępnij za pomocą


Wyzwalacze i powiązania usługi 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. 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.