Následující příklad ukazuje funkci jazyka C#, která pro každý přijatý požadavek HTTP vytvoří zprávu fronty.
[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;
}
}
Následující příklad ukazuje vazbu triggeru HTTP v souboru function.json a kódu skriptu jazyka C# (.csx), který tuto vazbu používá. Funkce vytvoří položku fronty s datovou část objektu CustomQueueMessage pro každý přijatý požadavek HTTP.
Tyto vlastnosti jsou vysvětlené v části Konfigurace.
Tady je kód skriptu jazyka C#, který vytvoří jednu zprávu fronty:
public class CustomQueueMessage
{
public string PersonName { get; set; }
public string Title { get; set; }
}
public static CustomQueueMessage Run(CustomQueueMessage input, ILogger log)
{
return input;
}
Pomocí parametru nebo můžete odeslat více zpráv ICollectorIAsyncCollector najednou. Tady je kód skriptu jazyka C#, který odesílá více zpráv, jednu s daty požadavku HTTP a jednu s pevnými hodnotami:
Následující příklad ukazuje funkci Jazyka Java, která vytvoří zprávu fronty pro při aktivaci požadavkem HTTP.
@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;
}
V knihovně runtime java functionspoužijte poznámku k parametrům, @QueueOutput jejichž hodnota by byla zapsána do queue storage. Typ parametru by měl být OutputBinding<T> , kde je jakýkoli nativní typ T Javy objektu POJO.
Následující příklad ukazuje vazbu triggeru HTTP v souboru function.json a funkci JavaScriptu, která tuto vazbu používá. Funkce vytvoří položku fronty pro každý přijatý požadavek HTTP.
Definováním pole zpráv pro výstupní vazbu můžete odeslat více zpráv myQueueItem najednou. Následující kód JavaScriptu odešle dvě zprávy fronty s pevnými hodnotami pro každý přijatý požadavek HTTP.
Následující příklady kódu ukazují výstup zprávy fronty z funkce aktivované protokolem HTTP. Oddíl konfigurace s type parametrem queue definuje výstupní vazbu.
Pomocí této konfigurace vazby může funkce PowerShellu vytvořit zprávu fronty pomocí Push-OutputBinding . V tomto příkladu se vytvoří zpráva z řetězce dotazu nebo parametru body.
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"
})
Pokud chcete odeslat více zpráv najednou, definujte pole zpráv a použijte k odesílání Push-OutputBinding zpráv do výstupní vazby fronty.
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"
})
Následující příklad ukazuje výstup jedné a více hodnot do front úložiště. Konfigurace potřebná pro soubor function.json je v obou stranách stejná.
Vazba Storage fronty je definovaná v souboru function.json, kde type je nastavený na queue .
Pokud chcete ve frontě vytvořit více zpráv, deklarujte parametr jako odpovídající typ seznamu a do metody předejte pole hodnot (které odpovídají typu set seznamu).
Atribut se vztahuje out na parametr nebo návratovou hodnotu funkce. Konstruktor atributu přebírá název fronty, jak je znázorněno v následujícím příkladu:
Pomocí atributu StorageAccount můžete zadat účet úložiště na úrovni třídy, metody nebo parametru. Další informace najdete v tématu Aktivační událost – atributy.
Skript jazyka C# nepodporuje atributy.
Poznámka umožňuje zapsat zprávu jako QueueOutput výstup funkce. Následující příklad ukazuje funkci aktivované protokolem HTTP, která vytvoří zprávu fronty.
Tento připojovací řetězec by měl být uložen v nastavení aplikace s názvem, který odpovídá hodnotě určené connection vlastností konfigurace vazby.
Pokud název nastavení aplikace začíná řetězcem "AzureWebJobs", můžete zde zadat pouze zbytek názvu. Například pokud nastavíte connection na "MyStorage", modul runtime Functions vyhledá nastavení aplikace s názvem "AzureWebJobsMyStorage". pokud necháte connection prázdné, modul runtime functions použije výchozí Storage připojovací řetězec v nastavení aplikace s názvem AzureWebJobsStorage .
Připojení založená na identitách
pokud používáte rozšíření verze 5. x nebo vyšší, místo použití připojovacího řetězce s tajným klíčem můžete aplikaci použít Azure Active Directory identity. K tomu byste definovali nastavení v rámci společné předpony, která se mapuje na connection vlastnost v aktivační události a v konfiguraci vazby.
V tomto režimu přípona vyžaduje následující vlastnosti:
Vlastnost
Šablona proměnné prostředí
Popis
Příklad hodnoty
Identifikátor URI služby front
<CONNECTION_NAME_PREFIX>__queueServiceUriprvní
Identifikátor URI datové roviny služby fronty, ke které se připojujete, pomocí schématu HTTPS.
1<CONNECTION_NAME_PREFIX>__serviceUri se dá použít jako alias. Pokud jsou k dispozici obě formuláře, použije se queueServiceUri formulář. serviceUriFormulář nelze použít, pokud se má celková konfigurace připojení používat napříč objekty blob, frontami a tabulkami.
Při hostování ve Azure Functions používá připojení založená na identitě spravovanou identitu. Identita přiřazená systémem se používá ve výchozím nastavení, i když identitu přiřazenou uživatelem je možné zadat pomocí vlastností credentialclientID a . Při spuštění v jiných kontextech, jako je například místní vývoj, se místo toho použije identita vývojáře, i když je možné ji přizpůsobit. Viz Místní vývoj s připojeními založenými na identitách.
Udělení oprávnění k identitě
Kterákoli použitá identita musí mít oprávnění k provedení zamýšlených akcí. V Azure RBACbudete muset přiřadit roli pomocí předdefinované nebo vlastní role, které tato oprávnění poskytují.
Důležité
Cílová služba může zobrazit některá oprávnění, která nejsou nutná pro všechny kontexty. Pokud je to možné, dodržujte princip co nejmenších oprávnění a udělte identitě pouze požadovaná oprávnění. Pokud například aplikace potřebuje jenom čtení ze zdroje dat, použijte roli, která má oprávnění ke čtení. Přiřazení role, která umožňuje zápis do této služby, by nebylo vhodné, protože by to bylo nadměrné oprávnění pro operaci čtení. Podobně byste chtěli zajistit, aby přiřazení role bylo vymezené jenom na prostředky, které je potřeba přečíst.
Budete muset vytvořit přiřazení role, která za běhu poskytuje přístup k vaší frontě. Role pro správu, jako je vlastník, nestačí. Následující tabulka uvádí předdefinované role, které se doporučují při běžném Storage fronty. Vaše aplikace může na základě kódu, který píšete, vyžadovat další oprávnění.
Typ vazby
Příklady předdefinované role
Trigger
[Storage queue data reader,] [Storage zpracování datových zpráv fronty]
Výstupní vazba
[Storage queue data contributor (přispěvatel]dat fronty), Storage queue data message sender (Odesílatel [datových zpráv fronty).]
Pomocí parametru metody, jako je , můžete napsat jednu zprávu out T paramName fronty. Místo parametru můžete použít návratový typ metody a outT může to být kterýkoli z následujících typů:
Aplikace, které používají verzi 5.0.0 nebo vyšší Storage, mohou také používat typy ze sady Azure SDK pro .NET. Tato verze zahodí podporu CloudQueue starších verzí a typů a CloudQueueMessage upřednostní následující typy:
Pomocí parametru metody, jako je , můžete napsat jednu zprávu out T paramName fronty. paramNameje hodnota zadaná ve vlastnosti namefunction.json. Místo parametru můžete použít návratový typ metody a outT může to být kterýkoli z následujících typů:
Aplikace, které používají verzi 5.0.0 nebo vyšší Storage, mohou také používat typy ze sady Azure SDK pro .NET. Tato verze zahodí podporu CloudQueue starších verzí a typů a CloudQueueMessage upřednostní následující typy:
Existují dvě možnosti pro výstup zprávy Queue z funkce pomocí poznámky QueueOutput:
Návratová hodnota: Použitím anotace na samotnou funkci se návratová hodnota funkce zachová jako zpráva fronty.
Imperativní: Pokud chcete explicitně nastavit hodnotu zprávy, použijte anotaci na konkrétní parametr typu , kde je POJO nebo jakýkoli OutputBinding<T> nativní typ T Jazyka Java. Při této konfiguraci předání hodnoty setValue metodě zachová hodnotu jako zprávu fronty.
Položka výstupní fronty je k dispozici prostřednictvím context.bindings.<NAME> , kde odpovídá názvu <NAME> definovanému v souboru function.json. Pro datovou část položky fronty můžete použít řetězec nebo objekt JSON-serializable.
Výstup zprávy fronty je k dispozici prostřednictvím příkazu , kde předáte argumenty, které odpovídají názvu určenému parametrem vazby Push-OutputBindingname v souboru function.json.
Existují dvě možnosti pro výstup zprávy fronty z funkce:
Návratová hodnota:name Nastavte vlastnost v souboru function.json na $return . Při této konfiguraci se návratová hodnota funkce zachová jako zpráva Queue Storage.
Imperativní: Předejte hodnotu metodě set parametru deklarovaného jako typ Out. Hodnota předaná do set se zachová jako zpráva Queue Storage.