Dynami c имена выходных контейнеров хранилища больших двоичных объектов - PullRequest
0 голосов
/ 25 мая 2020

При настройке выходного контейнера хранилища больших двоичных объектов для функции Azure возможно ли каким-то образом запустить некоторый код, чтобы сгенерировать путь, по которому будет храниться большой двоичный объект? Чтобы быть более точным, я хотел бы использовать новый GUID в пути каждый раз, когда эта функция будет запускаться. Примерно так ( код не работает ):

[FunctionName("BlobTriggered")]        
public static void BlobTriggered(
    [BlobTrigger("myContainer/{name}.{extension}")] Stream myBlob,
    [Blob("myContainer/{Guid.NewGuid()}", FileAccess.Write)] Stream outputContainer,

    string name,
    string extension,
    TraceWriter log)
{
    ...
}

В приведенном выше коде я пытаюсь сгенерировать GUID, используя Guid.NewGuid(), что не работает . Есть ли аналогичный способ добиться этого?

1 Ответ

1 голос
/ 26 мая 2020

Вы можете установить переменную в {} и установить соответствующий параметр в разделе объявления, чтобы получить это значение в атрибуте. Но поскольку параметры части объявления функции должны быть исправлены во время компиляции, я думаю, что ваша идея не может быть реализована с использованием привязки. Но вы все равно можете добиться того, чего хотите, взгляните на приведенный ниже код, я использую SDK Storage Blob:

using System;
using System.IO;
using Azure.Storage.Blobs;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Extensions.Logging;

namespace FunctionApp53
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("samples-workitems/{name}.{extension}", Connection = "str")]Stream myBlob, 
            string name, ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            string connectionString = "DefaultEndpointsProtocol=https;AccountName=0730bowmanwindow;xxx;EndpointSuffix=core.windows.net";
            BlobServiceClient myClient = new BlobServiceClient(connectionString);
            var container = myClient.GetBlobContainerClient("samples-workitems");
            string a = Guid.NewGuid().ToString();
            var blockBlob = container.GetBlobClient(a);
            blockBlob.Upload(myBlob);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...