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

我可以在Azure功能中将输出绑定从BLOB存储更改为文件共享存储吗?

柳涵意
2023-03-14

我有一个Azure HTTP trigger POST函数。当它得到POST请求时,它将数据插入文本文件并存储在Azure BLOB存储中。我想将该文件存储到文件共享存储中,而不是BLOB存储中。我不将Azure文件共享存储在函数的输出绑定中。这可能吗?

run.csx

#r "Newtonsoft.Json"
#r "Microsoft.WindowsAzure.Storage"
using System.Net;
using System.Web;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using Microsoft.WindowsAzure.Storage.Blob;

 public static async Task<IActionResult> Run(HttpRequest req, CloudBlockBlob outputBlob)
    {
        var requestBody = await new StreamReader(req.Body).ReadToEndAsync();

        await outputBlob.UploadTextAsync(requestBody);
    } 

function.json

{
  "bindings": [
    {
      "authLevel": "function",
      "name": "req",
      "type": "httpTrigger",
      "direction": "in",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "name": "$return",
      "type": "http",
      "direction": "out"
    },
    {
      "type": "blob",
      "name": "outputBlob",
      "path": "customers/CUST_{DateTime}.txt",
      "connection": "AzureWebJobsStorage",
      "direction": "out"
    }
  ]
}

共有1个答案

汪鸿波
2023-03-14

据我所知,目前Azure功能不支持Azure文件共享输出绑定。你可以参考这个教程:https://docs . Microsoft . com/en-us/azure/azure-functions/functions-triggers-bindings # binding-direction

但你也可以使用 Azure 文件存储 sdk 来执行此操作,我在下面发布一些代码供你参考:

var storageAccount = CloudStorageAccount.Parse("your connection string");
var fileClient = storageAccount.CreateCloudFileClient();
string baseShareName = "myazurefileshare";
var share = fileClient.GetShareReference(baseShareName);
var rootDir = share.GetRootDirectoryReference();  
var sampleDir = rootDir.GetDirectoryReference("MyFolder");
var fileToCreate = sampleDir.GetFileReference("output.txt");
fileToCreate.UploadText(".....");

有关 Azure File Share(.Net) 的更多信息,请参阅本教程:https://docs.microsoft.com/en-us/azure/storage/files/storage-dotnet-how-to-use-files

 类似资料:
  • 我想通过运行在Azure VM上的FTP服务器与用户共享Azure Blob存储中的文件。 据我所知,您不能在VM上挂载Blob存储,但可以使用“网络使用”挂载Azure文件共享。 Blob存储上的文件将以增量方式上载,因此理想情况下,我希望在上载时将其复制到Azure文件,Azure功能似乎是理想的方式,因为它们很容易为我设置和处理Blob存储上的触发器。 我如何使用Azure功能将文件从Blo

  • 我相当愚蠢地上传了一个vhd到Azure文件存储,以为我可以从它创建一个虚拟机,却发现它真的需要在Blob存储中。 我知道我可以再上传一次,但它非常大,我的上传速度非常慢。 我的问题是-我可以将文件从文件存储移动到blob存储,而无需再次下载/上传吗?也就是说,Azure门户UI中是否有任何东西可以执行此操作,甚至是PowerShell命令?

  • 在HDInsight集群上,使用CREATE外部语句创建配置单元表: 然后更改一些现有的文件,将一些文件添加到CREATE语句中提到的Azure Blob容器中。 一个新的配置单元查询是否考虑对Blob容器所做的更改,同时将数据再次加载到配置单元表?

  • 我有一个通过System.Drawing动态生成的图像。然后,我将生成的图像输出到以存储到我的Azure blob中。 但我似乎无法将我的文件存储在我选择的blob中。没有发生错误,并且我的图像成功地保存到。不出所料,我的blob是空的。 到 但我会标记“Gaurav Mantri”的回应是正确的。如果不是他的洞察力,我的图像就不会上传到Blob上。

  • 我正在尝试使用pyspark来分析我在数据砖笔记本上的数据。Blob 存储已装载到数据砖群集上,在分析后,希望将 csv 写回 blob 存储。由于 pyspark 以分布式方式工作,csv 文件被分解为小块并写入 Blob 存储。如何克服这个问题,并在我们使用pyspark进行分析时在blob上编写为单个csv文件。谢谢。

  • 我有大约6个设置文件(xml或json ),我想存储在Azure中,但在我的Windows客户端应用程序中使用。我计划将它们存储在blob存储中,并使用以下代码下载它们: 设置文件不会经常更改。如何在本地缓存文件,以避免每次下载? 有更好的方法吗?我应该使用的其他Azure服务?