【问题标题】:Deploying a single Azure Function from Visual studio从 Visual Studio 部署单个 Azure 函数
【发布时间】:2018-12-18 13:41:33
【问题描述】:

我有一个关于 Azure 函数的问题,当在同一个项目中部署 azure 函数时,你必须一次部署所有函数,你不能在同一个项目中从 VS 部署单个函数到 Azure。

有没有办法做到这一点,或者每个函数必须在自己的项目中才能一次将一个函数部署到 Azure?

这将使他们成为自己的资源,那么我猜也是。还是?

【问题讨论】:

    标签: visual-studio azure deployment azure-functions


    【解决方案1】:

    看看official guideline

    在大多数情况下,部署单元应该是 Function App,而不是单个函数。部署 Function App 与部署 Web App 基本相同

    如果同一个项目中的函数不相互依赖并且我们不想将它们部署在一起,我们可以将它们拆分为单独的项目并将每个项目部署到不同的函数应用程序。在资源方面,一个和多个函数应用之间没有太大的区别,只要它们共享相同的应用服务计划即可。

    将单个功能部署到具有现有功能的 Function 应用的风险

    从技术上讲,我们可以从 VS 部署单个功能,只需右键单击并排除我们不需要部署的功能。如果 Function 应用还是空的或者我们已经勾选了Remove additional files at destination(应该默认勾选),这是绝对正确和安全的。

    如果我们取消选中该设置以保留之前部署的那些功能,则可能会导致行为不一致。新部署的函数可能会覆盖现有函数利用的一些程序集。另外,我们在本地删除的无用文件可能会因为没有删除而在网上堆积。

    【讨论】:

    • 您好,感谢您的回复。嗯...我完全理解这个论点并且实际上同意它。但我有一个问题,为什么 Azure 会传播 Portal 和 Visual Studio 之间的差异实践。我的意思是为什么函数应用程序作为“许多”函数的容器呈现,您可以在其中分别创建、删除和更新它们。而不是继续VS的那种做法?可以这么说,如果你愿意的话,感觉就像在日常工作中存在不一致的地方。
    • @John Ah,看起来您对在线开发和本地开发之间的区别感到困惑。在线开发允许我们单独操作每个函数,因为文件可以由Azure编辑和编译。(函数应用程序中没有编译的程序集,我们编辑的是那里的所有内容)。而对于 VS,我们发布了像可编辑的 csx/json 文件一样不容易修改的预编译文件。因此在线和VS开发不能共享相同的操作标准。
    • 我明白了,我想我只需要习惯它然后呵呵,非常感谢您的回答:)
    • @John 不客气,您能接受答案供其他人参考吗?另外,functions in host.json 是禁用列表中没有的功能,它只用于本地开发,与部署完全无关,请参阅doc
    【解决方案2】:

    在 Visual Studio 中,您必须为每个函数设置发布设置。 要部署每个功能,您必须修改“hosts.json”文件,如

    {
      "functions": [
        "QueueFunction",
        "ProcessorFunction",
      ]
    }
    

    您可以拥有 1 个功能或多个功能。如果您将其留空,则将部署所有功能。

    我建议您构建和部署 DevOps 来帮助您;或者,为每个功能单独项目以避免部署复杂性,将所有公共对象作为另一个共享项目。

    希望这会有所帮助。

    【讨论】:

    • 所以如果我理解你的评论,你的意思是:-假设我在同一个项目中有 4 个函数,如果在 host.json 中只定义了 2 个函数,如上面的示例,那么只有这两个会被部署?
    • 是的,没错。部署的应用程序中只有这 2 个功能可用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多