Azure 函数 blob 存储文件名
Posted
技术标签:
【中文标题】Azure 函数 blob 存储文件名【英文标题】:Azure function blob storage file name 【发布时间】:2018-08-12 21:16:03 【问题描述】:当使用带有 blob 存储输出绑定的 azure 函数时,如何获取创建的 blob 的名称、路径或 URL?我想在保存后将其保存到数据库中。
我正在使用 Python,但任何示例都可以:
blob = open(os.environ['outputBlob'], 'wb')
blob.write(attachment.get_payload(decode=True))
print blob.name # this is not the correct name, but actually the temp file name I think
blob.close()
【问题讨论】:
尝试枚举暴露给您的函数的环境变量 - 您可能会在那里找到有关您的 blob 的更多数据。 嗨@Harry,你解决这个问题了吗? @BoitumeloDikoko 你解决了吗!? :) 我不知道使用 blob 存储输出绑定,而是想使用 blob 存储 python SDK 从函数内部完成这项工作... @jtlz2 我最终使用了一个写入存储队列的 C# blob 触发函数,然后使用 python 存储队列触发函数读取路径。这不是最优的,因此现在我们已经开始使用 C# 编写大部分函数,因为对 python 的支持是有限的。 【参考方案1】:对于 C#: 正如https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#input 所讨论的,您可以使用以下类型的 blob 绑定
下面是绑定json文件和代码的例子。我在 http return 中返回 outpuBlob.Uri 以获取 Blob 的主要位置路径。
绑定:-
"bindings": [
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in",
"methods": [
"get",
"post"
]
,
"name": "$return",
"type": "http",
"direction": "out"
,
"type": "blob",
"name": "outputBlob",
"path": "outcontainer/rand-guid",
"connection": "AzureWebJobsDashboard",
"direction": "inout"
],
"disabled": false
函数代码(C#):
#r "Microsoft.WindowsAzure.Storage"
using System.Net;
using Microsoft.WindowsAzure.Storage.Blob;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log,CloudBlockBlob outputBlob)
log.Info("C# HTTP trigger function processed a request.");
// parse query parameter
string name = req.GetQueryNameValuePairs()
.FirstOrDefault(q => string.Compare(q.Key, "name", true) == 0)
.Value;
if (name == null)
// Get request body
dynamic data = await req.Content.ReadAsAsync<object>();
name = data?.name;
return name == null
? req.CreateResponse(HttpStatusCode.BadRequest, "Please pass a name on the query string or in the request body")
: req.CreateResponse(HttpStatusCode.OK, "Hello " + outputBlob.Uri);
【讨论】:
谢谢,我认为python没有这个可以使用:-( @Thomas.. 他明确表示任何例子都可以。所以我给出了 C# 示例,以便他可以在 python 中查找类似的示例。 @Harry - 您是否尝试安装 python 存储模块并尝试将它们引用到您的 .py 文件中。您可以按照下面的说明安装它github.com/yokawasa/azure-functions-python-samples/blob/master/… 那么python blob绑定类型在哪里指定?【参考方案2】:查看 Python 脚本进程空间中的环境变量。您应该有一个包含 blob 绑定路径的文件。
【讨论】:
相关环境变量的名称是什么? 不确定模式到底是什么。但是,函数 v1(使用此环境变量模型)上的 Python 函数已被弃用。如果您对编写 Python 函数感兴趣,请查看 Functions v2 上的 Python 支持,这是一个完整的重写:docs.microsoft.com/en-us/azure/azure-functions/…以上是关于Azure 函数 blob 存储文件名的主要内容,如果未能解决你的问题,请参考以下文章
使用java中的azure函数将文件从浏览器上传到azure blob存储
使用 azure 函数从表单数据请求中详细说明并存储在 azure blob 中的多个文件