Blob 存储与 Azure Functions 的兼容性

Posted

技术标签:

【中文标题】Blob 存储与 Azure Functions 的兼容性【英文标题】:Blob storage compatibility with Azure Functions 【发布时间】:2021-08-27 11:25:58 【问题描述】:

我有一些电子邮件附件保存到 Azure Blob。

我现在正在尝试编写一个 Azure Functions 应用程序来连接到该 blob 存储、运行一些脚本并重新保存文件。

但是,在为函数选择存储帐户时,我无法选择我的 blob 存储帐户。

我去了网站,它是这样说的:

创建函数应用时,必须创建或链接到支持 Blob、队列和表存储的通用 Azure 存储帐户。某些存储帐户不支持队列和表。这些帐户包括仅限 Blob 的存储帐户和 Azure 高级存储。

我想知道,有什么解决方法吗?如果没有,也许还有其他建议?我对所有选项以及实际选择哪个选项感到有点迷茫。

谢谢!

编辑:我可以添加我编写函数 Python

【问题讨论】:

你能分享一下那种存储帐户吗?请确保它是“通用”。 有没有办法在不更改文件等的情况下将我的 blob-only 更改为通用目的? 很遗憾没有。您将需要创建一个新帐户并自己复制文件。当您创建新的“通用”帐户时,请务必检查以正确选择“v1”和“v2”帐户。 “v2”帐户功能更丰富,但比“v1”更昂贵。如果您不需要“v2”的功能,我的建议是使用“v1”帐户。 【参考方案1】:

您引用的网站的 sn-p 用于存储功能应用程序代码本身和任何相关模块。它与函数代码执行时函数可以访问的内容无关。

当您的函数执行时,它需要使用 Azure Blob 存储 SDK/模块连接到您的 Blob 存储帐户并阅读电子邮件附件。下面是使用 Python 使用 Azure 存储的快速入门指南:Quickstart with Azure Storage Blobs SDK for Python

【讨论】:

嘿,谢谢,这是否意味着即使该函数使用 SDK 连接到 blob,它仍然会被该 blob-only 存储帐户中的任何操作触发?因为它将通过 Visual Code 连接到不同的存储帐户?【参考方案2】:

我认为您忽略了可以拥有多个存储帐户的事实。为了使 Azure 函数正常工作,您需要一个存储帐户。该存储帐户用于存储 Azure Function 的运行时信息,用于状态管理等内部用途。正如您已经发现的那样,此存储帐户受到限制。没有解决方法。

但是,如果您正在编写的函数需要访问另一个存储帐户,则可以免费这样做。您只需提供详细信息即可连接到该特定存储帐户。在这种情况下,您还可以明确区分 azure 函数用于其内部操作的存储帐户和您的应用程序需要连接的存储帐户,您可以完全控制这些帐户,而不必担心您会因为删除而破坏事情内部使用的 blob/表/队列。

您可以设置一个 Blob 触发函数,当您的特定 Blob 存储发生更改时触发该函数。这不一定是 azure 函数内部使用的存储帐户,它是在创建 azure 函数时创建/选择的。

Here 是一个示例,展示了如何在 Python 中添加 blob 触发的 azure 函数。 MyStorageAccountAppSetting 指的是一个应用设置,它保存了您用于存储的存储帐户的连接字符串。

【讨论】:

嘿,感谢您的回复。问题是我希望在将新 blob 保存到该存储帐户时触发此功能,我想使用此帐户,因为这是文件自动保存到的位置以及实际触发该功能的原因是什么?或者你的意思是,我会将它连接到另一个(新)存储帐户,然后在代码内部使用 python 连接到 blob-storage?抱歉,Azure 对我来说很陌生 谢谢你,我会继续尝试并接受它作为答案。只是为了确保一件事,所以我将在 azure 函数内部选择​​一个新的存储帐户。但是我将编辑 function.json 以指向我想要触发该函数的 blob 存储,这还需要在 local.setting.json 中添加一个新的连接字符串,因为它目前只指向创建的新存储帐户? 您可以保留当前的连接字符串,您可以使用您选择的密钥将新的连接字符串添加到配置中。键的名称在触发器中使用。【参考方案3】:

通用 v2 存储帐户支持最新的 Azure 存储功能,并包含通用 v1 和 Blob 存储帐户的所有功能here

还有更多与 GPv2 帐户的集成选项,包括 Azure 函数触发器。见:Azure Blob storage bindings for Azure Functions

进一步参考:Types of storage accounts 如果是 Blob,根据您的需要,您可以根据数据(电子邮件附件)Access tiers for Azure Blob Storage - hot, cool, and archive 的访问频率选择访问层。如果是通用存储帐户,则为其标准性能层。

【讨论】:

以上是关于Blob 存储与 Azure Functions 的兼容性的主要内容,如果未能解决你的问题,请参考以下文章

使用Azure Functions在Azure blob中运行exe

Azure Functions:如何在 Azure 存储队列的绑定表达式中使用 POCO?

Azure Functions - 使用 Azure Functions 的表存储触发器

Azure Functions - Python(Blob 触发器和绑定)

Azure Functions:我可以对 BlobTriggered 函数进行不同的配置吗?

Azure Functions - Blob 流动态输入绑定