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:
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:
- 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.
- Dimulai dengan runtime versi 2.x, semua pengikatan kecuali HTTP dan Timer harus didaftarkan. Lihat Mendaftarkan ekstensi pengikatan.
- Pemicu tidak didukung dalam paket Konsumsi. Memerlukan pemicu yang digerakkan oleh runtime.
- 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.