【问题标题】:Using the temp directory for Azure Functions使用 Azure Functions 的临时目录
【发布时间】:2021-01-05 17:15:56
【问题描述】:

我有一组 Azure 函数在同一台主机上运行,​​有时可以扩展到多个实例。我想存储非常少量的临时数据(几 kb),并有机会在函数执行之间共享这些数据。我知道临时目录仅适用于在同一实例上运行的函数。我还知道我可以使用主目录、持久函数或其他 Azure(例如 blob)存储在所有函数之间持久共享数据。

我有两个主要问题

  1. 使用临时目录有哪些安全隐患?谁可以在运行函数之外访问其内容?
  2. 这仍然是一个合理的解决方案吗?除了看起来像一些过时的 kudu 文档 here 之外,我在 Microsoft 文档中找不到太多东西。

谢谢!

【问题讨论】:

  • 为什么不在表存储中缓存您的数据?你不应该需要推出自己的存储机制。你想让我教你怎么做吗?
  • 谢谢!我确实知道怎么做,但试图避免添加额外的基础设施,即使是最小的(特别是考虑到我的安全需求)。我确实找到了另一种解决方案 - 将数据作为静态值存储在内存中,该值是惰性初始化的(并以线程安全的方式更新/获取)。主机上的所有功能都共享内存,因此这实际上是一种必须更快、更安全的解决方案。从技术上讲,这不是我问题的答案,所以我没有标记它。
  • 当你的函数扩展它时,你的所有实例都不能保证在同一个虚拟机上,因此它不能共享本地缓存。至少消费计划是这样的
  • 完全理解。我不需要一个完整的共享,只需要机会共享来减少初始化一些数据的需要一个数量级左右。感谢您的提醒!
  • “无服务器服务”的重点是没有服务器。通过使用“临时磁盘存储”,您承认有一个服务器是无服务器服务的完全对立面。你在一个没有答案的问题上放了 500 分的赏金。不要将无服务器服务视为它们不是的东西。你想要一个带有临时存储的服务器吗?然后在 GoDaddy 上获取托管计划,远离云端。

标签: azure azure-functions serverless azure-functions-runtime azure-files


【解决方案1】:

我相信这会回答你的问题:

详情请咨询this

此外,当通过“Temp”文件夹内的代码创建文件夹/文件时;当您访问 KUDU 网站时,您无法查看它们。但您可以使用这些文件/文件夹。

如何查看通过 KUDU 创建的文件/文件夹? 我们需要在配置(应用设置)中添加 - WEBSITE_DISABLE_SCM_SEPARATION = true。

注意:- 另一个重要的注意事项是主站点和 scm 站点不共享临时文件。因此,如果您从您的站点在那里编写一些文件,您将不会从 Kudu 控制台看到它们(反之亦然)。 如果禁用分离(通过 WEBSITE_DISABLE_SCM_SEPARATION),则可以使它们使用相同的临时空间。 但请注意,这是一个遗留标志,不推荐/不支持使用它。 (参考:共享文档链接)

【讨论】:

  • 谢谢 - 这实际上与我在问题中链接的内容相同。不幸的是,我没有回答自持久功能发布以来是否仍然支持该解决方案,以及目录的安全特性具体是什么。
【解决方案2】:

问题 1 的答案 是的,它是安全的。 Function 宿主进程在沙箱中运行。存储到D:\local 的所有访问数据都是独立的,并且与沙箱内的进程隔离。请看https://github.com/projectkudu/kudu/wiki/Azure-Web-App-sandbox

问题 2 的答案 只要 Function 宿主进程处于活动状态,D:\local\Temp 中的数据就存在。由于意外事件(例如未处理的异常、超时、达到计划的资源使用限制),Functions 主机进程可以随时回收。只要您的工作流程考虑到存储在 D:\local\Temp 中的数据是短暂的,那么答案就是“是”。

【讨论】:

    【解决方案3】:

    安全隐患取决于您寻求的隔离级别。

    1. 在共享应用服务计划或消费计划中,您需要信任沙盒隔离。这不是像 AWS lambda 那样孤立的 microvm。
    2. 如果您有自己的应用服务计划,那么您需要信任应用服务计划的虚拟机管理程序隔离。
    3. 如果您真的很偏执或正在运行医疗保健应用程序,那么您可能需要在 ASE 计划中运行您的函数。

    合理的解决方案是成本不超过您保护的数据价值的解决方案:)

    【讨论】:

      猜你喜欢
      • 2018-02-27
      • 1970-01-01
      • 1970-01-01
      • 2020-09-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多