使用 Azure Functions 的临时目录

Using the temp directory for Azure Functions

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

我有两个主要问题

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

谢谢!

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

详情请参考this

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

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

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

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

问题 2 的答案 D:\local\Temp 中的数据只要 Function 宿主进程还活着就存在。由于未处理的异常、超时、达到计划的资源使用限制等意外事件,Functions 主机进程可以随时回收。只要您的工作流程考虑到 D:\local\Temp 中存储的数据是短暂的这一事实,那么答案就是 'yes'.

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

  1. 在共享 app-service 计划或消费计划中,您需要信任沙箱隔离。这不是像 AWS lambda 这样的孤立的 microvm。
  2. 如果您有自己的 app-service 计划,那么您需要信任 app-service 计划的 VM 管理程序隔离。
  3. 如果您真的很偏执或 运行 正在使用医疗保健应用程序,那么您可能需要 运行 在 ASE 计划中发挥您的作用。

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