Azure Blob Storage utgående bindning för Azure Functions

Med utgående bindning kan du ändra och ta bort Blob Storage-data i en Azure-funktion.

Information om konfiguration och konfigurations information finns i översikten.

Exempel

Följande exempel är en C#-funktion som använder en BLOB-utlösare och två utgående BLOB-bindningar. Funktionen utlöses genom att en avbildnings-BLOB skapas i behållaren för exempel bilder . Det skapar små och medel stora kopior av avbildnings-bloben.

using System.Collections.Generic;
using System.IO;
using Microsoft.Azure.WebJobs;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats;
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;

public class ResizeImages
{
    [FunctionName("ResizeImage")]
    public static void Run([BlobTrigger("sample-images/{name}")] Stream image,
        [Blob("sample-images-sm/{name}", FileAccess.Write)] Stream imageSmall,
        [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageMedium)
    {
        IImageFormat format;

        using (Image<Rgba32> input = Image.Load<Rgba32>(image, out format))
        {
            ResizeImage(input, imageSmall, ImageSize.Small, format);
        }

        image.Position = 0;
        using (Image<Rgba32> input = Image.Load<Rgba32>(image, out format))
        {
            ResizeImage(input, imageMedium, ImageSize.Medium, format);
        }
    }

    public static void ResizeImage(Image<Rgba32> input, Stream output, ImageSize size, IImageFormat format)
    {
        var dimensions = imageDimensionsTable[size];

        input.Mutate(x => x.Resize(dimensions.Item1, dimensions.Item2));
        input.Save(output, format);
    }

    public enum ImageSize { ExtraSmall, Small, Medium }

    private static Dictionary<ImageSize, (int, int)> imageDimensionsTable = new Dictionary<ImageSize, (int, int)>() {
        { ImageSize.ExtraSmall, (320, 200) },
        { ImageSize.Small,      (640, 400) },
        { ImageSize.Medium,     (800, 600) }
    };

}

Attribut och anteckningar

Använd BlobAttributei C#-klass bibliotek.

Attributets konstruktor tar vägen till blobben och en FileAccess parameter som visar Läs-eller Skriv behörighet, som visas i följande exempel:

[FunctionName("ResizeImage")]
public static void Run(
    [BlobTrigger("sample-images/{name}")] Stream image,
    [Blob("sample-images-md/{name}", FileAccess.Write)] Stream imageSmall)
{
    ...
}

Du kan ställa in Connection egenskapen för att ange det lagrings konto som ska användas, som du ser i följande exempel:

[FunctionName("ResizeImage")]
public static void Run(
    [BlobTrigger("sample-images/{name}")] Stream image,
    [Blob("sample-images-md/{name}", FileAccess.Write, Connection = "StorageConnectionAppSetting")] Stream imageSmall)
{
    ...
}

Ett fullständigt exempel finns i output-exemplet.

Du kan använda StorageAccount attributet för att ange lagrings kontot på klass-, metod-eller parameter nivå. Mer information finns i avsnittet om Utlösar-attribut.

Konfiguration

I följande tabell förklaras de egenskaper för bindnings konfiguration som du anger i function.js filen och Blob attributet.

function.jspå egenskap Attributets egenskap Beskrivning
bastyp saknas Måste anges till blob .
position saknas Måste anges till out för en utgående bindning. Undantag anges i användnings avsnittet.
Namn saknas Namnet på variabeln som representerar blobben i funktions koden. Ange till $return att referera till funktionens retur värde.
sökväg BlobPath Sökvägen till BLOB-behållaren.
anslutningen Anslutning Namnet på en app-inställning som innehåller den lagrings anslutnings sträng som ska användas för den här bindningen. Om appens inställnings namn börjar med "AzureWebJobs" kan du bara ange resten av namnet här. Om du till exempel anger connection "unstorage" söker funktions körningen efter en app-inställning med namnet "AzureWebJobsMyStorage". Om du lämnar connection tomt använder Functions-körningen standard anslutnings strängen för lagring i den angivna app-inställningen AzureWebJobsStorage .

Anslutnings strängen måste vara avsedd för ett allmänt lagrings konto, inte ett enbart BLOB-lagrings konto.

Om du använder version 5. x eller högre av tillägget, i stället för en anslutnings sträng, kan du ange en referens till ett konfigurations avsnitt som definierar anslutningen. Se anslutningar.
saknas Åtkomst Anger om du kommer att läsa eller skriva.

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

Användning

Standardvärde

Du kan binda till följande typer för att skriva blobar:

  • TextWriter
  • out string
  • out Byte[]
  • CloudBlobStream
  • Stream
  • CloudBlobContainer1
  • CloudBlobDirectory
  • ICloudBlob2
  • CloudBlockBlob2
  • CloudPageBlob2
  • CloudAppendBlob2

1 Kräver "i"-bindning direction ifunction.jspå eller i FileAccess.Read ett C#-klassbibliotek. Du kan dock använda containerobjektet som körningen tillhandahåller för att göra skrivåtgärder, till exempel ladda upp blobar till containern.

2 Kräver "inout"-bindning direction ifunction.jspå eller i FileAccess.ReadWrite ett C#-klassbibliotek.

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

Bindning till string eller rekommenderas endast om Byte[] blobstorleken är liten, eftersom hela blobinnehållet läses in i minnet. I allmänhet är det bättre att använda en Stream - eller CloudBlockBlob -typ. Mer information finns i Samtidighet och minnesanvändning tidigare i den här artikeln.

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 släpper stöd för de CloudBlobContainer äldre typerna , , , , och och till förmån för följande CloudBlobDirectory ICloudBlob CloudBlockBlob CloudPageBlob CloudAppendBlob typer:

1 Kräver "i"-bindning direction ifunction.jspå eller i FileAccess.Read ett C#-klassbibliotek. Du kan dock använda containerobjektet som körningen tillhandahåller för att göra skrivåtgärder, till exempel ladda upp blobar till containern.

2 Kräver "inout"-bindning direction ifunction.jspå eller i FileAccess.ReadWrite ett C#-klassbibliotek.

Exempel som använder dessa typer finns i GitHub lagringsplats för tillägget. Läs mer om de här nya typerna och hur du migrerar till dem från Azure.Storage. Migreringsguide för blobar.

Undantag och retur koder

Bindning Referens
Blob BLOB-felkoder
BLOB, tabell, kö Lagrings fel koder
BLOB, tabell, kö Felsökning

Nästa steg