Menyambungkan fungsi ke layanan Azure menggunakan pengikatan

Saat Anda membuat fungsi, kode pemicu khusus bahasa ditambahkan di project Anda dari sekumpulan templat pemicu. Jika Anda ingin menyambungkan fungsi Anda ke layanan lain dengan menggunakan pengikatan input atau output, Anda harus menambahkan definisi pengikatan tertentu dalam fungsi Anda. Untuk mempelajari selengkapnya tentang pengikatan, lihat konsep pemicu dan pengikatan Azure Functions.

Pengembangan lokal

Saat Mengembangkan fungsi secara lokal, Anda perlu memperbarui kode fungsi untuk menambahkan pengikatan. Untuk bahasa yang menggunakan function.json, Visual Studio Code menyediakan alat untuk menambahkan pengikatan ke fungsi.

Menambahkan pengikatan secara manual berdasarkan contoh

Saat menambahkan pengikatan ke fungsi yang ada, Anda perlu menambahkan atribut khusus pengikatan ke definisi fungsi dalam kode.

Saat menambahkan pengikatan ke fungsi yang ada, Anda perlu menambahkan anotasi khusus pengikatan ke definisi fungsi dalam kode.

Saat menambahkan pengikatan ke fungsi yang ada, Anda perlu memperbarui kode fungsi dan menambahkan definisi ke file konfigurasi function.json.

Saat menambahkan pengikatan ke fungsi yang ada, Anda perlu memperbarui definisi fungsi, tergantung pada model Anda:

Anda perlu menambahkan anotasi khusus pengikatan ke definisi fungsi dalam kode.

Dalam Go, Anda mengonfigurasi pemicu yang didukung dengan menggunakan API registrasi fluent di fungsi main() Anda. Setiap jenis pemicu memiliki metode pendaftaran khusus dengan opsi fungsi untuk konfigurasi. Tidak diperlukan file konfigurasi pengikatan terpisah.

Contoh berikut menunjukkan fungsi yang dipicu HTTP. Jika Anda perlu menulis ke Queue Storage dari fungsi Go, gunakan Azure SDK untuk Go secara langsung karena pengikatan output Queue Storage saat ini tidak didukung oleh pekerja 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)
}

Note

Pekerja Go saat ini hanya mendukung pemicu. Pengikatan input dan output, seperti pengikatan output Queue Storage, belum tersedia. Gunakan Azure SDK untuk Go untuk berinteraksi dengan layanan Azure lain langsung dari kode fungsi Anda.

Pekerja Go saat ini mendukung jenis pemicu berikut:

Jenis pemicu Metode pendaftaran Contoh
HTTP app.HTTP() Sampel HTTP
Timer app.Timer() sampel Timer
Azure Cosmos DB app.CosmosDB() Sampel Cosmos DB
Azure Service Bus (Antrean) app.ServiceBusQueue() contoh antrean Bus Layanan
Azure Service Bus (Topik) app.ServiceBusTopic() Sampel topik Bus Layanan
Event Hubs app.EventHub() Sampel Azure Event Hubs
Event Grid app.EventGrid() sampel Event Grid
Blob Storage app.Blob() sampel Blob

Untuk informasi selengkapnya, lihat referensi pengembang Go.

Contoh berikut menunjukkan definisi fungsi setelah menambahkan pengikatan output Queue Storage ke fungsi pemicu HTTP:

Karena fungsi yang dipicu HTTP juga mengembalikan respons HTTP, fungsi mengembalikan objek MultiResponse, yang mewakili output dari HTTP dan antrean.

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

Contoh ini adalah definisi MultiResponse objek yang mencakup pengikatan output:

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

Contoh ini menggunakan integrasi ASP.NET Core. Jika Anda tidak menggunakan integrasi ASP.NET Core, Anda perlu mengubah HttpRequest ke HttpRequestData dan IActionResult menjadi HttpResponseData.

Pesan dikirim ke antrean saat fungsi selesai. Cara Anda menentukan pengikatan output tergantung pada model proses Anda. Untuk informasi selengkapnya, termasuk tautan ke contoh kode pengikatan yang dapat Anda rujuk, lihat Menambahkan pengikatan ke fungsi.

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

Untuk informasi selengkapnya, termasuk tautan ke contoh kode pengikatan yang dapat Anda rujuk, lihat Menambahkan pengikatan ke fungsi.

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

Cara Anda menentukan pengikatan output tergantung pada versi model Node.js Anda. Untuk informasi selengkapnya, termasuk tautan ke contoh kode pengikatan yang dapat Anda rujuk, lihat Menambahkan pengikatan ke fungsi.

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

Untuk informasi selengkapnya, termasuk tautan ke contoh kode pengikatan yang dapat Anda rujuk, lihat Menambahkan pengikatan ke fungsi.

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

Cara Anda menentukan pengikatan output tergantung pada versi model Python Anda. Untuk informasi selengkapnya, termasuk tautan ke contoh kode pengikatan yang dapat Anda rujuk, lihat Menambahkan pengikatan ke fungsi.

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

Cara Anda menentukan pengikatan output tergantung pada versi model Node.js Anda. Untuk informasi selengkapnya, termasuk tautan ke contoh kode pengikatan yang dapat Anda rujuk, lihat Menambahkan pengikatan ke fungsi.

Gunakan tabel berikut untuk menemukan contoh jenis pengikatan tertentu yang bisa Anda gunakan untuk memandu Anda memperbarui fungsi yang sudah ada. Pertama, pilih tab bahasa yang sesuai dengan project Anda.

Kode pengikatan untuk C# tergantung pada model proses tertentu.

Pelayanan Contoh Contoh-contoh
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
Pusat Aktivitas Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Bus Layanan Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Pengatur Waktu Trigger Link
Twilio Output Link
Pelayanan Contoh Contoh-contoh
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
Pusat Aktivitas Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Bus Layanan Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Pengatur Waktu Trigger Link
Twilio Output
Pelayanan Contoh Contoh-contoh
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
Pusat Aktivitas Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Bus Layanan Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Pengatur Waktu Trigger
Twilio Output
Pelayanan Contoh Contoh-contoh
Blob Storage Trigger
Input
Output
Azure Cosmos DB Trigger
Input
Output
Azure SQL Trigger
Input
Output
Event Grid Trigger
Output
Pusat Aktivitas Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Bus Layanan Trigger
Output
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Pengatur Waktu Trigger
Twilio Output

Kode pengikatan untuk Python tergantung pada versi model Python.

Pelayanan Contoh Contoh-contoh
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
Pusat Aktivitas Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Queue Storage Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Bus Layanan Trigger
Output
Link
Azure SignalR Service Trigger
Input
Output
Table Storage Input
Output
Pengatur Waktu Trigger
Twilio Output

Visual Studio Code

Saat Anda menggunakan kode Visual Studio untuk mengembangkan fungsi Anda dan fungsi Anda menggunakan file function.json, ekstensi Azure Functions dapat secara otomatis menambahkan pengikatan ke file function.json yang ada. Untuk mempelajari selengkapnya, lihat Menambahkan pengikatan input dan output.

portal Azure

Saat Anda mengembangkan fungsi di Azure portal, Anda menambahkan pengikatan input dan output di tab Integrate untuk fungsi tertentu. Pengikatan baru ditambahkan ke file function.json atau ke atribut metode, tergantung pada bahasa Anda. Artikel berikut ini memperlihatkan contoh cara menambahkan pengikatan ke fungsi yang ada di portal:

Langkah selanjutnya