Koncepty triggerů a vazeb Azure Functions.
V tomto článku se seznámíte s koncepty vysoké úrovně, které obklopují triggery a vazby funkcí.
Triggery způsobují spuštění funkce. Trigger definuje způsob volání funkce a každá funkce musí mít právě jeden trigger. Triggery můžou také předávat data do vaší funkce stejně jako volání metody.
Vazba na funkci je způsob deklarativního propojení funkcí s jinými prostředky; vazby buď předávají data do vaší funkce ( vstupní vazby), nebo umožňují zapisovat data z vaší funkce ( výstupní vazby) pomocí parametrů vazby. Aktivační událost funkce je v podstatě speciálním typem vstupní vazby.
Různé vazby můžete kombinovat a spárovat tak, aby vyhovovaly konkrétnímu scénáři vaší funkce. Vazby jsou volitelné a funkce může mít jednu nebo více vstupních nebo výstupních vazeb.
Triggery a vazby umožňují vyhnout se pevnému kódování přístupu k jiným službám. Vaše funkce přijímá data (například obsah zprávy fronty) v parametrech funkce. Vy posíláte data (například k vytvoření zprávy fronty) pomocí návratové hodnoty funkce.
Podívejte se na následující příklady toho, jak byste mohli implementovat různé funkce.
Ukázkový scénář | Trigger | Vstupní vazba | Výstupní vazba |
---|---|---|---|
Dorazí nová zpráva fronty, která spustí funkci pro zápis do jiné fronty. | Fronta* | Nic | Fronta* |
Naplánovaná úloha čte obsah služby Blob Storage a vytvoří nový dokument služby Azure Cosmos DB. | Časovač | Blob Storage | Azure Cosmos DB |
Event Grid slouží ke čtení obrázku ze služby Blob Storage a dokumentu ze služby Azure Cosmos DB k odeslání e-mailu. | Event Grid | Blob Storage a Azure Cosmos DB | SendGrid |
* Představuje různé fronty.
Tyto příklady nejsou vyčerpávající, ale poskytují se k ilustraci toho, jak můžete použít triggery a vazby společně. Komplexnější sadu scénářů najdete ve scénářích Azure Functions.
Tip
Funkce nevyžadují použití vstupních a výstupních vazeb pro připojení ke službám Azure. V kódu můžete vždy vytvořit klienta sady Azure SDK a místo toho ho použít pro přenosy dat. Další informace najdete v tématu Připojení ke službám.
Definice triggerů a vazeb
Funkce má jeden trigger a jednu nebo více vazeb. Typ vazby je vstup nebo výstup. Ne všechny služby podporují vstupní i výstupní vazby. Podívejte se na konkrétní rozšíření vazeb pro konkrétní příklady kódu vazeb.
Triggery a vazby se definují odlišně v závislosti na vývojovém jazyce. Nezapomeňte vybrat jazyk v horní části článku.
Tento příklad ukazuje funkci aktivovanou protokolem HTTP s výstupní vazbou, která zapíše zprávu do fronty Azure Storage.
Pro funkce knihovny tříd jazyka C# jsou triggery a vazby nakonfigurovány dekódováním metod a parametrů pomocí atributů jazyka C#, kde konkrétní použitý atribut může záviset na modelu modulu runtime C#:
Trigger HTTP (HttpTrigger
) je definován v Run
metodě pro funkci s názvem HttpExample
, která vrací MultiResponse
objekt:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
Tento příklad ukazuje definici objektu MultiResponse
, která vrací HttpResponse
požadavek HTTP a také zapisuje zprávu do fronty úložiště pomocí vazby QueueOutput
:
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData HttpResponse { get; set; }
}
Další informace najdete v průvodci modelem izolovaného pracovního procesu jazyka C#.
Starší funkce skriptu jazyka C# používají definiční soubor function.json. Další informace najdete v referenčních informacích pro vývojáře azure Functions v jazyce C# (.csx).
Pro funkce Java se triggery a vazby konfigurují přidáním poznámek ke konkrétním metodám a parametrům. Tento trigger HTTP (@HttpTrigger
) je definován v run
metodě pro funkci s názvem HttpTriggerQueueOutput
, která zapisuje do fronty úložiště definované @QueueOutput
poznámkou parametru message
:
@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.");
Další informace najdete v příručce pro vývojáře v Javě.
Způsob definování triggerů a vazeb pro funkce Node.js závisí na konkrétní verzi Node.js pro functions:
V Node.js pro Functions verze 4 nakonfigurujete triggery a vazby pomocí objektů exportovaných z @azure/functions
modulu. Další informace najdete v Node.js příručce pro vývojáře.
Tento příklad je funkce aktivovaná protokolem HTTP, která vytvoří položku fronty pro každý přijatý požadavek HTTP.
Metoda http
u exportovaného app
objektu definuje trigger HTTP a storageQueue
metoda definuje output
výstupní vazbu pro tento trigger.
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.' };
},
});
Metoda http
u exportovaného app
objektu definuje trigger HTTP a storageQueue
metoda definuje output
výstupní vazbu pro tento trigger.
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,
});
Tento ukázkový function.json
soubor definuje funkci:
{
"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"
}
]
}
Další informace najdete v příručce pro vývojáře PowerShellu.
Způsob, jakým je funkce definovaná, závisí na verzi Pythonu pro funkce:
V Pythonu pro Functions verze 2 definujete funkci přímo v kódu pomocí dekorátorů.
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.')
Přidání vazeb do funkce
Funkci můžete připojit k jiným službám pomocí vstupních nebo výstupních vazeb. Přidejte vazbu přidáním jejích konkrétních definic do vaší funkce. Postup najdete v tématu Přidání vazeb do existující funkce v Azure Functions.
Azure Functions podporuje více vazeb, které je potřeba správně nakonfigurovat. Funkce může například číst data z fronty (vstupní vazby) a zapisovat data do databáze (výstupní vazby) současně.
Podporované vazby
Tato tabulka ukazuje vazby podporované v hlavních verzích modulu runtime Azure Functions:
Typ | 1,x1 | 2.x a vyšší2 | Trigger | Vstup | Výstup |
---|---|---|---|---|---|
Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Data Explorer | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Event Grid | ✔ | ✔ | ✔ | ✔ | |
Event Hubs | ✔ | ✔ | ✔ | ✔ | |
HTTP a webhooky | ✔ | ✔ | ✔ | ✔ | |
IoT Hub | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Mobile Apps | ✔ | ✔ | ✔ | ||
Notification Hubs | ✔ | ✔ | |||
Queue Storage | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Service Bus | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Table Storage | ✔ | ✔ | ✔ | ✔ | |
Časovač | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Poznámky:
- Podpora pro modul runtime Azure Functions verze 1.x skončí 14. září 2026. Důrazně doporučujeme migrovat aplikace na verzi 4.x , abyste měli plnou podporu.
- Počínaje modulem runtime verze 2.x musí být zaregistrovány všechny vazby s výjimkou http a časovače. Viz Registrace rozšíření vazeb.
- Triggery nejsou v plánu Consumption podporované. Vyžaduje triggery řízené modulem runtime.
- Podporováno pouze v režimech Kubernetes, IoT Edge a dalších režimech v místním prostředí.
Informace o tom, které vazby jsou ve verzi Preview nebo jsou schválené pro použití v produkčním prostředí, najdete v tématu Podporované jazyky.
Konkrétní verze rozšíření vazeb se podporují jenom v době, kdy je podporována podkladová sada SDK služby. Změny podpory v základní verzi sady SDK služby ovlivňují podporu pro využívání rozšíření.
Příklady kódu vazeb
V následující tabulce najdete další příklady konkrétních typů vazeb, které ukazují, jak pracovat s vazbami ve vašich funkcích. Nejprve zvolte kartu jazyka, která odpovídá vašemu projektu.
Vytvoření vazby kódu pro jazyk C# závisí na konkrétním modelu procesu.
Služba | Příklady | Ukázky |
---|---|---|
Blob Storage | Trigger Vstup Výstup |
Odkaz |
Azure Cosmos DB | Trigger Vstup Výstup |
Odkaz |
Průzkumník dat Azure | Vstup Výstup |
Odkaz |
Azure SQL | Trigger Vstup Výstup |
Odkaz |
Event Grid | Trigger Výstup |
Odkaz |
Event Hubs | Trigger Výstup |
|
IoT Hub | Trigger Výstup |
|
HTTP | Trigger | Odkaz |
Queue Storage | Trigger Výstup |
Odkaz |
RabbitMQ | Trigger Výstup |
|
SendGrid | Výstup | |
Service Bus | Trigger Výstup |
Odkaz |
SignalR | Trigger Vstup Výstup |
|
Table Storage | Vstup Výstup |
|
Časovač | Trigger | Odkaz |
Twilio | Výstup | Odkaz |
Služba | Příklady | Ukázky |
---|---|---|
Blob Storage | Trigger Vstup Výstup |
Odkaz |
Azure Cosmos DB | Trigger Vstup Výstup |
Odkaz |
Průzkumník dat Azure | Vstup Výstup |
Odkaz |
Azure SQL | Trigger Vstup Výstup |
|
Event Grid | Trigger Výstup |
Odkaz |
Event Hubs | Trigger Výstup |
|
IoT Hub | Trigger Výstup |
|
HTTP | Trigger | Odkaz |
Queue Storage | Trigger Výstup |
Odkaz |
RabbitMQ | Trigger Výstup |
|
SendGrid | Výstup | |
Service Bus | Trigger Výstup |
Odkaz |
SignalR | Trigger Vstup Výstup |
|
Table Storage | Vstup Výstup |
|
Časovač | Trigger | Odkaz |
Twilio | Výstup | Odkaz |
Služba | Příklady | Ukázky |
---|---|---|
Blob Storage | Trigger Vstup Výstup |
Odkaz |
Azure Cosmos DB | Trigger Vstup Výstup |
Odkaz |
Průzkumník dat Azure | Vstup Výstup |
|
Azure SQL | Trigger Vstup Výstup |
Odkaz |
Event Grid | Trigger Výstup |
Odkaz |
Event Hubs | Trigger Výstup |
|
IoT Hub | Trigger Výstup |
|
HTTP | Trigger | Odkaz |
Queue Storage | Trigger Výstup |
Odkaz |
RabbitMQ | Trigger Výstup |
|
SendGrid | Výstup | |
Service Bus | Trigger Výstup |
Odkaz |
SignalR | Trigger Vstup Výstup |
|
Table Storage | Vstup Výstup |
|
Časovač | Trigger | Odkaz |
Twilio | Výstup | Odkaz |
Služba | Příklady | Ukázky |
---|---|---|
Blob Storage | Trigger Vstup Výstup |
Odkaz |
Azure Cosmos DB | Trigger Vstup Výstup |
Odkaz |
Azure SQL | Trigger Vstup Výstup |
|
Event Grid | Trigger Výstup |
Odkaz |
Event Hubs | Trigger Výstup |
|
IoT Hub | Trigger Výstup |
|
HTTP | Trigger | Odkaz |
Queue Storage | Trigger Výstup |
Odkaz |
RabbitMQ | Trigger Výstup |
|
SendGrid | Výstup | |
Service Bus | Trigger Výstup |
Odkaz |
SignalR | Trigger Vstup Výstup |
|
Table Storage | Vstup Výstup |
|
Časovač | Trigger | Odkaz |
Twilio | Výstup | Odkaz |
Vytvoření vazby kódu pro Python závisí na verzi modelu Pythonu.
Služba | Příklady | Ukázky |
---|---|---|
Blob Storage | Trigger Vstup Výstup |
Odkaz |
Azure Cosmos DB | Trigger Vstup Výstup |
Odkaz |
Průzkumník dat Azure | Vstup Výstup |
|
Azure SQL | Trigger Vstup Výstup |
Odkaz |
Event Grid | Trigger Výstup |
Odkaz |
Event Hubs | Trigger Výstup |
|
IoT Hub | Trigger Výstup |
|
HTTP | Trigger | Odkaz |
Queue Storage | Trigger Výstup |
Odkaz |
RabbitMQ | Trigger Výstup |
|
SendGrid | Výstup | |
Service Bus | Trigger Výstup |
Odkaz |
SignalR | Trigger Vstup Výstup |
|
Table Storage | Vstup Výstup |
|
Časovač | Trigger | Odkaz |
Twilio | Výstup | Odkaz |
Vlastní vazby
Můžete vytvořit vlastní vstupní a výstupní vazby. Vazby musí být vytvořené v .NET, ale je možné je využívat z libovolného podporovaného jazyka. Další informace o vytváření vlastních vazeb naleznete v tématu Vytváření vlastních vstupních a výstupních vazeb.