Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med utdatabindningen kan du ändra och ta bort bloblagringsdata i en Azure-funktion.
Information om konfiguration och konfigurationsinformation finns i översikten.
Viktigt!
Den här artikeln använder flikar för att stödja flera versioner av Node.js programmeringsmodellen. V4-modellen är allmänt tillgänglig och är utformad för att ha en mer flexibel och intuitiv upplevelse för JavaScript- och TypeScript-utvecklare. Mer information om hur v4-modellen fungerar finns i utvecklarguiden för Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.
Azure Functions stöder två programmeringsmodeller för Python. Hur du definierar dina bindningar beror på din valda programmeringsmodell.
Med programmeringsmodellen Python v2 kan du definiera bindningar med hjälp av dekoratörer direkt i python-funktionskoden. Mer information finns i utvecklarguiden för Python.
Den här artikeln stöder båda programmeringsmodellerna.
Exempel
Go-stöd finns för närvarande inte tillgängligt för denna bindning.
En C#-funktion kan skapas med något av följande C#-lägen:
-
Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework. Tillägg för isolerade arbetsprocessfunktioner använder
Microsoft.Azure.Functions.Worker.Extensions.*namnområden. -
Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen. I en variant av den här modellen kan Functions köras med C#-skript, vilket främst stöds för redigering av C#-portalen. Tillägg för in-process-funktioner använder
Microsoft.Azure.WebJobs.Extensions.*namnområden.
Viktigt!
Supporten upphör för den pågående modellen den 10 november 2026. Vi rekommenderar starkt att du migrerar dina appar till den isolerade arbetsmodellen för fullt stöd.
Följande exempel är en C#-funktion som körs i en isolerad arbetsprocess och använder en blobutlösare med både blobindata- och blobutdatablobbindningar. Skapandet av en blob i testprover-trigger-behållaren utlöser funktionen. Den läser en textfil från containern test-samples-input och skapar en ny textfil i en utdatacontainer baserat på namnet på den utlösta filen.
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public static class BlobFunction
{
[Function(nameof(BlobFunction))]
[BlobOutput("test-samples-output/{name}-output.txt")]
public static string Run(
[BlobTrigger("test-samples-trigger/{name}")] string myTriggerItem,
[BlobInput("test-samples-input/sample1.txt")] string myBlob,
FunctionContext context)
{
var logger = context.GetLogger("BlobFunction");
logger.LogInformation("Triggered Item = {myTriggerItem}", myTriggerItem);
logger.LogInformation("Input Item = {myBlob}", myBlob);
// Blob Output
return "blob-output content";
}
}
}
Det här avsnittet innehåller följande exempel:
HTTP-utlösare med OutputBinding (Java)
I följande exempel visas en Java-funktion som använder anteckningen HttpTrigger för att ta emot en parameter som innehåller namnet på en fil i en bloblagringscontainer. Anteckningen BlobInput läser sedan filen och skickar dess innehåll till funktionen som en byte[]. Anteckningen BlobOutput binder till OutputBinding outputItem, som sedan används av funktionen för att skriva innehållet i indatabloben till den konfigurerade lagringscontainern.
@FunctionName("copyBlobHttp")
@StorageAccount("Storage_Account_Connection_String")
public HttpResponseMessage copyBlobHttp(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@BlobInput(
name = "file",
dataType = "binary",
path = "samples-workitems/{Query.file}")
byte[] content,
@BlobOutput(
name = "target",
path = "myblob/{Query.file}-CopyViaHttp")
OutputBinding<String> outputItem,
final ExecutionContext context) {
// Save blob to outputItem
outputItem.setValue(new String(content, StandardCharsets.UTF_8));
// build HTTP response with size of requested blob
return request.createResponseBuilder(HttpStatus.OK)
.body("The size of \"" + request.getQueryParameters().get("file") + "\" is: " + content.length + " bytes")
.build();
}
Köutlösare med hjälp av funktionens returvärde (Java)
I följande exempel visas en Java-funktion som använder anteckningen QueueTrigger för att ta emot ett meddelande som innehåller namnet på en fil i en bloblagringscontainer. Anteckningen BlobInput läser sedan filen och skickar dess innehåll till funktionen som en byte[]. Anteckningen BlobOutput binder till funktionens returvärde, som sedan används av körningen för att skriva innehållet i indatabloben till den konfigurerade lagringscontainern.
@FunctionName("copyBlobQueueTrigger")
@StorageAccount("Storage_Account_Connection_String")
@BlobOutput(
name = "target",
path = "myblob/{queueTrigger}-Copy")
public String copyBlobQueue(
@QueueTrigger(
name = "filename",
dataType = "string",
queueName = "myqueue-items")
String filename,
@BlobInput(
name = "file",
path = "samples-workitems/{queueTrigger}")
String content,
final ExecutionContext context) {
context.getLogger().info("The content of \"" + filename + "\" is: " + content);
return content;
}
I Java Functions-körningsbiblioteket använder du anteckningen @BlobOutput för funktionsparametrar vars värde skulle skrivas till ett objekt i bloblagringen. Parametertypen bör vara OutputBinding<T>, där T är vilken inbyggd Java typ som helst eller ett vanligt Java-objekt (POJO).
I följande exempel visas en köutlöst TypeScript-funktion som gör en kopia av en blob. Ett kömeddelande som innehåller namnet på blobben att kopiera triggar funktionen. Den nya bloben heter {originalblobname}-Copy.
import { app, input, InvocationContext, output } from '@azure/functions';
const blobInput = input.storageBlob({
path: 'samples-workitems/{queueTrigger}',
connection: 'MyStorageConnectionAppSetting',
});
const blobOutput = output.storageBlob({
path: 'samples-workitems/{queueTrigger}-Copy',
connection: 'MyStorageConnectionAppSetting',
});
export async function storageQueueTrigger1(queueItem: unknown, context: InvocationContext): Promise<unknown> {
return context.extraInputs.get(blobInput);
}
app.storageQueue('storageQueueTrigger1', {
queueName: 'myqueue-items',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [blobInput],
return: blobOutput,
handler: storageQueueTrigger1,
});
I följande exempel visas en köutlöst JavaScript-funktion som gör en kopia av en blob. Ett kömeddelande som innehåller namnet på blobben att kopiera triggar funktionen. Den nya bloben heter {originalblobname}-Copy.
const { app, input, output } = require('@azure/functions');
const blobInput = input.storageBlob({
path: 'samples-workitems/{queueTrigger}',
connection: 'MyStorageConnectionAppSetting',
});
const blobOutput = output.storageBlob({
path: 'samples-workitems/{queueTrigger}-Copy',
connection: 'MyStorageConnectionAppSetting',
});
app.storageQueue('storageQueueTrigger1', {
queueName: 'myqueue-items',
connection: 'MyStorageConnectionAppSetting',
extraInputs: [blobInput],
return: blobOutput,
handler: (queueItem, context) => {
return context.extraInputs.get(blobInput);
},
});
I följande exempel visas hur du skapar en kopia av en inkommande blob som utdata från en PowerShell-funktion.
I funktionens konfigurationsfil (function.json) används metadataegenskapen trigger för att ange utdatablobnamnet i path egenskaperna.
Kommentar
För att undvika oändliga loopar kontrollerar du att dina indata- och utdatasökvägar är olika.
{
"bindings": [
{
"name": "myInputBlob",
"path": "data/{trigger}",
"connection": "MyStorageConnectionAppSetting",
"direction": "in",
"type": "blobTrigger"
},
{
"name": "myOutputBlob",
"type": "blob",
"path": "data/copy/{trigger}",
"connection": "MyStorageConnectionAppSetting",
"direction": "out"
}
],
"disabled": false
}
Här är PowerShell-koden:
# Input bindings are passed in via param block.
param([byte[]] $myInputBlob, $TriggerMetadata)
Write-Host "PowerShell Blob trigger function Processed blob Name: $($TriggerMetadata.Name)"
Push-OutputBinding -Name myOutputBlob -Value $myInputBlob
I följande exempel visas blobindata- och utdatabindningar. Exemplet beror på om du använder python-programmeringsmodellen v1 eller v2.
Koden skapar en kopia av en blob.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="BlobOutput1")
@app.route(route="file")
@app.blob_input(arg_name="inputblob",
path="sample-workitems/test.txt",
connection="<BLOB_CONNECTION_SETTING>")
@app.blob_output(arg_name="outputblob",
path="newblob/test.txt",
connection="<BLOB_CONNECTION_SETTING>")
def main(req: func.HttpRequest, inputblob: str, outputblob: func.Out[str]):
logging.info(f'Python Queue trigger function processed {len(inputblob)} bytes')
outputblob.set(inputblob)
return "ok"
Attribut
C#-bibliotek för både process- och isolerad arbetsprocess använder attribut för att definiera funktionen. C#-skriptet använder i stället en function.json konfigurationsfil enligt beskrivningen i C#-skriptguiden.
Konstruktorn BlobOutputAttribute tar följande parametrar:
| Parameter | Description |
|---|---|
| BlobPath | Sökvägen till bloben. |
| Anslutning | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Azure Blobs. Se Anslutningar. |
När du utvecklar lokalt lägger du till dina programinställningar i den local.settings.json filen i Values samlingen.
Dekoratörer
Gäller endast för python v2-programmeringsmodellen.
För Python v2-funktioner som definierats med hjälp av dekoratörer definierar följande egenskaper på blob_inputblob_output dekoratörerna bloblagringsutlösare:
Information om Python-funktioner som definierats med hjälp av function.json finns i avsnittet Konfiguration .
Kommentarer
Attributet @BlobOutput ger dig åtkomst till den blob som utlöste funktionen. Om du använder en bytematris med attributet anger du dataType till binary. Mer information finns i utdataexemplet .
Konfiguration
Gäller endast programmeringsmodellen Python v1.
I följande tabell förklaras de egenskaper som du kan ange för objektet options som skickas output.storageBlob() till metoden.
| Property | Description |
|---|---|
| sökväg | Sökvägen till blobcontainern. |
| samband | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Azure Blobs. Se Anslutningar. |
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json .
| Property | Description |
|---|---|
| typ | Måste anges till blob. |
| riktning | Måste anges till out för en utdatabindning. Undantag anges i användningsavsnittet. |
| Namn | Namnet på variabeln som representerar bloben i funktionskoden. Ange till för att referera till $return funktionens returvärde. |
| sökväg | Sökvägen till blobcontainern. |
| samband | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till Azure Blobs. Se Anslutningar. |
Se avsnittet Exempel för fullständiga exempel.
Förbrukning
Vilka bindningstyper som stöds av blobutdata beror på tilläggspaketversionen och den C#-modalitet som används i funktionsappen.
När du vill att funktionen ska skriva till en enda blob kan blobutdatabindningen binda till följande typer:
| Typ | Description |
|---|---|
string |
Blobinnehållet som en sträng. Använd när blobinnehållet är enkel text. |
byte[] |
Byte för blobinnehållet. |
| JSON-serialiserbara typer | Ett objekt som representerar innehållet i en JSON-blob. Functions försöker serialisera en vanlig CLR-objekttyp (POCO) till JSON-data. |
När du vill att funktionen ska skriva till flera blobar kan blobutdatabindningen binda till följande typer:
| Typ | Description |
|---|---|
T[] där T är en av bindningstyperna för enskilda blobutdata |
En matris som innehåller innehåll för flera blobar. Varje post representerar innehållet i en blob. |
För andra utdatascenarier skapar och använder du en BlobClient eller BlobContainerClient med andra typer från Azure.Storage.Blobs direkt. Se Registrera Azure-klienter för ett exempel på hur du använder beroendeinmatning för att skapa en klienttyp från Azure SDKs.
Bindning till string, eller Byte[] rekommenderas endast när blobstorleken är liten. Att använda dessa typer rekommenderas eftersom hela blob-innehållet laddas in i minnet. Använd en Stream eller BlobClient typ för de flesta blobar. Mer information finns i Samtidighet och minnesanvändning.
Om du får ett felmeddelande när du försöker binda till någon av Storage SDK-typerna kontrollerar du att du har en referens till rätt Storage SDK-version.
Du kan också använda StorageAccountAttribute för att ange vilket lagringskonto som ska användas. Du kan göra detta när du behöver använda ett annat lagringskonto än andra funktioner i biblioteket. Konstruktorn tar namnet på en appinställning som innehåller en lagrings-anslutningssträng. Attributet kan användas på parameter-, metod- eller klassnivå. I följande exempel visas klassnivå och metodnivå:
[StorageAccount("ClassLevelStorageAppSetting")]
public static class AzureFunctions
{
[FunctionName("BlobTrigger")]
[StorageAccount("FunctionLevelStorageAppSetting")]
public static void Run( //...
{
....
}
Lagringskontot som ska användas bestäms i följande ordning:
- Attributets
BlobTriggerConnectionegenskap. - Attributet
StorageAccountsom tillämpas på samma parameter som attributetBlobTrigger. - Attributet
StorageAccountsom tillämpas på funktionen. - Attributet
StorageAccountsom tillämpas på klassen. - Standardlagringskontot för funktionsappen, som definieras i programinställningen
AzureWebJobsStorage.
Attributet @BlobOutput ger dig åtkomst till den blob som utlöste funktionen. Om du använder en bytematris med attributet anger du dataType till binary. Mer information finns i utdataexemplet .
Få åtkomst till blobdata via en parameter som matchar namnet som anges av bindningens namnparameter i filen function.json .
Du kan deklarera funktionsparametrar som följande typer för att skriva ut till bloblagring:
- Strängar som
func.Out[str] - Strömmar som
func.Out[func.InputStream]
Mer information finns i utdataexemplet .
anslutningar
Egenskapen connection är inställd på en nyckel i applikationsinställningarna som returnerar ett värde som används av Functions-runtimen för att ansluta till lagringskontot som används av tillägget. Värdet på anslutningsegenskapsinställningen beror på typen av anslutning:
-
Managed identity-anslutning: Egenskapen
connection<CONNECTION_NAME_PREFIX>delas av en grupp inställningar som tillsammans definierar en identitetsbaserad anslutning till lagringskontot. För mer information, se Definiera identitetskopplingar. -
Key Vault-referens: Egendomsinställningen
connectionreturnerar en Azure Key Vault-referens till platsen där reťazec pripojenia underhålls centralt. För mer information, se Definiera Key Vault-anslutningar. -
App Configuration Reference: Egenskapsinställningen
connectionreturnerar en Azure App Configuration-referens som returnerar en reťazec pripojenia eller en Key Vault-referens. För mer information, se Azure App Configuration i artikeln om anslutningar. -
Connection string: Egenskapsinställningen
connectionreturnerar den faktiska lagringskontots reťazec pripojenia. Eftersom reťazec pripojenia innehåller delade hemliga nycklar bör du överväga att använda en managed identity-anslutning när det är möjligt. För mer information, se Definiera kopplingar.
För att lära dig mer om bindningsanslutningar, se Hantera anslutning i Azure Functions. För att få en anslutningssträng följer du stegen som visas i Hantera åtkomstnycklar för lagringskonto.
När du ställer connection in en nyckel eller nyckelprefix med namnet AzureWebJobsStorage eller en tom sträng använder bindningstillägget standardvärdens lagringskonto. För mer information, se Optimera lagringsprestanda.
Undantag och returkoder
| Bindning | Referens |
|---|---|
| Blob | Blobfelkoder |
| Blob, Tabell, Kö | Felkoder för lagring |
| Blob, Tabell, Kö | Felsökning |