【问题标题】:Best method for deploying Azure function app application settings部署 Azure Function App 应用程序设置的最佳方法
【发布时间】:2018-04-05 12:39:57
【问题描述】:

我正在寻找一种方便的方法来为使用 Octopus deploy(或任何自动部署工具)部署的 Azure 功能部署应用程序设置。

从微软的指导来看,azure 函数似乎不应该使用传统上会在部署时转换的配置文件来设置特定于环境的应用程序配置。建议在使用 azure 时使用 local.settings.json在本地机器上测试函数的工具,但部署到 azure 函数应用时不使用文件。

Microsoft 为 azure 函数提供的替代方案是一组通过门户界面配置的环境变量。当您通过门户界面手动设置所有内容时,此设置可以正常工作,但是从像 Octopus deploy 这样的自动发布管理工具进行部署时,这变得非常痛苦。

到目前为止,我遇到了几种方法:

  1. 使用可在以下位置转换的 ARM 模板部署设置 部署时间。
  2. 部署后将设置发布到 Kudu REST API
  3. 使用各种 powershell 命令替换应用设置

这些方法中的每一个都将替换所有应用程序设置,因为无法添加/删除,无需编写一些自定义代码来获取所有设置、比较和更新。这很麻烦,因为有一些应用程序设置不是我的应用程序特定的,而是函数宿主需要的。

我可以通过转换和部署函数来添加我自己的配置文件,这肯定比我遇到的任何其他方法更容易,但感觉就像违背了函数的预期生成方式。

有没有人有将应用程序设置部署到 azure 函数应用程序的简洁方法?

【问题讨论】:

  • ARM 模板不会替换整个应用设置。默认情况下,它们是幂等的,因此可用于添加或更新现有值。他们不会删除值(不过你可以选择这种行为)
  • @JesseCarter 但如果门户中有应用程序设置(例如,由 azure 添加的与我的应用程序无关的应用程序 - AzureWebJobsStorage 等)不在我的 ARM 模板中,那么它将被删除。
  • 在我的解决方案中,我部署了整个函数应用程序,它依赖于 ARM。所以像 AzureWebJobsStorage 这样的东西在我的模板中进行管理并自动填充
  • @JesseCarter 这可能是我最终要走的路。目前,我正在配置函数应用程序和相关资源,并在单独的进程中部署函数(及其配置)。将两者结合起来有点尴尬,因为应用程序设置由开发人员管理,而配置由类似 devops 的角色处理。
  • ARM 模板也是我的首选,因为我可以将连接字符串(Azure 存储、服务总线、应用洞察...)注入应用设置,而无需将其存储在我的发布服务器中。

标签: azure azure-functions


【解决方案1】:

在我看来,ARM 模板是最难维护的代码类型之一,因为它们的大小、冗长且难以参数化值。我在 Azure CLI 上取得了巨大成功。它使用开发人员和开发人员都可以理解的简单命令。这是使用 Azure CLI 执行此操作的方法。注意:您需要先在构建框中安装 Azure CLI。

以下代码可以在 Windows Batch 脚本、bash 脚本甚至 Powershell 脚本下执行。

$myAppSettings1 = "myKey=myValue"
az functionapp config appsettings set --resource-group $rgName --name $functionAppName1  --settings $myAppSettings1

【讨论】:

  • 嗨@jchang1,我可以用函数应用程序的一组应用程序设置实例化一个标准 JSON 对象吗?当我为 --settings 传入对象时,您知道 JSON 的架构应该是什么吗?
猜你喜欢
  • 1970-01-01
  • 2014-10-12
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-12
  • 1970-01-01
相关资源
最近更新 更多