Připojení funkcí ke službám Azure pomocí vazeb

Když vytvoříte funkci, spouštěcí kód specifický pro jazyk se přidá do projektu ze sady spouštěcích šablon. Pokud chcete funkci připojit k jiným službám pomocí vstupních nebo výstupních vazeb, musíte do své funkce přidat konkrétní definice vazeb. Další informace o vazbách najdete v tématu koncepty triggerů a vazeb Azure Functions.

Místní vývoj

Při místním vývoji funkcí je potřeba aktualizovat kód funkce a přidat vazby. Pro jazyky, které používají function.json, Visual Studio Code poskytuje nástroje pro přidání vazeb do funkce.

Ruční přidání vazeb na základě příkladů

Při přidávání vazby do existující funkce je potřeba do definice funkce v kódu přidat atributy specifické pro vazbu.

Když přidáváte vazbu do existující funkce, musíte do definice funkce v kódu přidat poznámky specifické pro vazbu.

Při přidávání vazby do existující funkce je potřeba aktualizovat kód funkce a přidat definici do konfiguračního souboru function.json.

Při přidávání vazby k existující funkci je potřeba aktualizovat definici funkce v závislosti na modelu:

Do definice funkce v kódu je potřeba přidat poznámky specifické pro vazbu.

V jazyce Go konfigurujete podporované aktivační události pomocí plynulého registračního rozhraní API ve funkci main(). Každý typ triggeru má vyhrazenou metodu registrace s funkčními možnostmi konfigurace. Není potřeba žádný samostatný konfigurační soubor vazby.

Následující příklad ukazuje funkci aktivovanou protokolem HTTP. Pokud potřebujete zapisovat do Queue Storage z funkce Go, použijte Azure SDK pro Go přímo, protože výstupní vazby Queue Storage nejsou v současné době podporovány pracovním procesem Go:

package main

import (
    "encoding/json"
    "fmt"
    "net/http"

    "github.com/azure/azure-functions-golang-worker/sdk"
    "github.com/azure/azure-functions-golang-worker/worker"
)

func main() {
    app := sdk.FunctionApp()
    app.HTTP("HttpExample", httpHandler,
        sdk.WithMethods("GET", "POST"),
        sdk.WithAuth("anonymous"),
    )
    worker.Start(app)
}

func httpHandler(w http.ResponseWriter, r *http.Request) {
    name := r.URL.Query().Get("name")
    if name == "" {
        var body struct{ Name string }
        json.NewDecoder(r.Body).Decode(&body)
        name = body.Name
    }
    if name == "" {
        w.WriteHeader(http.StatusBadRequest)
        fmt.Fprint(w, "Please pass a name on the query string or in the request body.")
        return
    }
    // Queue output bindings are not yet supported in the Go worker.
    // Use the Azure SDK for Go to write to Queue Storage directly.
    fmt.Fprintf(w, "Hello, %s!", name)
}

Poznámka:

Pracovní proces Go aktuálně podporuje pouze triggery. Vstupní a výstupní vazby, jako jsou výstupní vazby Queue Storage, ještě nejsou k dispozici. Pomocí Azure SDK pro Go můžete pracovat s dalšími službami Azure přímo z kódu funkce.

Pracovní proces Go aktuálně podporuje následující typy triggerů:

Typ aktivační události Metoda registrace Příklady
HTTP app.HTTP() ukázky HTTP
Časovač app.Timer() Ukázky časovače
Azure Cosmos DB app.CosmosDB() ukázky Cosmos DB
Azure Service Bus (queue) app.ServiceBusQueue() Ukázky front služby Service Bus
Azure Service Bus (téma) app.ServiceBusTopic() ukázky témat Service Bus
Event Hubs app.EventHub() Ukázky služby Event Hubs
Event Grid app.EventGrid() Ukázky Event Gridu
Blob Storage app.Blob() Ukázky blobů

Další informace najdete v referenčních informacích pro vývojáře Go.

Následující příklad ukazuje definici funkce po přidání výstupní vazby Queue Storage výstupní vazby do funkce aktivované HTTP:

