Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
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: