【问题标题】:Deploying Azure Function Slot from Visual Studio deploys Production从 Visual Studio 部署 Azure Function Slot 部署生产
【发布时间】:2018-06-11 06:31:12
【问题描述】:

简短:如何在 Visual Studio 中创建发布配置文件以部署部署槽与生产槽?

长篇大论: 当你接到 Sev1 电话说生产中断的那一刻,你知道在你刚刚启动部署到集成部署槽之前的几分钟。是的,这就是刚刚发生在我身上的事,我这辈子都无法解释。

所以我们有一个名为“Int”的 Azure Function 应用部署槽。创建发布配置文件时,我只是使用 Visual Studio 中的“创建新配置文件”向导并选择“选择现有”Azure App Service,然后在“Int”部署槽上进行钻取。看起来很直接。这样做会导致 Int AND Production 都被部署。这当然是出乎意料的,而且显然是灾难性的。

在门户中进行了一些挖掘后,我发现在我们的 Azure Function 应用程序的“概述”部分中,有一个“下载发布配置文件”按钮。为 Production 和 INT 单击它会产生两个具有不同用户、destinationAppUrls 等的单独文件。两者之间唯一相同的是 FTP publishUrl,但我假设服务器将根据传入的凭据。

尽管我有两个独特的发布配置文件,一个用于 prod,一个用于 int,但实际上,部署它们中的任何一个都会更新生产和我们的部署槽。

以下是我自己尝试解决但无济于事的事情清单:

  1. 从 Visual Studio 中删除了两个发布配置文件并通过向导重新创建它们。
  2. 从 Visual Studio 中删除了两个发布配置文件,并通过从门户下载的配置文件重新创建它们。
  3. 删除了 INT 发布配置文件,在门户中为我们的 INT 部署槽创建了一个新的 FTP 用户,更新了下载的 INT 配置文件,然后将其导入 Visual Studio。
  4. 确保 AutoSwap 已关闭。
  5. 使用 FTP 客户端使用发布凭据手动登录。事实证明,即使 Production 和 Int 有不同的“FTP 部署用户”作为同一位置的任一点登录。 (这最终似乎是问题所在)
  6. 单击部署槽上的“重置发布配置文件”并重新下载配置文件。

除了失去我什至没有失去的自动交换功能之外,我想解决这个问题的一种方法是创建一个完全独立的应用程序,从而强制它正常工作。不过,如果可能的话,我真的想避免这种情况。

在此先感谢您的帮助。

【问题讨论】:

  • 查看此链接scientistz.com/2018/01/… 可能会有帮助
  • 你有自动切换吗?我无法重现您的问题
  • @Thomas 是的。我已确保插槽上的自动交换功能已关闭。
  • VS 正在使用 MSDeploy
  • 因为我读过的所有内容都表明我不应该遇到这个问题,所以我也剪了一张票。 Sev C 所以可能需要一段时间才能收到回复。

标签: visual-studio azure azure-functions azure-deployment-slots


【解决方案1】:

这不应该发生,但如果我不得不猜测,您必须在两个应用程序中为 WEBSITE_CONTENTAZUREFILECONNECTIONSTRINGWEBSITE_CONTENTSHARE 定义相同的值。前者是将保存您的应用内容的存储帐户,后者是该存储帐户中的共享名称。两者共享相同的WEBSITE_CONTENTAZUREFILECONNECTIONSTRING 很好,但如果您也共享相同的WEBSITE_CONTENTSHARE,那么您最终会遇到您所看到的奇怪行为。

通常,当您通过工具创建函数应用时,它应该为每个应用创建一个具有随机名称的新共享。如果您使用 ARM 模板或其他方法进行部署并将它们设置为相同,您将遇到该行为。

【讨论】:

  • 是的!谢谢!我不知道这是怎么发生的,我通过 Portal 创建了插槽,并使用了默认设置。我不知道设置与此相关。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 2011-05-27
相关资源
最近更新 更多