Azure WebJobs Storage-blobok ügyfélkódtára a .NET-hez – 5.1.1-es verzió
Ez a bővítmény az Azure Storage-blobok Azure Functions való elérésére szolgál.
Első lépések
A csomag telepítése
Telepítse a Storage Blobs bővítményt a NuGettel:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Storage.Blobs
Előfeltételek
A csomag használatához Azure-előfizetésre és tárfiókra van szükség.
Új tárfiók létrehozásához használhatja az Azure Portalt, a Azure PowerShell vagy az Azure CLI-t. Íme egy példa az Azure CLI használatával:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Az ügyfél hitelesítése
Ahhoz, hogy a bővítmény hozzáférhessen a blobokhoz, szüksége lesz az Azure Portalon található kapcsolati sztring vagy az alábbi Azure CLI-kódrészletre.
az storage account show-connection-string -g <your-resource-group-name> -n <your-resource-name>
A kapcsolati sztring az AzureWebJobsStorage alkalmazásbeállítással adhatók meg.
Fő fogalmak
Blob-eseményindító használata
A Blob Storage-eseményindító új vagy frissített blob észlelésekor elindít egy függvényt. A blob tartalma a függvény bemeneteként van megadva.
Az oktatóanyagból megtudhatja, hogyan aktiválhat egy Azure-függvényt blob módosításakor.
Figyelési stratégiák
A Blob Trigger több stratégiát is kínál a blobok létrehozásának és módosításának figyeléséhez. A stratégia testre szabható a BlobTrigger
tulajdonságának megadásával Source
(lásd az alábbi példákat).
Alapértelmezett stratégia
Alapértelmezés szerint a blob-eseményindító lekérdezést használ, amely hibridként működik az Azure Storage-elemzések naplózásának vizsgálata és az időszakos tárolóvizsgálatok futtatása között. A blobokat egyszerre 10 000-et tartalmazó csoportokban ellenőrzi a rendszer, és az intervallumok között egy folytatási tokent használ.
Az Azure Storage-elemzések naplózása alapértelmezés szerint nincs engedélyezve. Ennek engedélyezéséről az Azure Storage-elemzések naplózása című témakörben olvashat.
Ez a stratégia nem ajánlott nagy léptékű alkalmazásokhoz vagy alacsony késést igénylő forgatókönyvekhez.
Event Grid
A Blob Storage-események a módosítások figyelésére használhatók. Ez a stratégia további beállításokat igényel.
Ez a stratégia nagy léptékű alkalmazásokhoz ajánlott.
Blobkötés használata
A bemeneti kötés lehetővé teszi a Blob Storage-adatok olvasását egy Azure-függvény bemeneteként. A kimeneti kötés lehetővé teszi a Blob Storage-adatok módosítását és törlését egy Azure-függvényben.
A bővítmény blobokhoz való elérésének megismeréséhez kövesse a bemeneti kötéssel és a kimeneti kötéssel kapcsolatos oktatóanyagot .
Példák
Reagálás a blobok módosítására
Alapértelmezett stratégia
public static class BlobFunction_ReactToBlobChange
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob")] Stream blobStream,
ILogger logger)
{
using var blobStreamReader = new StreamReader(blobStream);
logger.LogInformation("Blob sample-container/sample-blob has been updated with content: {content}", blobStreamReader.ReadToEnd());
}
}
Event Grid-stratégia
public static class BlobFunction_ReactToBlobChange_EventGrid
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob", Source = BlobTriggerSource.EventGrid)] Stream blobStream,
ILogger logger)
{
using var blobStreamReader = new StreamReader(blobStream);
logger.LogInformation("Blob sample-container/sample-blob has been updated with content: {content}", blobStreamReader.ReadToEnd());
}
}
Olvasás streamből
public static class BlobFunction_ReadStream
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob-1")] Stream blobStream1,
[Blob("sample-container/sample-blob-2", FileAccess.Read)] Stream blobStream2,
ILogger logger)
{
using var blobStreamReader1 = new StreamReader(blobStream1);
logger.LogInformation("Blob sample-container/sample-blob-1 has been updated with content: {content}", blobStreamReader1.ReadToEnd());
using var blobStreamReader2 = new StreamReader(blobStream2);
logger.LogInformation("Blob sample-container/sample-blob-2 has content: {content}", blobStreamReader2.ReadToEnd());
}
}
Írás streambe
public static class BlobFunction_WriteStream
{
[FunctionName("BlobFunction")]
public static async Task Run(
[BlobTrigger("sample-container/sample-blob-1")] Stream blobStream1,
[Blob("sample-container/sample-blob-2", FileAccess.Write)] Stream blobStream2,
ILogger logger)
{
await blobStream1.CopyToAsync(blobStream2);
logger.LogInformation("Blob sample-container/sample-blob-1 has been copied to sample-container/sample-blob-2");
}
}
Kötés a sztringhez
public static class BlobFunction_String
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob-1")] string blobContent1,
[Blob("sample-container/sample-blob-2")] string blobContent2,
ILogger logger)
{
logger.LogInformation("Blob sample-container/sample-blob-1 has been updated with content: {content}", blobContent1);
logger.LogInformation("Blob sample-container/sample-blob-2 has content: {content}", blobContent2);
}
}
Sztring írása a blobba
public static class BlobFunction_String_Write
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob-1")] string blobContent1,
[Blob("sample-container/sample-blob-2")] out string blobContent2,
ILogger logger)
{
logger.LogInformation("Blob sample-container/sample-blob-1 has been updated with content: {content}", blobContent1);
blobContent2 = blobContent1;
logger.LogInformation("Blob sample-container/sample-blob-1 has been copied to sample-container/sample-blob-2");
}
}
Kötés bájttömbhöz
public static class BlobFunction_ByteArray
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob-1")] byte[] blobContent1,
[Blob("sample-container/sample-blob-2")] byte[] blobContent2,
ILogger logger)
{
logger.LogInformation("Blob sample-container/sample-blob-1 has been updated with content: {content}", Encoding.UTF8.GetString(blobContent1));
logger.LogInformation("Blob sample-container/sample-blob-2 has content: {content}", Encoding.UTF8.GetString(blobContent2));
}
}
Bájttömb írása blobba
public static class BlobFunction_ByteArray_Write
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob-1")] byte[] blobContent1,
[Blob("sample-container/sample-blob-2")] out byte[] blobContent2,
ILogger logger)
{
logger.LogInformation("Blob sample-container/sample-blob-1 has been updated with content: {content}", Encoding.UTF8.GetString(blobContent1));
blobContent2 = blobContent1;
logger.LogInformation("Blob sample-container/sample-blob-1 has been copied to sample-container/sample-blob-2");
}
}
Kötés a TextReaderhez és a Szövegíróhoz
public static class BlobFunction_TextReader_TextWriter
{
[FunctionName("BlobFunction")]
public static async Task Run(
[BlobTrigger("sample-container/sample-blob-1")] TextReader blobContentReader1,
[Blob("sample-container/sample-blob-2")] TextWriter blobContentWriter2,
ILogger logger)
{
while (blobContentReader1.Peek() >= 0)
{
await blobContentWriter2.WriteLineAsync(await blobContentReader1.ReadLineAsync());
}
logger.LogInformation("Blob sample-container/sample-blob-1 has been copied to sample-container/sample-blob-2");
}
}
Kötés az Azure Storage Blob SDK-típusokhoz
public static class BlobFunction_BlobClient
{
[FunctionName("BlobFunction")]
public static async Task Run(
[BlobTrigger("sample-container/sample-blob-1")] BlobClient blobClient1,
[Blob("sample-container/sample-blob-2")] BlobClient blobClient2,
ILogger logger)
{
BlobProperties blobProperties1 = await blobClient1.GetPropertiesAsync();
logger.LogInformation("Blob sample-container/sample-blob-1 has been updated on: {datetime}", blobProperties1.LastModified);
BlobProperties blobProperties2 = await blobClient2.GetPropertiesAsync();
logger.LogInformation("Blob sample-container/sample-blob-2 has been updated on: {datetime}", blobProperties2.LastModified);
}
}
Blobtároló elérése
public static class BlobFunction_AccessContainer
{
[FunctionName("BlobFunction")]
public static async Task Run(
[BlobTrigger("sample-container/sample-blob")] Stream blobStream,
[Blob("sample-container")] BlobContainerClient blobContainerClient,
ILogger logger)
{
logger.LogInformation("Blobs within container:");
await foreach (BlobItem blobItem in blobContainerClient.GetBlobsAsync())
{
logger.LogInformation(blobItem.Name);
}
}
}
Blobok számbavétele a tárolóban
public static class BlobFunction_EnumerateBlobs_Stream
{
[FunctionName("BlobFunction")]
public static async Task Run(
[BlobTrigger("sample-container/sample-blob")] Stream blobStream,
[Blob("sample-container")] IEnumerable<Stream> blobs,
ILogger logger)
{
logger.LogInformation("Blobs contents within container:");
foreach (Stream content in blobs)
{
using var blobStreamReader = new StreamReader(content);
logger.LogInformation(await blobStreamReader.ReadToEndAsync());
}
}
}
public static class BlobFunction_EnumerateBlobs_BlobClient
{
[FunctionName("BlobFunction")]
public static void Run(
[BlobTrigger("sample-container/sample-blob")] Stream blobStream,
[Blob("sample-container")] IEnumerable<BlobClient> blobs,
ILogger logger)
{
logger.LogInformation("Blobs within container:");
foreach (BlobClient blob in blobs)
{
logger.LogInformation(blob.Name);
}
}
}
A bővítmény konfigurálása
Tekintse meg a függvények mintaalkalmazását.
Hibaelhárítás
Hibaelhárítási útmutatásért tekintse meg a monitorozási Azure Functions című témakört.
Következő lépések
Olvassa el az Azure-függvények bemutatását vagy az Azure-függvények létrehozását ismertető útmutatót.
Közreműködés
A tár felépítéséről, teszteléséről és közreműködéséről további információt a Storage CONTRIBUTING.md talál.
A projektben szívesen fogadjuk a hozzájárulásokat és a javaslatokat. A legtöbb hozzájáruláshoz el kell fogadnia egy Közreműködői licencszerződést (CLA-t), amelyben kijelenti, hogy jogosult arra, hogy ránk ruházza hozzájárulása felhasználási jogát, és ezt ténylegesen meg is teszi. Részletekért látogasson el cla.microsoft.com.
A projekt a Microsoft nyílt forráskódú projekteket szabályozó etikai kódexe, a Microsoft Open Source Code of Conduct hatálya alá esik. További információkért lásd a viselkedési szabályzattal kapcsolatos gyakori kérdéseket , vagy vegye fel a kapcsolatot opencode@microsoft.com az esetleges további kérdésekkel vagy megjegyzésekkel.