Protože funkce aktivovaná protokolem HTTP také vrací odpověď HTTP, funkce vrátí MultiResponse objekt, který představuje výstup HTTP i fronty.

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

Tento příklad je definice objektu MultiResponse , který obsahuje výstupní vazbu:

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

V tomto příkladu se používá integrace ASP.NET Core. Pokud nepoužíváte integraci ASP.NET Core, musíte změnit HttpRequest na HttpRequestData a IActionResult na HttpResponseData.

Zprávy se posílají do fronty po dokončení funkce. Způsob, jakým definujete výstupní vazbu, závisí na modelu procesu. Další informace, včetně odkazů na ukázkový kód vazby, na který můžete odkazovat, najdete v tématu Přidání vazeb do funkce.

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

Další informace, včetně odkazů na ukázkový kód vazby, na který můžete odkazovat, najdete v tématu Přidání vazeb do funkce.

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

Způsob, jakým definujete výstupní vazbu, závisí na verzi modelu Node.js. Další informace, včetně odkazů na ukázkový kód vazby, na který můžete odkazovat, najdete v tématu Přidání vazeb do funkce.

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

Další informace, včetně odkazů na ukázkový kód vazby, na který můžete odkazovat, najdete v tématu Přidání vazeb do funkce.

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

Způsob, jakým definujete výstupní vazbu, závisí na verzi modelu Pythonu. Další informace, včetně odkazů na ukázkový kód vazby, na který můžete odkazovat, najdete v tématu Přidání vazeb do funkce.

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

Způsob, jakým definujete výstupní vazbu, závisí na verzi modelu Node.js. Další informace, včetně odkazů na ukázkový kód vazby, na který můžete odkazovat, najdete v tématu Přidání vazeb do funkce.

V následující tabulce najdete příklady konkrétních typů vazeb, které můžete použít k aktualizaci existující funkce. Nejprve zvolte kartu jazyka, která odpovídá vašemu project.

Vázání kódu pro jazyk C# závisí na konkrétním modelu procesu.

Služba Příklady Vzorky
Blob Storage Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Link
Azure SQL Trigger
Input
Output
Link
Event Grid Trigger
Output
Link
Centra událostí Trigger
Output
Centrum IoT Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Sběrnice Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Časovač Trigger Link
Twilio Output Link
Služba Příklady Vzorky
Blob Storage Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Link
Azure SQL Trigger
Input
Output
Event Grid Trigger
Output
Link
Centra událostí Trigger
Output
Centrum IoT Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Sběrnice Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Časovač Trigger Link
Twilio Output
Služba Příklady Vzorky
Blob Storage Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Azure SQL Trigger
Input
Output
Link
Event Grid Trigger
Output
Centra událostí Trigger
Output
Centrum IoT Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Sběrnice Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Časovač Trigger
Twilio Output
Služba Příklady Vzorky
Blob Storage Trigger
Input
Output
Azure Cosmos DB Trigger
Input
Output
Azure SQL Trigger
Input
Output
Event Grid Trigger
Output
Centra událostí Trigger
Output
Centrum IoT Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Sběrnice Trigger
Output
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Časovač Trigger
Twilio Output

Vázání kódu pro Python závisí na verzi modelu Pythonu.

Služba Příklady Vzorky
Blob Storage Trigger
Input
Output
Link
Azure Cosmos DB Trigger
Input
Output
Link
Azure Data Explorer Input
Output
Azure SQL Trigger
Input
Output
Link
Event Grid Trigger
Output
Centra událostí Trigger
Output
Centrum IoT Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Sběrnice Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Časovač Trigger
Twilio Output

Visual Studio Code

Když k vývoji funkce použijete Visual Studio Code a funkce použije soubor function.json, rozšíření Azure Functions může automaticky přidat vazbu k existujícímu souboru function.json. Další informace najdete v tématu Přidání vstupních a výstupních vazeb.

Azure Portal

Při vývoji funkcí v Azure portal přidáte vstupní a výstupní vazby do karty Integrate pro danou funkci. Nové vazby se přidají do souboru function.json nebo do atributů metody v závislosti na vašem jazyce. Následující články ukazují příklady přidání vazeb do existující funkce na portálu:

Další kroky