I följande exempel visas en C#-funktion som skapar ett kömeddelande för varje HTTP-begäran som tas emot.
[StorageAccount("MyStorageConnectionAppSetting")]
public static class QueueFunctions
{
[FunctionName("QueueOutput")]
[return: Queue("myqueue-items")]
public static string QueueOutput([HttpTrigger] dynamic input, ILogger log)
{
log.LogInformation($"C# function processed: {input.Text}");
return input.Text;
}
}
I följande exempel visas en HTTP-utlösarbindning i en function.json-fil och C#-skriptkod (.csx) som använder bindningen. Funktionen skapar ett köobjekt med en CustomQueueMessage-objektnyttolast för varje HTTP-begäran som tas emot.
Här är C#-skriptkod som skapar ett enda kömeddelande:
public class CustomQueueMessage
{
public string PersonName { get; set; }
public string Title { get; set; }
}
public static CustomQueueMessage Run(CustomQueueMessage input, ILogger log)
{
return input;
}
Du kan skicka flera meddelanden samtidigt med hjälp av en ICollector - eller IAsyncCollector -parameter. Här är C#-skriptkod som skickar flera meddelanden, ett med HTTP-begärandedata och ett med hårdkodade värden:
I följande exempel visas en Java-funktion som skapar ett kömeddelande för när det utlöses av en HTTP-begäran.
@FunctionName("httpToQueue")
@QueueOutput(name = "item", queueName = "myqueue-items", connection = "MyStorageConnectionAppSetting")
public String pushToQueue(
@HttpTrigger(name = "request", methods = {HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS)
final String message,
@HttpOutput(name = "response") final OutputBinding<String> result) {
result.setValue(message + " has been added.");
return message;
}
I Java Functions-körningsbiblioteketanvänder du @QueueOutput -anteckningen för parametrar vars värde skulle skrivas till Queue Storage. Parametertypen ska vara OutputBinding<T> , där är en ursprunglig T Java-typ av en POJO.
I följande exempel visas en HTTP-utlösarbindning i en function.json-fil och en JavaScript-funktion som använder bindningen. Funktionen skapar ett köobjekt för varje HTTP-begäran som tas emot.
Du kan skicka flera meddelanden samtidigt genom att definiera en meddelandematris för myQueueItem utdatabindningen. Följande JavaScript-kod skickar två kömeddelanden med hårdkodade värden för varje HTTP-begäran som tas emot.
Följande kodexempel visar hur du matar ut ett kömeddelande från en HTTP-utlöst funktion. Konfigurationsavsnittet med av typequeue definierar utdatabindningen.
Med den här bindningskonfigurationen kan en PowerShell-funktion skapa ett kömeddelande med hjälp av Push-OutputBinding . I det här exemplet skapas ett meddelande från en frågesträng eller en brödtextparameter.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = $Request.Query.Message
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Om du vill skicka flera meddelanden samtidigt definierar du en meddelandematris och använder för Push-OutputBinding att skicka meddelanden till köutdatabindningen.
using namespace System.Net
# Input bindings are passed in via param block.
param($Request, $TriggerMetadata)
# Write to the Azure Functions log stream.
Write-Host "PowerShell HTTP trigger function processed a request."
# Interact with query parameters or the body of the request.
$message = @("message1", "message2")
Push-OutputBinding -Name Msg -Value $message
Push-OutputBinding -Name Response -Value ([HttpResponseContext]@{
StatusCode = 200
Body = "OK"
})
Följande exempel visar hur du matar ut enkla och flera värden till lagringsköer. Konfigurationen som behövs för function.json är densamma oavsett hur du gör.
En Storage-köbindning definieras i function.jsondär typen är inställd på queue .
Om du vill skapa flera meddelanden i kön deklarerar du en parameter som lämplig listtyp och skickar en matris med värden (som matchar listtypen) till set metoden .
Du kan använda StorageAccount attributet för att ange lagringskontot på klass-, metod- eller parameternivå. Mer information finns i Utlösare – attribut.
Attribut stöds inte av C#-skript.
Med QueueOutput anteckningen kan du skriva ett meddelande som utdata för en funktion. I följande exempel visas en HTTP-utlöst funktion som skapar ett kömeddelande.
Namnet på ett delat prefix för flera programinställningar, tillsammans definierar en identitetsbaserad anslutning.
Om det konfigurerade värdet både är en exakt matchning för en enskild inställning och en prefixmatchning för andra inställningar används den exakta matchningen.
Den här anslutningssträngen ska lagras i en programinställning med ett namn som matchar det värde som anges av connection egenskapen för bindningskonfigurationen.
Om appinställningsnamnet börjar med "AzureWebJobs" kan du bara ange resten av namnet här. Om du till exempel anger "MyStorage" söker Functions-körningen efter en appinställning med namnet connection "AzureWebJobsMyStorage". Om du lämnar connection tomt använder Functions-körningen standardanslutningssträngen Storage i appinställningen som heter AzureWebJobsStorage .
Identitetsbaserade anslutningar
Om du använder version 5.xeller senare av tillägget kan du, i stället för att använda en anslutningssträng med en hemlighet, be appen att använda en Azure Active Directory identitet. Om du vill göra detta definierar du inställningar under ett gemensamt prefix som mappar till connection egenskapen i utlösar- och bindningskonfigurationen.
I det här läget kräver tillägget följande egenskaper:
Egenskap
Mall för miljövariabler
Description
Exempelvärde
Kötjänst-URI
<CONNECTION_NAME_PREFIX>__queueServiceUri1
Dataplanets URI för den kötjänst som du ansluter till, med hjälp av HTTPS-schemat.
1<CONNECTION_NAME_PREFIX>__serviceUri kan användas som ett alias. Om båda formulären anges queueServiceUri används formuläret. Formuläret serviceUri kan inte användas när den övergripande anslutningskonfigurationen ska användas för blobar, köer och/eller tabeller.
När identitetsbaserade anslutningar Azure Functions i tjänsten använder de en hanterad identitet. Den system tilldelade identiteten används som standard, även om en användar tilldelad identitet kan anges med credential egenskaperna clientID och . När den körs i andra kontexter, till exempel lokal utveckling, används din utvecklaridentitet i stället, även om detta kan anpassas. Se Lokal utveckling med identitetsbaserade anslutningar.
Bevilja behörighet till identiteten
Den identitet som används måste ha behörighet att utföra de avsedda åtgärderna. Du måste tilldela en roll i Azure RBACmed hjälp av inbyggda eller anpassade roller som ger dessa behörigheter.
Viktigt
Vissa behörigheter kan exponeras av måltjänsten som inte är nödvändiga för alla kontexter. Om möjligt ska du följa principen om minsta behörighet och endast bevilja identiteten de behörigheter som krävs. Om appen till exempel bara behöver kunna läsa från en datakälla använder du en roll som bara har behörighet att läsa. Det skulle vara olämpligt att tilldela en roll som också tillåter skrivning till tjänsten, eftersom detta skulle vara överdriven behörighet för en läsåtgärd. På samma sätt vill du se till att rolltilldelningen endast är begränsad till de resurser som behöver läsas.
Du måste skapa en rolltilldelning som ger åtkomst till din kö vid körning. Hanteringsroller som Ägare räcker inte. I följande tabell visas inbyggda roller som rekommenderas när du använder Queue Storage-tillägget i normal drift. Programmet kan kräva ytterligare behörigheter baserat på den kod som du skriver.
Bindningstyp
Exempel på inbyggda roller
Utlösare
[Storage Queue Data Reader], [Storage Queue Data Message Processor]
Utdatabindning
[Storage Queue Data Contributor], [Storage Queue Data Message Sender]
Skriv ett enskilt kömeddelande med hjälp av en metodparameter, till exempel out T paramName . Du kan använda metoden return type i stället för out en parameter och kan vara någon av följande T typer:
Skriv ett enda kömeddelande med hjälp av en metodparameter, till exempel out T paramName . paramNameär det värde som anges i egenskapen för namefunction.json. Du kan använda metodens returtyp i stället för out en parameter och kan vara någon av följande T typer:
Det finns två alternativ för att mata ut ett kömeddelande från en funktion med hjälp av QueueOutput-anteckningen:
Returvärde: Genom att tillämpa kommentaren på själva funktionen bevaras funktionens returvärde som ett kömeddelande.
Imperativt: Om du uttryckligen vill ange meddelandevärdet tillämpar du kommentaren på en specifik parameter av typen , där är en POJO eller OutputBinding<T> en ursprunglig T Java-typ. Med den här konfigurationen beständigas värdet som ett kömeddelande genom att skicka ett setValue värde till metoden .
Utdataköobjektet är tillgängligt via context.bindings.<NAME> där matchar namnet som <NAME> definierats i function.json. Du kan använda en sträng eller ett JSON-serialiserbart objekt för nyttolasten för köobjekt.
Utdata till kömeddelandet är tillgängligt via där du skickar argument som matchar namnet som anges av bindningens parameter i Push-OutputBindingnamefunction.json-filen.
Det finns två alternativ för att mata ut ett kömeddelande från en funktion:
Returvärde: Ange name egenskapen i function.json till $return . Med den här konfigurationen bevaras funktionens returvärde som ett Queue Storage-meddelande.
Imperativt: Skicka ett värde till set-metoden för parametern som deklareras som en Out-typ. Värdet som skickas till set bevaras som ett Queue Storage-meddelande.