Azure Queue Storage-utdatabindningar för Azure Functions

Azure Functions kan skapa nya Azure Queue Storage-meddelanden genom att konfigurera en utdatabindning.

Information om installation och konfiguration finns i översikten.

Exempel

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;
    }
}

Attribut och anteckningar

I C#-klassbibliotekanvänder du QueueAttribute.

Attributet gäller för en out parameter eller returvärdet för funktionen. Attributets konstruktor tar namnet på kön, som du ser i följande exempel:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

Du kan ange egenskapen Connection för att ange vilket lagringskonto som ska användas, som du ser i följande exempel:

[FunctionName("QueueOutput")]
[return: Queue("myqueue-items", Connection = "StorageConnectionAppSetting")]
public static string Run([HttpTrigger] dynamic input,  ILogger log)
{
    ...
}

Ett fullständigt exempel finns i Utdataexempel.

Du kan använda StorageAccount attributet för att ange lagringskontot på klass-, metod- eller parameternivå. Mer information finns i Utlösare – attribut.

Konfiguration

I följande tabell beskrivs de bindningskonfigurationsegenskaper som du anger i function.json-filen och Queue -attributet.

function.json-egenskap Attributegenskap Description
Typ saknas Måste anges till queue . Den här egenskapen anges automatiskt när du skapar utlösaren i Azure Portal.
Riktning saknas Måste anges till out . Den här egenskapen anges automatiskt när du skapar utlösaren i Azure Portal.
Namn saknas Namnet på variabeln som representerar kön i funktionskoden. Ange till $return för att referera till funktionens returvärde.
queueName QueueName Namnet på kön.
Anslutning Anslutning Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Azure Queues. Se Anslutningar.

När du utvecklar lokalt går appinställningarna till ilocal.settings.js på filen.

Anslutningar

Egenskapen connection är en referens till miljökonfigurationen som anger hur appen ska ansluta till Azure Queues. Den kan ange:

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.

Anslutningssträng

Om du vill hämta en anslutningssträng följer du stegen som visas i Hantera åtkomstnycklar för lagringskonto.

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 connection "MyStorage" söker Functions-körningen efter en appinställning med namnet "AzureWebJobsMyStorage". Om du lämnar connection tomt använder Functions-körningen standardanslutningssträngen Storage i appinställningen med namnet 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 URI:t för dataplanet för den kötjänst som du ansluter till. <storage_account_name>.queue.core.windows.net

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.

Ytterligare egenskaper kan anges för att anpassa anslutningen. Se Vanliga egenskaper för identitetsbaserade anslutningar.

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]

Användning

Standardvärde

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:

Om du försöker binda till och få ett felmeddelande kontrollerar du att du har en referens till rätt CloudQueueMessage Storage SDK-version.

I C# och C#-skript skriver du flera kömeddelanden med någon av följande typer:

  • ICollector<T> eller IAsyncCollector<T>
  • CloudQueue

Ytterligare typer

Appar som använder version 5.0.0 eller senare av Storage-tillägget kan också använda typer från Azure SDK för .NET. Den här versionen minskar stödet för CloudQueue äldre och typer till förmån för följande CloudQueueMessage typer:

Exempel som använder dessa typer finns i GitHub lagringsplatsen för tillägget.

Undantag och returkoder

Bindning Referens
Felkoder för kö
Blob, Tabell, Kö Storage Felkoder
Blob, Tabell, Kö Felsökning

Nästa steg