【问题标题】:Azure storage options to serve content on Azure Web App在 Azure Web App 上提供内容的 Azure 存储选项
【发布时间】:2022-01-27 12:49:16
【问题描述】:

我是 Azure WebApps 和存储的新手,我需要一些澄清/确认。需要注意的主要事情是,我的应用程序(如下所述)需要一个文件夹层次结构。 Blob 是不可能的,除非我使用共享访问签名 (SAS),否则文件共享不允许匿名访问。

我对 Azure 存储的理解是否正确,是你适合 Azure 存储模型还是不适合?

谁能告诉我如何使用 Blob 实现 CMS 应用程序的要求,如下所述?

我看到的唯一选择是找到一种方法来更改 CMS 应用程序,以便它始终在 URL 中包含它从存储中请求的每个文件的 SAS,以便在我的 Web 应用程序上提供内容?如果是这样,如果我将我的 SAS 设置为在遥远的将来某个时间到期,会有问题吗?

https://应用名称>.file.core.windows.net/instance1/site1/file1.jpg?SAS>

使用 Blob 的问题

到目前为止,我的理解是 Blob 存储不允许“子文件夹”,因为它是一个包含非结构化数据的容器,因此我无法根据我的应用程序(如下所述)使用它,因为它需要文件夹结构。

使用文件共享的问题

文件共享似乎很完美,因为它允许文件夹层次结构,这自然是我用过的。

但是,不允许匿名访问存储在文件存储中的文件,需要授权访问。授权访问的一种方法是在文件/共享级别上创建具有读取权限的 SAS,然后使用该 SAS URL 访问文件。

Cannot access Windows azure file storage document

我的应用程序

我创建了一个运行开源 CMS 应用程序的 Linux Web 应用程序。此应用程序允许创建多个网站,每个网站的内容(如图像、文档、多媒体)都存储在文件服务器上。然后通过定义的 URL 将这些文件提供给网站。

CMS 应用程序允许设置保存文件的位置,这将是文件服务器上的文件夹。然后,它为它在该位置托管的每个站点创建一个新的子文件夹。

示例文件夹层次结构

/instance1
           /site1
                  /file1
                  /file2
           /site2
                  /file1
                  /file2 

【问题讨论】:

    标签: azure-web-app-service azure-blob-storage azure-storage azure-files


    【解决方案1】:

    我对 Azure 存储的理解是否正确,要么你适合 Azure 存储模型,还是不使用?

    您可以将 Azure 存储模型用于您的 CMS 应用程序。您可以使用 Blob 存储或文件共享

    谁能告诉我如何实现 CMS 的要求 使用 Blob 的应用程序如下所述?

    如果要使用 Azure Blob 存储,可以使用 Data Lake Gen 2 存储帐户。

    Data Lake Gen 2 存储启用分层命名空间,以便您可以根据需要使用 Blob 存储中的子文件夹

    使用 Blob 的问题

    如果我们使用 Data Lake Gen 2 存储帐户,则 Blob 存储允许使用子文件夹。您可以启用 Blob 公开匿名访问

    使用文件共享的问题

    Azure 文件共享支持但不允许公共匿名访问。您可以为您的 Web 应用使用 Azure 托管标识(系统分配)来访问 Azure 文件共享。

    然后您的应用程序将能够在没有 SAS 令牌的情况下访问 Azure 文件共享

    【讨论】:

    • 谢谢,我不知道数据湖。这解决了我的问题
    • 我已将 Blob 存储升级到 Data Lake Gen 2,我来安装驱动器,我看到一条注释“已安装的 Blob 容器将在 2020 年 2 月变为只读”github.com/Azure/app-service-linux-docs/blob/master/…。这违背了我的目标,因为我需要应用程序能够写入 blob。我错过了什么还是有办法解决这个问题?
    【解决方案2】:

    在 blob 存储中没有真实文件夹的问题对于您的用例来说应该不是问题。仅仅因为它没有您的传统文件夹并不意味着它不能提供内容,例如instance1/site1/file1。这仍然是可能的,但 instance1/site1/ 将只是 blob 名称的一部分。

    Azure 门户或存储资源管理器等工具实际上会通过使用分隔符 / 来显示文件夹,并使用路径作为前缀来查询似乎位于文件夹内的数据。

    【讨论】:

      猜你喜欢
      • 2012-07-15
      • 2015-12-17
      • 2015-10-01
      • 2016-09-16
      • 1970-01-01
      • 2014-09-05
      • 2020-07-24
      • 2015-07-01
      • 2021-04-19
      相关资源
      最近更新 更多