web-dev-qa-db-ja.com

Azure Functionsを使用してBLOBを削除するにはどうすればよいですか?

画像が特定のAzureストレージにアップロードまたは追加されたときにトリガーされるAzure関数を作成しています。これにより、次のことが行われます。1。)画像のサイズを変更する2.)画像を正しいディレクトリに配置する(出力バインディングを使用)3。)処理後にAzureStorageに追加された元のBLOBイメージを削除します。

プロセスのステップ1と2は完了しましたが、AzureStorageのメソッドを公開するBLOBまたはAPIの削除に関するドキュメントがほとんどまたはまったく見つかりません。 (C#を使用)

サンプルコードは次のとおりです。

#r "System.Drawing"
using System;
using ImageResizer;
using System.Drawing;
using System.Drawing.Imaging;

public static void Run(Stream inputImage, string imageName, Stream resizedImage, TraceWriter log)
{
    // Log the file name and size
    log.Info($"C# Blob trigger function Processed blob\n Name:{imageName} \n Size: {inputImage.Length} Bytes");

    // Manipulate the image
    var settings = new ImageResizer.ResizeSettings
    {
        MaxWidth = 400,
        Format = "png"
    };

    ImageResizer.ImageBuilder.Current.Build(inputImage, resizedImage, settings);

    // Delete the Raw Original Image Step
}
9
Raven

ブロブを削除するには、次のことを行う必要があります

var container = blobClient.GetContainerReference(containerName);
var blockBlob = container.GetBlockBlobReference(fileName);
return blockBlob.DeleteIfExists();

これを試す前に、すべてのストリームを閉じて、画像が使用されないようにしてください。

7
albattran

必ず正しい参照をインポートしてください。

#r "Microsoft.WindowsAzure.Storage"
using Microsoft.WindowsAzure.Storage.Blob;

次に、CloudBlockBlobをパラメータータイプとして使用して削除できます。

public static void Run(CloudBlockBlob myBlob, string name, TraceWriter log)
{
    myBlob.DeleteIfExists();
}
9
Tim P.

C#を使用する場合は、関数にいくつかの入力タイプを使用できます。これがwebjobs sdk チートシート 利用可能なもののほとんどの詳細です。

あなたの場合、あなたはあなたの入力画像を CloudBlockBlob として要求することができます。そしてそれはdeleteメソッドを持っています。これをサイズ変更関数内または個別にトリガーされる関数で呼び出して、完成したBLOBを削除できます。バインディングdirectioninoutに変更する必要がある場合があります。 ここ を参照してください。

現在、自動クリーンアップを実行するための拘束力はありません。

0
Matt Mason