Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Wanneer u een functie maakt, wordt taalspecifieke triggercode toegevoegd aan uw project vanuit een set triggersjablonen. Als u uw functie wilt verbinden met andere services met behulp van invoer- of uitvoerbindingen, moet u specifieke bindingsdefinities toevoegen aan uw functie. Zie Azure Functions triggers en bindingsconcepten voor meer informatie over bindingen.
Lokale ontwikkeling
Wanneer u functies lokaal ontwikkelt, moet u de functiecode bijwerken om bindingen toe te voegen. Voor talen die gebruikmaken van function.json, biedt Visual Studio Code hulpprogramma's voor het toevoegen van bindingen aan een functie.
Handmatig bindingen toevoegen op basis van voorbeelden
Wanneer u een binding toevoegt aan een bestaande functie, moet u bindingsspecifieke kenmerken toevoegen aan de functiedefinitie in code.
Wanneer u een binding toevoegt aan een bestaande functie, moet u bindingsspecifieke aantekeningen toevoegen aan de functiedefinitie in code.
Wanneer u een binding toevoegt aan een bestaande functie, moet u de functiecode bijwerken en een definitie toevoegen aan het function.json configuratiebestand.
Wanneer u een binding toevoegt aan een bestaande functie, moet u de functiedefinitie bijwerken, afhankelijk van uw model:
In Go configureert u ondersteunde triggers met behulp van de FLUENT-registratie-API in uw main() functie. Elk triggertype heeft een toegewezen registratiemethode met functionele opties voor configuratie. Er is geen afzonderlijk bindingsconfiguratiebestand nodig.
In het volgende voorbeeld ziet u een door HTTP geactiveerde functie. Als u vanuit een Go-functie naar Queue Storage moet schrijven, gebruikt u de Azure SDK voor Go rechtstreeks omdat Queue Storage-uitvoerbindingen momenteel niet worden ondersteund door de Go-werkrol:
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
De Go-worker ondersteunt momenteel alleen triggers. Invoer- en uitvoerbindingen, zoals Queue Storage-uitvoerbindingen, zijn nog niet beschikbaar. Gebruik de Azure SDK voor Go om rechtstreeks vanuit uw functiecode te communiceren met andere Azure-services.
De Go-worker ondersteunt momenteel de volgende triggertypen:
| Triggertype | Registratiemethode | Voorbeelden |
|---|---|---|
| HTTP | app.HTTP() |
HTTP-voorbeelden |
| Timer | app.Timer() |
Timer-voorbeelden |
| Azure Cosmos DB | app.CosmosDB() |
Cosmos DB-voorbeelden |
| Azure Service Bus (wachtrij) | app.ServiceBusQueue() |
Service Bus wachtrijvoorbeelden |
| Azure Service Bus (onderwerp) | app.ServiceBusTopic() |
Service Bus onderwerpvoorbeelden |
| Event Hubs | app.EventHub() |
Event Hubs-voorbeelden |
| Event Grid | app.EventGrid() |
Event Grid-voorbeelden |
| Blob Storage | app.Blob() |
Blobvoorbeelden |
Zie de go-referentie voor ontwikkelaars voor meer informatie.
In het volgende voorbeeld ziet u de functiedefinitie na het toevoegen van een Queue Storage uitvoerbinding aan een HTTP geactiveerde functie:
Omdat een door HTTP geactiveerde functie ook een HTTP-antwoord retourneert, retourneert de functie een MultiResponse object, dat zowel de HTTP- als de wachtrijuitvoer vertegenwoordigt.
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
Dit voorbeeld is de definitie van het MultiResponse object dat de uitvoerbinding bevat:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
In dit voorbeeld wordt ASP.NET Core-integratie gebruikt. Als u ASP.NET Core integratie niet gebruikt, moet u HttpRequest wijzigen in HttpRequestData en IActionResult in HttpResponseData.
Berichten worden naar de wachtrij verzonden wanneer de functie is voltooid. De manier waarop u de uitvoerbinding definieert, is afhankelijk van uw procesmodel. Zie Bindingen toevoegen aan een functie voor meer informatie, inclusief koppelingen naar voorbeeldbindingscode waarnaar u kunt verwijzen.
@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) {
Zie Bindingen toevoegen aan een functie voor meer informatie, inclusief koppelingen naar voorbeeldbindingscode waarnaar u kunt verwijzen.
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' };
}
},
});
De manier waarop u de uitvoerbinding definieert, is afhankelijk van de versie van uw Node.js model. Zie Bindingen toevoegen aan een functie voor meer informatie, inclusief koppelingen naar voorbeeldbindingscode waarnaar u kunt verwijzen.
$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg
Zie Bindingen toevoegen aan een functie voor meer informatie, inclusief koppelingen naar voorbeeldbindingscode waarnaar u kunt verwijzen.
@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.')
De manier waarop u de uitvoerbinding definieert, is afhankelijk van de versie van uw Python-model. Zie Bindingen toevoegen aan een functie voor meer informatie, inclusief koppelingen naar voorbeeldbindingscode waarnaar u kunt verwijzen.
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,
});
De manier waarop u de uitvoerbinding definieert, is afhankelijk van de versie van uw Node.js model. Zie Bindingen toevoegen aan een functie voor meer informatie, inclusief koppelingen naar voorbeeldbindingscode waarnaar u kunt verwijzen.
Gebruik de volgende tabel om voorbeelden te vinden van specifieke bindingstypen die u kunt gebruiken om u te helpen bij het bijwerken van een bestaande functie. Kies eerst het taaltabblad dat overeenkomt met uw project.
Bindingscode voor C# is afhankelijk van het specifieke procesmodel.
| Dienst | Voorbeelden | Voorbeelden |
|---|---|---|
| Blob Storage (voor opslag van grote hoeveelheden ongestructureerde gegevens) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer |
Input Output |
Link |
| Azure SQL |
Trigger Input Output |
Link |
| Gebeurtenisgrid |
Trigger Output |
Link |
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue-opslag |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Tabel Storage |
Input Output |
|
| Tijdmeter | Trigger | Link |
| Twilio | Output | Link |
| Dienst | Voorbeelden | Voorbeelden |
|---|---|---|
| Blob Storage (voor opslag van grote hoeveelheden ongestructureerde gegevens) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer |
Input Output |
Link |
| Azure SQL |
Trigger Input Output |
|
| Gebeurtenisgrid |
Trigger Output |
Link |
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue-opslag |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Tabel Storage |
Input Output |
|
| Tijdmeter | Trigger | Link |
| Twilio | Output |
| Dienst | Voorbeelden | Voorbeelden |
|---|---|---|
| Blob Storage (voor opslag van grote hoeveelheden ongestructureerde gegevens) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer |
Input Output |
|
| Azure SQL |
Trigger Input Output |
Link |
| Gebeurtenisgrid |
Trigger Output |
|
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue-opslag |
Trigger Output |
Link |
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Tabel Storage |
Input Output |
|
| Tijdmeter | Trigger | |
| Twilio | Output |
| Dienst | Voorbeelden | Voorbeelden |
|---|---|---|
| Blob Storage (voor opslag van grote hoeveelheden ongestructureerde gegevens) |
Trigger Input Output |
|
| Azure Cosmos DB |
Trigger Input Output |
|
| Azure SQL |
Trigger Input Output |
|
| Gebeurtenisgrid |
Trigger Output |
|
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue-opslag |
Trigger Output |
|
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
|
| Azure SignalR Service |
Trigger Input Output |
|
| Tabel Storage |
Input Output |
|
| Tijdmeter | Trigger | |
| Twilio | Output |
Bindingscode voor Python is afhankelijk van de python-modelversie.
| Dienst | Voorbeelden | Voorbeelden |
|---|---|---|
| Blob Storage (voor opslag van grote hoeveelheden ongestructureerde gegevens) |
Trigger Input Output |
Link |
| Azure Cosmos DB |
Trigger Input Output |
Link |
| Azure Data Explorer |
Input Output |
|
| Azure SQL |
Trigger Input Output |
Link |
| Gebeurtenisgrid |
Trigger Output |
|
| Event Hubs |
Trigger Output |
|
| IoT Hub |
Trigger Output |
|
| HTTP | Trigger | Link |
| Queue-opslag |
Trigger Output |
|
| RabbitMQ |
Trigger Output |
|
| SendGrid | Output | |
| Service Bus |
Trigger Output |
Link |
| Azure SignalR Service |
Trigger Input Output |
|
| Tabel Storage |
Input Output |
|
| Tijdmeter | Trigger | |
| Twilio | Output |
Visual Studio code
Wanneer u Visual Studio Code gebruikt om uw functie te ontwikkelen en uw functie een function.json-bestand gebruikt, kan de extensie Azure Functions automatisch een binding toevoegen aan een bestaand function.json-bestand. Zie Invoer- en uitvoerbindingen toevoegen voor meer informatie.
Azure portal
Wanneer u uw functies in de Azure portal ontwikkelt, voegt u invoer- en uitvoerbindingen toe op het tabblad Integrate voor een bepaalde functie. De nieuwe bindingen worden toegevoegd aan het function.json-bestand of aan de methodekenmerken, afhankelijk van uw taal. In de volgende artikelen ziet u voorbeelden van het toevoegen van bindingen aan een bestaande functie in de portal: