Azure文件存储:为应用服务创建共享

5
我创建了一个使用Tomcat的应用程序服务和一个需要存储文件的Web应用程序,另一个应用程序服务中的Web应用程序需要访问这些文件。该应用程序仅接受绝对文件路径。
如果我将我的Web应用程序放在虚拟机中,我可以创建一个共享到我的Azure文件存储,但我认为这对于应用程序服务不可能(在控制台执行net use时我会得到访问被拒绝的消息)。我尝试过:\mystorage.file.core.windows.net\myfiles,但它无法写入。这应该可行吗?我是否可以创建UNC路径以便让两个应用程序服务都可以访问某个Azure位置?或者,我应该创建虚拟机来实现这一点?
1个回答

3
您可以像您建议的那样使用虚拟机进行文件共享,假设您的Web应用程序有适当的访问权限,并在同一vnet上等等。然而,虚拟机虽然能够使用持久性存储,但会偶尔出现停机(例如主机操作系统更新)。
Azure为此提供了一个特定的功能:Azure文件存储。它位于blob存储之上并提供SMB共享。Web应用程序可以通过API / SDK访问文件存储卷(您无法将SMB卷挂载到Web应用程序)。
在Web应用程序之外(例如VM),一旦挂载了文件共享,您可以使用标准I / O操作,就像使用本地磁盘一样。

谢谢您的回答。我尝试配置此路径:\mystorage.file.core.windows.net\myfiles,但无法写入数据。应用程序与文件存储位于同一位置和资源组中。您有任何想法是什么出了问题吗? - Marcel Hoekstra
请参考David Ebbo在此处的评论:https://dev59.com/rVwX5IYBdhLWcg3wpw5h#33545941 目前无法在Web应用程序中挂载SMB共享。 - Jacob Foshee
1
@JacobFoshee - 你是正确的 - 当我最初发布这个答案时,我犯了一时的疏忽(因为我已经发布了其他与你和David所说完全相同的答案)。现在正在编辑。 - David Makogon
“你可以使用虚拟机”,这该怎么做呢?应用服务阻止SMB端口:https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox#restricted-outgoing-ports。有没有其他非SMB的方法来实现这个功能呢? - Ojen
1
@Ojen - 我的回答明确指出,要使用Azure文件服务,您必须依赖于SDK,因为您无法进行SMB挂载。至于通过VM访问文件,您需要以某种方式将文件提供给应用程序服务(但正如您指出的那样,不能通过SMB)。而且,文件服务SDK是特定于Azure的;它不是通用的SMB SDK。我的回答更侧重于与VM共享文件(我在回答底部尝试澄清这一点)。 - David Makogon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接