Azure 函数无法访问 Azure Blob

Posted

技术标签:

【中文标题】Azure 函数无法访问 Azure Blob【英文标题】:Azure function can not access Azure Blob 【发布时间】:2021-09-17 12:47:56 【问题描述】:

我正在尝试从 Azure 功能访问存储帐户。但是在尝试检索文件时出现 403 错误。我没有看到为什么我收到此错误的任何问题。

让我解释一下设置。

1- Azure 函数应用位于美国东部 2- 中南部的 Azure blob 3- Azure blob 已启用防火墙(我已启用 azure 服务可以访问) 4- 我也将函数应用的 IP 列入了白名单。 (属性-虚拟IP) 5- Azure 函数可以创建 Blob 客户端并成功检索所有属性。 6- 如果我启用 Azure 存储防火墙公共访问,该功能可以下载流。

知道可能是什么原因吗?

【问题讨论】:

您可以使用 azure 函数系统身份来访问 blob 存储,请查看此简短教程docs.microsoft.com/en-us/azure/storage/common/… 您使用的是访问密钥还是 azure ad auth ? 您是否仍然面临这个问题?您能否提供与错误/问题相关的更多详细信息? 【参考方案1】:

看看你有没有给它一些工作时间。存储帐户最多可能需要 12-13 小时才能将虚拟网络列入白名单。

Else Function 应用程序可能由于以下原因而无法联系服务。

    您的函数应用托管在 internally load balanced App Service Environment 中,并配置为阻止入站 互联网流量。 您的函数应用具有inbound IP restrictions,它们是 配置为阻止互联网访问。参考app behind firewall

否则

代码可能已在本地运行,因为您可能已将本地 IP 添加到 白名单,而函数省略了这一步。 检查是否有任何出站 IP 错过以添加到白名单 IP。在 门户,转到资源浏览器 > 平台功能下。搜索 outboundIpAddresses 并将这些(通常是四个)IP 添加到存储中 帐户白名单。 这个问题甚至可能是因为在 贮存。禁用它,它应该可以工作。

其他解决方法

    要在存储帐户上启用防火墙,可能必须使用 vnet 存储帐户和应用服务的集成。请参阅virtual network integration。但它可能通过选择消费来起作用 不同地区的计划和相同地区的应用服务计划。 还要检查 DNS 配置,因为现有 Azure 服务是 配置为使用现有 DNS 连接到公共端点。 您必须覆盖 DNS 配置才能连接到私有 端点。检查private-endpoint. 您可以通过以下方式将网络安全添加到 Azure 存储帐户 使用防火墙和防火墙规则限制访问。 grant-access-to-trusted-azure-service. 检查您的情况是否存在上述任何问题。

【讨论】:

以上是关于Azure 函数无法访问 Azure Blob的主要内容,如果未能解决你的问题,请参考以下文章

Azure:无法从 Azure 函数 HttpTrigger 读取 Blob 文本(400 - 错误请求错误)

Azure blob 到 Azure SQL 数据库:无法批量加载,因为无法打开文件“xxxx.csv”。操作系统错误代码 5(访问被拒绝。)

Azure Javascript SDK 无法为具有访问层“存档”的 Blob 复制 Blob (sync/beginCopyBlobUrl)

无法从在存储帐户的允许子网中创建的 Azure 虚拟机下载 blob

无法通过端口 445 访问 Azure 存储帐户

Azure 存储模拟器访问 Blob 时出错