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)