Azure Queue Storage-uitvoerbindingen voor Azure Functions

Azure Functions kunt nieuwe Azure Queue Storage-berichten maken door een uitvoerbinding in te stellen.

Zie het overzicht voor meer informatie over de installatie- en configuratiegegevens.

Voorbeeld

In het volgende voorbeeld ziet u een C#-functie die een wachtrijbericht maakt voor elke ontvangen HTTP-aanvraag.

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

Kenmerken en aantekeningen

Gebruik in C#-klassebibliotheken queueAttribute.

Het kenmerk is van toepassing op out een parameter of de retourwaarde van de functie. De constructor van het kenmerk neemt de naam van de wachtrij, zoals wordt weergegeven in het volgende voorbeeld:

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

U kunt de eigenschap instellen om het opslagaccount op te geven dat moet worden Connection gebruikt, zoals wordt weergegeven in het volgende voorbeeld:

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

Zie Uitvoervoorbeeld voor een volledig voorbeeld.

U kunt het kenmerk StorageAccount gebruiken om het opslagaccount op klasse-, methode- of parameterniveau op te geven. Zie Trigger - kenmerken voor meer informatie.

Configuratie

De volgende tabel bevat informatie over de bindingsconfiguratie-eigenschappen die u instelt in het bestand function.json en het kenmerk Queue.

function.json-eigenschap Kenmerkeigenschap Beschrijving
type N.v.t. Moet worden ingesteld op queue. Deze eigenschap wordt automatisch ingesteld wanneer u de trigger maakt in de Azure-portal.
direction N.v.t. Moet worden ingesteld op out. Deze eigenschap wordt automatisch ingesteld wanneer u de trigger maakt in de Azure-portal.
name N.v.t. De naam van de variabele die de wachtrij in functiecode vertegenwoordigt. Stel in op $return om te verwijzen naar de retourwaarde van de functie.
queueName QueueName De naam van de wachtrij.
connection Verbinding De naam van een app-instelling of instellingsverzameling die aangeeft hoe verbinding moet worden maken met Azure Queues. Zie Verbindingen.

Wanneer u lokaal ontwikkelt, gaan app-instellingen in het bestand local.settings.json.

Verbindingen

De connection eigenschap is een verwijzing naar de omgevingsconfiguratie die aangeeft hoe de app verbinding moet maken met Azure Queues. Er kan het volgende worden opgegeven:

Als de geconfigureerde waarde zowel een exacte overeenkomst voor één instelling als een overeenkomend voorvoegsel voor andere instellingen is, wordt de exacte overeenkomst gebruikt.

Verbindingsreeks

Als u een connection string, volgt u de stappen in Toegangssleutels voor opslagaccount beheren.

Deze connection string moeten worden opgeslagen in een toepassingsinstelling met een naam die overeenkomt met de waarde die is opgegeven door de connection eigenschap van de bindingsconfiguratie.

Als de naam van de app-instelling begint met 'AzureWebJobs', kunt u hier alleen de rest van de naam opgeven. Als u bijvoorbeeld instelt op 'MyStorage', zoekt de Functions-runtime naar een app-instelling met de naam connection 'AzureWebJobsMyStorage'. Als u leeg connection laat, gebruikt de Functions-runtime de standaardinstelling Storage connection string in de app-instelling met de naam AzureWebJobsStorage .

Op identiteit gebaseerde verbindingen

Als u versie 5.x ofhoger van de extensie gebruikt in plaats van een connection string met een geheim, kunt u de app een Azure Active Directory laten gebruiken. Hiervoor definieert u instellingen onder een gemeenschappelijk voorvoegsel dat wordt toe te staan aan de eigenschap in de connection trigger en bindingsconfiguratie.

In deze modus vereist de extensie de volgende eigenschappen:

Eigenschap Sjabloon voor omgevingsvariabelen Beschrijving Voorbeeldwaarde
Queue Service URI <CONNECTION_NAME_PREFIX>__queueServiceUri1 De gegevensvlak-URI van de wachtrijservice waarmee u verbinding maakt, met behulp van het HTTPS-schema. https://<storage_account_name>.queue.core.windows.net

