Freigeben über


Verbinden von Funktionen mit Azure-Diensten mithilfe von Bindungen

Wenn Sie eine Funktion erstellen, wird sprachspezifischer Triggercode in Ihrem Projekt aus einer Reihe von Triggervorlagen hinzugefügt. Wenn Sie Ihre Funktion mithilfe von Eingabe- oder Ausgabebindungen mit anderen Diensten verbinden möchten, müssen Sie ihrer Funktion bestimmte Bindungsdefinitionen hinzufügen. Weitere Informationen zu Bindungen finden Sie unter Azure Functions-Trigger und Bindungskonzepte.

Lokale Entwicklung

Wenn Sie Funktionen lokal entwickeln, müssen Sie den Funktionscode aktualisieren, um Bindungen hinzuzufügen. Für Sprachen, die function.jsonverwenden, stellt Visual Studio Code Tools zum Hinzufügen von Bindungen zu einer Funktion bereit.

Manuelles Hinzufügen von Bindungen basierend auf Beispielen

Wenn Sie einer vorhandenen Funktion eine Bindung hinzufügen, müssen Sie der Funktionsdefinition im Code bindungsspezifische Attribute hinzufügen.

Wenn Sie einer vorhandenen Funktion eine Bindung hinzufügen, müssen Sie der Funktionsdefinition im Code bindungsspezifische Anmerkungen hinzufügen.

Wenn Sie einer vorhandenen Funktion eine Bindung hinzufügen, müssen Sie den Funktionscode aktualisieren und der konfigurationsdatei function.json eine Definition hinzufügen.

Wenn Sie einer vorhandenen Funktion eine Bindung hinzufügen, müssen Sie die Funktionsdefinition je nach Modell aktualisieren:

Sie müssen der Funktionsdefinition im Code bindungsspezifische Anmerkungen hinzufügen.

Das folgende Beispiel zeigt die Funktionsdefinition nach dem Hinzufügen einer Queue Storage-Ausgabebindung zu einer von HTTP ausgelösten Funktion:

Da eine per HTTP ausgelöste Funktion auch eine HTTP-Antwort zurückgibt, gibt die Funktion ein MultiResponse-Objekt zurück, das sowohl die HTTP- als auch die Warteschlangenausgabe darstellt.

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

Das folgende Beispiel ist die Definition des MultiResponse-Objekts, das die Ausgabebindung enthält:

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

Wenn Sie dieses Beispiel auf Ihr eigenes Projekt anwenden, müssen Sie möglicherweise HttpRequest zu HttpRequestData und IActionResult zu HttpResponseData ändern, je nachdem, ob Sie die ASP.NET Core-Integration verwenden oder nicht.

Meldungen werden an die Warteschlange gesendet, wenn die Funktion abgeschlossen ist. Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von Ihrem Prozessmodell ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

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

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

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' };
    }
  },
});

Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von der Version Ihres Node.js-Modells ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

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

Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

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

Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von der Version Ihres Python-Modells ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

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,
});

Die Art und Weise, wie Sie die Ausgabebindung definieren, hängt von der Version Ihres Node.js-Modells ab. Weitere Informationen, einschließlich Links zu Beispielbindungscode, auf den Sie verweisen können, finden Sie unter Hinzufügen von Bindungen zu einer Funktion.

Verwenden Sie die folgende Tabelle, um Beispiele für bestimmte Bindungstypen zu finden, die Sie beim Aktualisieren einer vorhandenen Funktion unterstützen können. Wählen Sie zunächst die Registerkarte „Sprache“ aus, die Ihrem Projekt entspricht.

Der Bindungscode für C# hängt vom jeweiligen Prozessmodell ab.

Dienstleistung Beispiele Beispiele
Blob Storage Auslösen
Eingabe
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Eingabe
Ausgabe
Verbinden
Azure-Daten-Explorer Eingabe
Ausgabe
Verbinden
Azure SQL Auslösen
Eingabe
Ausgabe
Verbinden
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
SignalR Auslösen
Eingabe
Ausgabe
Table Storage Eingabe
Ausgabe
Zeitschaltuhr Auslösen Verbinden
Twilio Ausgabe Verbinden
Dienstleistung Beispiele Beispiele
Blob Storage Auslösen
Eingabe
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Eingabe
Ausgabe
Verbinden
Azure-Daten-Explorer Eingabe
Ausgabe
Verbinden
Azure SQL Auslösen
Eingabe
Ausgabe
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
SignalR Auslösen
Eingabe
Ausgabe
Table Storage Eingabe
Ausgabe
Zeitschaltuhr Auslösen Verbinden
Twilio Ausgabe Verbinden
Dienstleistung Beispiele Beispiele
Blob Storage Auslösen
Eingabe
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Eingabe
Ausgabe
Verbinden
Azure-Daten-Explorer Eingabe
Ausgabe
Azure SQL Auslösen
Eingabe
Ausgabe
Verbinden
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
SignalR Auslösen
Eingabe
Ausgabe
Table Storage Eingabe
Ausgabe
Zeitschaltuhr Auslösen Verbinden
Twilio Ausgabe Verbinden
Dienstleistung Beispiele Beispiele
Blob Storage Auslösen
Eingabe
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Eingabe
Ausgabe
Verbinden
Azure SQL Auslösen
Eingabe
Ausgabe
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
SignalR Auslösen
Eingabe
Ausgabe
Table Storage Eingabe
Ausgabe
Zeitschaltuhr Auslösen Verbinden
Twilio Ausgabe Verbinden

Die Bindung von Code für Python hängt von der Python-Modellversion ab.

Dienstleistung Beispiele Beispiele
Blob Storage Auslösen
Eingabe
Ausgabe
Verbinden
Azure Cosmos DB (ein Microsoft-Datenbankdienst) Auslösen
Eingabe
Ausgabe
Verbinden
Azure-Daten-Explorer Eingabe
Ausgabe
Azure SQL Auslösen
Eingabe
Ausgabe
Verbinden
Ereignisraster Auslösen
Ausgabe
Verbinden
Ereignis-Hubs Auslösen
Ausgabe
IoT Hub Auslösen
Ausgabe
HTTP Auslösen Verbinden
Queue Storage Auslösen
Ausgabe
Verbinden
RabbitMQ Auslösen
Ausgabe
SendGrid Ausgabe
Dienstbus Auslösen
Ausgabe
Verbinden
SignalR Auslösen
Eingabe
Ausgabe
Table Storage Eingabe
Ausgabe
Zeitschaltuhr Auslösen Verbinden
Twilio Ausgabe Verbinden

Visual Studio Code

Wenn Sie Visual Studio Code verwenden, um Ihre Funktion zu entwickeln und Ihre Funktion eine function.json Datei verwendet, kann die Azure Functions-Erweiterung automatisch eine Bindung zu einer vorhandenen function.json Datei hinzufügen. Weitere Informationen finden Sie unter Hinzufügen von Eingabe- und Ausgabebindungen.

Azure-Portal

Wenn Sie Ihre Funktionen im Azure-Portal entwickeln, fügen Sie auf der Registerkarte " Integrieren " für eine bestimmte Funktion Eingabe- und Ausgabebindungen hinzu. Je nach Sprache werden die neuen Bindungen entweder der function.json-Datei oder den Methodenattributen hinzugefügt. Die folgenden Artikel zeigen Beispiele zum Hinzufügen von Bindungen zu einer vorhandenen Funktion im Portal:

Nächste Schritte