Bagikan melalui


Azure Functions memicu dan mengikat konsep

Dalam artikel ini, Anda mempelajari konsep tingkat tinggi seputar pemicu dan pengikatan fungsi.

Pemicu menyebabkan suatu fungsi berjalan. Pemicu menentukan bagaimana fungsi dipanggil dan fungsi harus memiliki tepat satu pemicu. Pemicu juga dapat meneruskan data ke fungsi Anda, seperti yang Anda lakukan dengan panggilan metode.

Mengikat ke fungsi adalah cara menyambungkan fungsi Anda secara deklaratif ke sumber daya lain; pengikatan meneruskan data ke fungsi Anda (pengikatan input) atau memungkinkan Anda menulis data dari fungsi Anda (pengikatan output) menggunakan parameter pengikatan. Pemicu fungsi Anda pada dasarnya adalah jenis pengikatan input khusus.

Anda dapat mencampur dan mencocokkan pengikatan yang berbeda agar sesuai dengan skenario spesifik fungsi Anda. Pengikatan bersifat opsional dan fungsi mungkin memiliki satu atau beberapa pengikatan input dan/atau output.

Pemicu dan pengikatan memungkinkan Anda menghindari akses hardcoding ke layanan lain. Fungsi Anda menerima data (misalnya, konten pesan antrean) dalam parameter fungsi. Anda mengirim data (misalnya, untuk membuat pesan antrean) dengan menggunakan nilai yang dikembalikan dari fungsi.

Pertimbangkan contoh berikut tentang bagaimana Anda dapat mengimplementasikan fungsi yang berbeda.

Contoh skenario Pemicu Pengikatan masukan Pengikatan output
Pesan antrean baru datang yang menjalankan fungsi untuk menulis ke antrean lain. Antrean* Tidak Antrean*
Pekerjaan terjadwal membaca konten Blob Storage dan membuat dokumen Azure Cosmos DB baru. Pengatur Waktu Penyimpanan Blob Azure Cosmos DB
Event Grid digunakan untuk membaca gambar dari Blob Storage dan dokumen dari Azure Cosmos DB untuk mengirim email. Event Grid Blob Storage dan Azure Cosmos DB SendGrid

* Mewakili antrean yang berbeda

Contoh-contoh ini tidak dimaksudkan sebagai contoh lengkap, tetapi disediakan untuk mengilustrasikan bagaimana Anda dapat menggunakan pemicu dan pengikatan bersama-sama. Untuk serangkaian skenario yang lebih komprehensif, lihat Skenario Azure Functions.

Tip

Functions tidak mengharuskan Anda menggunakan pengikatan input dan output untuk menyambungkan ke layanan Azure. Anda selalu dapat membuat klien Azure SDK dalam kode Anda dan menggunakannya sebagai gantinya untuk transfer data Anda. Untuk informasi selengkapnya, lihat Menyambungkan ke layanan.

Penentuan pemicu dan pengikatan

Fungsi memiliki satu pemicu dan satu atau beberapa pengikatan. Jenis pengikatan adalah input atau output. Tidak semua layanan mendukung pengikatan input dan output. Lihat ekstensi pengikatan spesifik Anda untuk contoh kode pengikatan tertentu.

Pemicu dan pengikatan ditentukan secara berbeda bergantung pada bahasa pengembangan. Pastikan untuk memilih bahasa Anda di bagian atas artikel.

Contoh ini menunjukkan fungsi yang dipicu HTTP dengan pengikatan output yang menulis pesan ke antrean Azure Storage.

Untuk fungsi pustaka kelas C#, pemicu dan pengikatan dikonfigurasi dengan mendekorasi metode dan parameter dengan atribut C#, di mana atribut tertentu yang diterapkan mungkin bergantung pada model runtime C#:

Pemicu HTTP (HttpTrigger) didefinisikan pada Run metode untuk fungsi bernama HttpExample yang mengembalikan MultiResponse objek:

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

Contoh ini menunjukkan MultiResponse definisi objek yang mengembalikan HttpResponse ke permintaan HTTP dan juga menulis pesan ke antrean penyimpanan menggunakan QueueOutput pengikatan:

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

Untuk informasi selengkapnya, lihat panduan model pekerja terisolasi C#.

Fungsi Skrip C# warisan menggunakan file definisi function.json. Untuk informasi selengkapnya, lihat referensi pengembang skrip Azure Functions C# (.csx).

