Udostępnij przez


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 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
  1. 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.
  2. 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.
  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 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 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 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 BlobClient
ContainerClient
StorageStreamDownloader
Wyzwalacz: ogólna dostępność
Dane wejściowe: ogólna dostępność
Szybki start
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Dane wejściowe: wersja zapoznawcza Szybki start
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Wyzwalacz: wersja zapoznawcza Szybki start
EventData
Azure Service Bus ServiceBusReceivedMessage Wyzwalacz: wersja zapoznawcza Szybki start
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 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 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 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.