1 <CONNECTION_NAME_PREFIX>__serviceUri kan worden gebruikt als alias. Als beide formulieren worden opgegeven, queueServiceUri wordt het formulier gebruikt. Het serviceUri formulier kan niet worden gebruikt wanneer de algehele verbindingsconfiguratie moet worden gebruikt in blobs, wachtrijen en/of tabellen.

Er kunnen extra eigenschappen worden ingesteld om de verbinding aan te passen. Zie Algemene eigenschappen voor op identiteit gebaseerde verbindingen.

Wanneer deze worden gehost in Azure Functions-service, gebruiken identiteitsgebaseerde verbindingen een beheerde identiteit. De door het systeem toegewezen identiteit wordt standaard gebruikt, hoewel een door de gebruiker toegewezen identiteit kan worden opgegeven met de credential eigenschappen clientID en . Wanneer deze wordt uitgevoerd in andere contexten, zoals lokale ontwikkeling, wordt in plaats daarvan uw identiteit van de ontwikkelaar gebruikt, hoewel dit kan worden aangepast. Zie Local development with identity-based connections(Lokale ontwikkeling met op identiteit gebaseerde verbindingen).

Machtiging verlenen aan de identiteit

Elke identiteit die wordt gebruikt, moet machtigingen hebben om de beoogde acties uit te voeren. U moet een rol toewijzen in Azure RBACmet behulp van ingebouwde of aangepaste rollen die deze machtigingen bieden.

Belangrijk

Sommige machtigingen kunnen worden blootgesteld door de doelservice die niet nodig zijn voor alle contexten. Waar mogelijk moet u zich houden aan het principe van de minste bevoegdheden en de identiteit alleen bevoegdheden verlenen. Als de app bijvoorbeeld alleen gegevens uit een gegevensbron hoeft te kunnen lezen, gebruikt u een rol die alleen machtigingen heeft om te lezen. Het zou ongepast zijn om een rol toe te wijzen waarmee ook naar die service kan worden geschreven, omdat dit overmatige machtigingen zou zijn voor een leesbewerking. Op dezelfde manier wilt u er zeker van zijn dat de roltoewijzing alleen wordt beperkt tot de resources die moeten worden gelezen.

U moet een roltoewijzing maken die tijdens runtime toegang biedt tot uw wachtrij. Beheerrollen zoals Eigenaar zijn niet voldoende. In de volgende tabel ziet u ingebouwde rollen die worden aanbevolen wanneer u de Queue Storage-extensie in normale werking gebruikt. Uw toepassing heeft mogelijk extra machtigingen nodig op basis van de code die u schrijft.

Bindingstype Voorbeeld van ingebouwde rollen
Trigger [Storage Queue Data Reader ,]Storage Queue Data Message [Processor]
Uitvoerbinding [Storage Inzender voor wachtrijgegevens,] [Storage afzender van wachtrijgegevens]

Gebruik

Standaard

Schrijf één wachtrijbericht met behulp van een methodeparameter zoals out T paramName . U kunt het retourtype van de methode gebruiken in plaats van een out parameter en kan een van de volgende typen T zijn:

  • Een object dat kan worden geser serializeerbaar als JSON
  • string
  • byte[]
  • CloudQueueMessage

Als u probeert te verbinden met en een foutbericht krijgt, zorg er dan voor dat u een verwijzing hebt naar de CloudQueueMessage juiste Storage SDK-versie.

In C# en C#-script schrijft u meerdere wachtrijberichten met behulp van een van de volgende typen:

Aanvullende typen

Apps met de versie 5.0.0 of hoger van de Storage-extensie kunnen ook typen uit de Azure SDK voor .NET gebruiken. Met deze versie wordt de ondersteuning voor de verouderde CloudQueue en typen in de voorkeur van de volgende typen CloudQueueMessage wegvalt:

Zie de opslagplaats GitHub voor de extensie voor voorbeelden van deze typen.

Uitzonderingen en retourcodes

Binding Referentie
Wachtrij Wachtrijfoutcodes
Blob, Tabel, Wachtrij Storage Foutcodes
Blob, Tabel, Wachtrij Problemen oplossen

Volgende stappen