当前位置: 首页 > 知识库问答 >
问题:

无法使用Azure函数Blob触发器获取Blob SAS URL

左恺
2023-03-14

我正在使用 Blob 触发器 Azure 函数来获取 Blob 文件数据,只要任何文件上传到容器

 public static void Run(Stream myBlob,string BlobTrigger,System.Uri uri, string name, ILogger log)
{
    log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes + URL: {uri}");
}

使用上述方法,我能够获取上传的项目的URL。目前,上述代码是使用 Azure 提供的“在门户中开发”选项生成的。

是否有一种方法可以获取已上传的Blob文件的SAS URL?

共有1个答案

吕永嘉
2023-03-14

从我们端复制后。这是我如何能够在每次上传blob时实现的。

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

namespace FunctionApp10
{
    public static class Function1
    {
        [FunctionName("Function1")]
        public static void Run([BlobTrigger("samples-workitems/{name}", Connection = "ConnectionStore")]Stream myBlob, Uri uri, string name, ILogger log)
        {
            log.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes");
            BlobSasBuilder blobSasBuilder = new BlobSasBuilder()
            {
                BlobContainerName = "<YOURCONTAINERNAME>",
                BlobName = name,
                ExpiresOn = DateTime.UtcNow.AddMinutes(5),
            };
            blobSasBuilder.SetPermissions(BlobSasPermissions.All);
            string accountName = "<YOURACCOUNTNAME>";
            string accountKey = "<YOURACCOUNTKEY>";
            var sasToken = blobSasBuilder.ToSasQueryParameters(new StorageSharedKeyCredential(accountName, accountKey)).ToString();
            var sasUrl = uri.AbsoluteUri + "?" + sasToken;
            Console.WriteLine(sasUrl);
        }
    }
}

结果:

在存储帐户中

参考:以编程方式生成SAS令牌c#

 类似资料:
  • 我有函数应用,它连接到blob,读取文件内容并将内容发布到API。该函数在Visual Studio的调试中完美运行。我遇到的问题是,部署时无法从 Azure 工作。我得到的错误是: 问题Id:系统。MYFUNCTION处的ArgumentNullException。FA . file manager . blob container manager . getcloudblob containe

  • 有没有人知道某种方法可以触发具有 Blob 触发器的 Azure 函数?无论是通过API还是使用“测试/运行”功能。 情况是,我需要在测试目的中这样做。目前我看到的是,可以在blob存储中提供要触发的文件的名称。但这是无用的,因为无论如何,将文件放在那里都会触发功能。我想做的是为文件的内容而不是名称提供功能,以避免不必要的操作。 不幸的是,微软在所有相关主题上的留档很差,但这个没有。在这个gith

  • 我使用blob触发器读取blob内容,作为pandas DF进行处理,并将blob附加到我使用的Azure SQL server。 blob触发器没有按预期工作,因此我将main函数中的所有代码都定义为: 但是,我得到了以下错误: 有人可以帮助我找到此问题的原因吗? function.json的配置如下:

  • 我有一个blob触发器Azure函数,每次将新文件添加到我的blob存储时都会调用该函数。我自动获取该文件的名称作为输入。除了名称之外,我还需要附加到给定文件的元数据。我一直在研究数据输入绑定,但我无法理解它。我需要做些什么才能将文件元数据作为输入?或者,甚至只是在我的函数中访问它?

  • 如果你使用blob存储触发器阅读Azure WebJobs上的留档,它们会提到这不是很可靠: WebJobs SDK扫描日志文件以查看新的或更改的blob。这个过程不是实时的;在创建blob后的几分钟或更长时间内,函数可能不会被触发。此外,存储日志是在“尽力而为”的基础上创建的;无法保证所有事件都将被捕获。在某些情况下,日志可能会丢失。如果您的应用程序无法接受blob触发器的速度和可靠性限制,建议

  • 我是Azure Function应用程序中blob触发器的新手,需要一些帮助。我正在努力寻找有关如何重命名触发该函数的blob的资源。 我有一个函数应用程序,当一个新的blob被上传到容器时触发,文件被处理,我需要一种方法来将其“标记”为已处理,因此我想重命名blob。 这是我的职责: 我该如何重命名该文件?在这种情况下有可能吗?