Udostępnij za pomocą


Łączenie funkcji z usługami platformy Azure przy użyciu powiązań

Podczas tworzenia funkcji kod wyzwalacza specyficzny dla języka jest dodawany w projekcie z zestawu szablonów wyzwalaczy. Jeśli chcesz połączyć funkcję z innymi usługami przy użyciu powiązań wejściowych lub wyjściowych, musisz dodać określone definicje powiązań w funkcji. Aby dowiedzieć się więcej na temat powiązań, zobacz Pojęcia dotyczące wyzwalaczy i powiązań usługi Azure Functions.

Rozwój lokalny

Podczas lokalnego opracowywania funkcji należy zaktualizować kod funkcji, aby dodać powiązania. W przypadku języków korzystających z function.jsonprogram Visual Studio Code udostępnia narzędzia umożliwiające dodawanie powiązań do funkcji.

Ręczne dodawanie powiązań na podstawie przykładów

Podczas dodawania powiązania do istniejącej funkcji należy dodać atrybuty specyficzne dla powiązania do definicji funkcji w kodzie.

Podczas dodawania powiązania do istniejącej funkcji należy dodać adnotacje specyficzne dla powiązania do definicji funkcji w kodzie.

Podczas dodawania powiązania do istniejącej funkcji należy zaktualizować kod funkcji i dodać definicję do pliku konfiguracji function.json.

Podczas dodawania powiązania do istniejącej funkcji należy zaktualizować definicję funkcji w zależności od modelu:

Należy dodać adnotacje specyficzne dla powiązania do definicji funkcji w kodzie.

Poniższy przykład przedstawia definicję funkcji po dodaniu powiązania wyjściowego Queue Storage do funkcji wyzwalanej HTTP:

Ponieważ funkcja wyzwalana przez protokół HTTP zwraca również odpowiedź HTTP, funkcja zwraca MultiResponse obiekt, który reprezentuje zarówno dane wyjściowe HTTP, jak i kolejki.

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

Ten przykład przedstawia definicję obiektu MultiResponse, który zawiera powiązanie wyjściowe.

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

W przypadku zastosowania tego przykładu do własnego projektu może być konieczne zmianę HttpRequestHttpRequestData na i IActionResult na HttpResponseData, w zależności od tego, czy używasz integracji z platformą ASP.NET Core, czy nie.

Po zakończeniu działania funkcji komunikaty są wysyłane do kolejki. Sposób definiowania powiązania wyjściowego zależy od modelu procesu. Aby uzyskać więcej informacji, w tym linki do przykładowego kodu powiązania, do którego można się odwołać, zobacz Dodawanie powiązań do funkcji.

@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) {

Aby uzyskać więcej informacji, w tym linki do przykładowego kodu powiązania, do którego można się odwołać, zobacz Dodawanie powiązań do funkcji.

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

Sposób definiowania powiązania wyjściowego zależy od wersji modelu Node.js. Aby uzyskać więcej informacji, w tym linki do przykładowego kodu powiązania, do którego można się odwołać, zobacz Dodawanie powiązań do funkcji.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Aby uzyskać więcej informacji, w tym linki do przykładowego kodu powiązania, do którego można się odwołać, zobacz Dodawanie powiązań do funkcji.

@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.')

Sposób definiowania powiązania wyjściowego zależy od wersji modelu języka Python. Aby uzyskać więcej informacji, w tym linki do przykładowego kodu powiązania, do którego można się odwołać, zobacz Dodawanie powiązań do funkcji.

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

Sposób definiowania powiązania wyjściowego zależy od wersji modelu Node.js. Aby uzyskać więcej informacji, w tym linki do przykładowego kodu powiązania, do którego można się odwołać, zobacz Dodawanie powiązań do funkcji.

Skorzystaj z poniższej tabeli, aby znaleźć przykłady określonych typów powiązań, których można użyć, aby przeprowadzić aktualizowanie istniejącej funkcji. 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
Łącze
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Data Explorer Dane wejściowe
Wynik
Łącze
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Łącze
Event Grid Wyzwalacz
Wynik
Łącze
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Łącze
Queue Storage Wyzwalacz
Wynik
Łącze
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Łącze
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz Łącze
Twilio Wynik Łącze
Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Data Explorer Dane wejściowe
Wynik
Łącze
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Event Grid Wyzwalacz
Wynik
Łącze
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Łącze
Queue Storage Wyzwalacz
Wynik
Łącze
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Łącze
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz Łącze
Twilio Wynik
Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Data Explorer Dane wejściowe
Wynik
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Łącze
Event Grid Wyzwalacz
Wynik
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Łącze
Queue Storage Wyzwalacz
Wynik
Łącze
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Łącze
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz
Twilio Wynik
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 Łącze
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 Python zależy od wersji modelu języka Python.

Usługa Przykłady Przykłady
Blob Storage Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Cosmos DB Wyzwalacz
Dane wejściowe
Wynik
Łącze
Azure Data Explorer Dane wejściowe
Wynik
Azure SQL Wyzwalacz
Dane wejściowe
Wynik
Łącze
Event Grid Wyzwalacz
Wynik
Centra zdarzeń Wyzwalacz
Wynik
Centrum IoT Wyzwalacz
Wynik
HTTP Wyzwalacz Łącze
Queue Storage Wyzwalacz
Wynik
RabbitMQ Wyzwalacz
Wynik
SendGrid Wynik
Magistrala usług Wyzwalacz
Wynik
Łącze
Azure SignalR Service Wyzwalacz
Dane wejściowe
Wynik
Magazyn tabel Dane wejściowe
Wynik
Czasomierz Wyzwalacz
Twilio Wynik

Visual Studio Code

Gdy używasz programu Visual Studio Code do opracowywania funkcji, a funkcja używa pliku function.json, rozszerzenie usługi Azure Functions może automatycznie dodać powiązanie do istniejącego pliku function.json. Aby dowiedzieć się więcej, zobacz Dodawanie powiązań wejściowych i wyjściowych.

Azure Portal

Podczas opracowywania funkcji w witrynie Azure Portal można dodawać powiązania wejściowe i wyjściowe na karcie Integracja dla danej funkcji. Nowe powiązania są dodawane do pliku function.json lub atrybutów metody w zależności od języka. W poniższych artykułach przedstawiono przykłady dodawania powiązań do istniejącej funkcji w portalu:

Dalsze kroki