【问题标题】:How to get the blob-name of a @BlobInput?如何获取@BlobInput 的 blob 名称?
【发布时间】:2022-11-09 00:46:41
【问题描述】:

请考虑如下所示的 Azure 函数,该函数在 Blob 上传时触发。我想缩放该图像并将其写回另一个 blob 容器。最后,向服务总线主题发送一条消息,其中包含状态和缩放图像的链接。

目前,我只是生成一个随机的 blob 名称。

我怎样才能得到姓名@BlobInput 读取的 blob 的大小?源名称在EventSchema 中编码,但是,我不知道如何重用{data.url} 的解析/子字符串版本作为@BlobOutput(..., path = "xxx") ... 的参数。

public class ImageScaleFunction {

    @FunctionName("ImageScaleFunction")
    @StorageAccount("AzureWebJobsStorage")
    public void run(
            @EventGridTrigger(name = "eventGridEvent") EventSchema event,
            @BlobInput(name = "input", dataType = "binary", path = "{data.url}") byte[] blobInput,
            @BlobOutput(name = "output", dataType = "binary", path = "image-output/{rand-guid}.jpg")  OutputBinding<byte[]> blobOutput,
            @ServiceBusQueueOutput(name = "message", dataType = "string", queueName = "my-cool-queue", connection = "AzureServiceBusConnection") OutputBinding<String> message,
            final ExecutionContext context) throws Exception {

    // .. 
    
    }
}

https://learn.microsoft.com/en-us/azure/event-grid/event-schema-blob-storage?tabs=event-grid-event-schema

public class EventSchema {
    public String id;
    public String eventType;
    public String subject;
    public Date eventTime;
    public String dataVersion;
    public String topic;
    public String metadataVersion;
    public Map<String, Object> data;
}

【问题讨论】:

    标签: java azure azure-functions azure-blob-storage azure-eventgrid


    【解决方案1】:

    虽然您可以fetch trigger metadata,但无法从输入绑定中获取类似数据。

    您要么必须直接使用存储 SDK 进行输出,要么将 Event Grid 事件作为具有您自己的有效负载模式的队列消息转发,并使用处理队列消息的第二个函数绑定到消息有效负载中存在的文件名.

    【讨论】:

      猜你喜欢
      • 2019-11-21
      • 2014-09-26
      • 2017-10-14
      • 2015-03-26
      • 2021-02-03
      • 1970-01-01
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多