Megosztás a következőn keresztül:


Függvények csatlakoztatása Azure-szolgáltatásokhoz kötések használatával

Függvény létrehozásakor a program nyelvspecifikus triggerkódot ad hozzá a projekthez egy triggersablonokból. Ha a függvényt bemeneti vagy kimeneti kötések használatával szeretné más szolgáltatásokhoz csatlakoztatni, adott kötésdefiníciókat kell hozzáadnia a függvényhez. A kötésekkel kapcsolatos további információkért tekintse meg az Azure Functions eseményindítóinak és kötéseinek alapelveit.

Helyi fejlesztés

A függvények helyi fejlesztésekor frissítenie kell a függvénykódot kötések hozzáadásához. Az function.jsonhasználó nyelvek esetében a Visual Studio Code eszközkészletet biztosít a függvények kötéseinek hozzáadásához.

Kötések manuális hozzáadása példák alapján

Ha kötést ad hozzá egy meglévő függvényhez, kötésspecifikus attribútumokat kell hozzáadnia a függvénydefinícióhoz a kódban.

Ha kötést ad hozzá egy meglévő függvényhez, kötésspecifikus széljegyzeteket kell hozzáadnia a függvénydefinícióhoz a kódban.

Ha kötést ad hozzá egy meglévő függvényhez, frissítenie kell a függvénykódot, és hozzá kell adnia egy definíciót a function.json konfigurációs fájlhoz.

Ha kötést ad hozzá egy meglévő függvényhez, a modelltől függően frissítenie kell a függvénydefiníciót:

Kötésspecifikus széljegyzeteket kell hozzáadnia a függvénydefinícióhoz a kódban.

Az alábbi példa a függvénydefiníciót mutatja be, miután hozzáadott egy Queue Storage kimeneti kötést egy HTTP-aktivált függvényhez:

Mivel a HTTP által aktivált függvény HTTP-választ is ad vissza, a függvény egy MultiResponse objektumot ad vissza, amely a HTTP és az üzenetsor kimenetét egyaránt jelöli.

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

Ez a példa a kimeneti kötést MultiResponse tartalmazó objektum definíciója:

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

A példának a saját projektre való alkalmazásakor előfordulhat, hogy módosítania kell a HttpRequest értékét HttpRequestData-re és a IActionResult értékét HttpResponseData-ra, attól függően, hogy használja-e az ASP.NET Core integrációt vagy sem.

A függvény befejeződésekor a rendszer üzeneteket küld az üzenetsorba. A kimeneti kötés definiálásának módja a folyamatmodelltől függ. További információ, beleértve a példa kötéskódra mutató hivatkozásokat, amelyekre hivatkozhat, olvassa el a Kötések hozzáadása függvényhez című témakört.

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

További információ, beleértve a példa kötéskódra mutató hivatkozásokat, amelyekre hivatkozhat, olvassa el a Kötések hozzáadása függvényhez című témakört.

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

A kimeneti kötés definiálásának módja a Node.js modell verziójától függ. További információ, beleértve a példa kötéskódra mutató hivatkozásokat, amelyekre hivatkozhat, olvassa el a Kötések hozzáadása függvényhez című témakört.

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

További információ, beleértve a példa kötéskódra mutató hivatkozásokat, amelyekre hivatkozhat, olvassa el a Kötések hozzáadása függvényhez című témakört.

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

A kimeneti kötés definiálásának módja a Python-modell verziójától függ. További információ, beleértve a példa kötéskódra mutató hivatkozásokat, amelyekre hivatkozhat, olvassa el a Kötések hozzáadása függvényhez című témakört.

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

A kimeneti kötés definiálásának módja a Node.js modell verziójától függ. További információ, beleértve a példa kötéskódra mutató hivatkozásokat, amelyekre hivatkozhat, olvassa el a Kötések hozzáadása függvényhez című témakört.

Az alábbi táblázat segítségével példákat talál a meglévő függvények frissítéséhez használható konkrét kötéstípusokra. Először válassza ki a projektnek megfelelő nyelvi lapot.

Szolgáltatás Példák Minták
Blob Storage Eseményindító
Bemenet
Kimenet
Láncszem
Azure Cosmos DB Eseményindító
Bemenet
Kimenet
Láncszem
Azure Data Explorer Bemenet
Kimenet
Azure SQL Eseményindító
Bemenet
Kimenet
Láncszem
Event Grid Eseményindító
Kimenet
Event Hubs Eseményindító
Kimenet
IoT Hub Eseményindító
Kimenet
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Kimenet
Láncszem
RabbitMQ Eseményindító
Kimenet
SendGrid Kimenet
Service Bus Eseményindító
Kimenet
Láncszem
Azure SignalR Service Eseményindító
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Eseményindító
Twilio Kimenet
Szolgáltatás Példák Minták
Blob Storage Eseményindító
Bemenet
Kimenet
Azure Cosmos DB Eseményindító
Bemenet
Kimenet
Azure SQL Eseményindító
Bemenet
Kimenet
Event Grid Eseményindító
Kimenet
Event Hubs Eseményindító
Kimenet
IoT Hub Eseményindító
Kimenet
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Kimenet
RabbitMQ Eseményindító
Kimenet
SendGrid Kimenet
Service Bus Eseményindító
Kimenet
Azure SignalR Service Eseményindító
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Eseményindító
Twilio Kimenet

A Python kötéskódja a Python-modell verziójától függ.

Szolgáltatás Példák Minták
Blob Storage Eseményindító
Bemenet
Kimenet
Láncszem
Azure Cosmos DB Eseményindító
Bemenet
Kimenet
Láncszem
Azure Data Explorer Bemenet
Kimenet
Azure SQL Eseményindító
Bemenet
Kimenet
Láncszem
Event Grid Eseményindító
Kimenet
Event Hubs Eseményindító
Kimenet
IoT Hub Eseményindító
Kimenet
HTTP Eseményindító Láncszem
Queue Storage Eseményindító
Kimenet
RabbitMQ Eseményindító
Kimenet
SendGrid Kimenet
Service Bus Eseményindító
Kimenet
Láncszem
Azure SignalR Service Eseményindító
Bemenet
Kimenet
Table Storage Bemenet
Kimenet
Időzítő Eseményindító
Twilio Kimenet

Visual Studio Code

Ha a Visual Studio Code-ot használja a függvény fejlesztésére, és a függvény egy function.json fájlt használ, az Azure Functions-bővítmény automatikusan hozzáadhat kötést egy meglévő function.json fájlhoz. További információ: Bemeneti és kimeneti kötések hozzáadása.

Azure Portal

Amikor az Azure Portalon fejleszti a függvényeket, bemeneti és kimeneti kötéseket ad hozzá egy adott függvény Integrálása lapján. Az új kötések a nyelvtől függően hozzáadódnak a function.json fájlhoz vagy a metódusattribútumokhoz. Az alábbi cikkek példákat mutatnak be arra, hogyan adhat kötéseket egy meglévő függvényhez a portálon:

Következő lépések