Untuk fungsi Java, pemicu dan pengikatan dikonfigurasi dengan menganotasi metode dan parameter tertentu. Pemicu HTTP ini (@HttpTrigger) didefinisikan pada run metode untuk fungsi bernama HttpTriggerQueueOutput, yang menulis ke antrean penyimpanan yang ditentukan oleh @QueueOutput anotasi pada message parameter:

@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) {
    context.getLogger().info("Java HTTP trigger processed a request.");

Untuk informasi selengkapnya, lihat panduan pengembang Java.

Cara pemicu dan pengikatan didefinisikan untuk fungsi Node.js tergantung pada versi Node.js tertentu untuk Functions:

Di Node.js untuk Functions versi 4, Anda mengonfigurasi pemicu dan pengikatan menggunakan objek yang diekspor dari @azure/functions modul. Untuk informasi selengkapnya, lihat panduan pengembang Node.js.

Contoh ini adalah fungsi yang dipicu HTTP yang membuat item antrean untuk setiap permintaan HTTP yang diterima.

Metode http pada objek yang diekspor app menentukan pemicu HTTP, dan storageQueue metode pada output menentukan pengikatan output pada pemicu ini.

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

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

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: async (request, context) => {
        const body = await request.text();
        context.extraOutputs.set(queueOutput, body);
        return { body: 'Created queue item.' };
    },
});

Metode http pada objek yang diekspor app menentukan pemicu HTTP, dan storageQueue metode pada output menentukan pengikatan output pada pemicu ini.

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

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

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const body = await request.text();
    context.extraOutputs.set(queueOutput, body);
    return { body: 'Created queue item.' };
}

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

Contoh function.json file ini mendefinisikan fungsi:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Untuk informasi selengkapnya, lihat panduan pengembang PowerShell.

Cara fungsi didefinisikan tergantung pada versi Python for Functions:

Di Python for Functions versi 2, Anda menentukan fungsi langsung dalam kode menggunakan dekorator.

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

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

Menambahkan pengikatan ke fungsi

Anda dapat menyambungkan fungsi ke layanan lain dengan menggunakan pengikatan input atau output. Tambahkan pengikatan dengan menambahkan definisi khususnya ke fungsi Anda. Untuk mempelajari caranya, lihat Menambahkan pengikatan ke fungsi yang ada di Azure Functions.

Azure Functions mendukung beberapa pengikatan, yang harus dikonfigurasi dengan benar. Misalnya, fungsi dapat membaca data dari antrean (pengikatan input) dan menulis data ke database (pengikatan output) secara bersamaan.

Pengikatan yang didukung

Tabel ini memperlihatkan pengikatan yang didukung di versi utama runtime Azure Functions:

Jenis 1.x1 2.x dan lebih tinggi2 Pemicu Input Output
Penyimpanan Blob
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Event Grid
Event Hubs
HTTP & webhook
Pusat IoT
Kafka3
Aplikasi Seluler
Notification Hubs
Antrean Penyimpanan
Redis
RabbitMQ3
SendGrid
Service Bus
SignalR
Penyimpanan Tabel
Timer
Twilio

Catatan:

  1. Dukungan akan berakhir untuk runtime Azure Functions versi 1.x pada 14 September 2026. Kami sangat menyarankan Agar Anda memigrasikan aplikasi Anda ke versi 4.x untuk dukungan penuh.
  2. Dimulai dengan runtime versi 2.x, semua pengikatan kecuali HTTP dan Timer harus didaftarkan. Lihat Mendaftarkan ekstensi pengikatan.
  3. Pemicu tidak didukung dalam paket Konsumsi. Memerlukan pemicu yang digerakkan oleh runtime.
  4. Didukung di Kubernetes, IoT Edge, dan mode lain yang dihost sendiri saja.

Untuk informasi tentang pengikatan mana yang ada dalam pratinjau atau disetujui untuk penggunaan produksi, lihat Bahasa yang didukung.

Versi ekstensi pengikatan tertentu hanya didukung saat SDK layanan yang mendasar didukung. Perubahan pada dukungan dalam versi SDK layanan yang mendasar memengaruhi dukungan untuk ekstensi yang menggunakan.

Contoh kode pengikatan

Gunakan tabel berikut untuk menemukan lebih banyak contoh jenis pengikatan tertentu yang menunjukkan kepada Anda cara bekerja dengan pengikatan dalam fungsi Anda. Pertama, pilih tab bahasa yang sesuai dengan proyek Anda.

Kode pengikatan untuk C# tergantung pada model proses tertentu.

Layanan Contoh Sampel
Penyimpanan Blob Pemicu
Input
Hasil
Tautan
Azure Cosmos DB Pemicu
Input
Hasil
Tautan
Azure Data Explorer Input
Hasil
Tautan
Azure SQL Pemicu
Input
Hasil
Tautan
Event Grid Pemicu
Hasil
Tautan
Event Hubs Pemicu
Hasil
IoT Hub Pemicu
Hasil
HTTP Pemicu Tautan
Antrean Penyimpanan Pemicu
Hasil
Tautan
RabbitMQ Pemicu
Hasil
SendGrid Hasil
Service Bus Pemicu
Hasil
Tautan
SignalR Pemicu
Input
Hasil
Penyimpanan Tabel Input
Hasil
Pengatur Waktu Pemicu Tautan
Twilio Hasil Tautan
Layanan Contoh Sampel
Penyimpanan Blob Pemicu
Input
Hasil
Tautan
Azure Cosmos DB Pemicu
Input
Hasil
Tautan
Azure Data Explorer Input
Hasil
Tautan
Azure SQL Pemicu
Input
Hasil
Event Grid Pemicu
Hasil
Tautan
Event Hubs Pemicu
Hasil
IoT Hub Pemicu
Hasil
HTTP Pemicu Tautan
Antrean Penyimpanan Pemicu
Hasil
Tautan
RabbitMQ Pemicu
Hasil
SendGrid Hasil
Service Bus Pemicu
Hasil
Tautan
SignalR Pemicu
Input
Hasil
Penyimpanan Tabel Input
Hasil
Pengatur Waktu Pemicu Tautan
Twilio Hasil Tautan
Layanan Contoh Sampel
Penyimpanan Blob Pemicu
Input
Hasil
Tautan
Azure Cosmos DB Pemicu
Input
Hasil
Tautan
Azure Data Explorer Input
Hasil
Azure SQL Pemicu
Input
Hasil
Tautan
Event Grid Pemicu
Hasil
Tautan
Event Hubs Pemicu
Hasil
IoT Hub Pemicu
Hasil
HTTP Pemicu Tautan
Antrean Penyimpanan Pemicu
Hasil
Tautan
RabbitMQ Pemicu
Hasil
SendGrid Hasil
Service Bus Pemicu
Hasil
Tautan
SignalR Pemicu
Input
Hasil
Penyimpanan Tabel Input
Hasil
Pengatur Waktu Pemicu Tautan
Twilio Hasil Tautan
Layanan Contoh Sampel
Penyimpanan Blob Pemicu
Input
Hasil
Tautan
Azure Cosmos DB Pemicu
Input
Hasil
Tautan
Azure SQL Pemicu
Input
Hasil
Event Grid Pemicu
Hasil
Tautan
Event Hubs Pemicu
Hasil
IoT Hub Pemicu
Hasil
HTTP Pemicu Tautan
Antrean Penyimpanan Pemicu
Hasil
Tautan
RabbitMQ Pemicu
Hasil
SendGrid Hasil
Service Bus Pemicu
Hasil
Tautan
SignalR Pemicu
Input
Hasil
Penyimpanan Tabel Input
Hasil
Pengatur Waktu Pemicu Tautan
Twilio Hasil Tautan

Kode pengikatan untuk Python tergantung pada versi model Python.

Layanan Contoh Sampel
Penyimpanan Blob Pemicu
Input
Hasil
Tautan
Azure Cosmos DB Pemicu
Input
Hasil
Tautan
Azure Data Explorer Input
Hasil
Azure SQL Pemicu
Input
Hasil
Tautan
Event Grid Pemicu
Hasil
Tautan
Event Hubs Pemicu
Hasil
IoT Hub Pemicu
Hasil
HTTP Pemicu Tautan
Antrean Penyimpanan Pemicu
Hasil
Tautan
RabbitMQ Pemicu
Hasil
SendGrid Hasil
Service Bus Pemicu
Hasil
Tautan
SignalR Pemicu
Input
Hasil
Penyimpanan Tabel Input
Hasil
Pengatur Waktu Pemicu Tautan
Twilio Hasil Tautan

Pengikatan kustom

Anda dapat membuat pengikatan input dan output kustom. Pengikatan harus dibuat dalam .NET, tetapi dapat digunakan dari bahasa apa pun yang didukung. Untuk informasi selengkapnya tentang membuat pengikatan kustom, lihat Membuat pengikatan input dan output kustom.