相关疑难解决方法(0)

Azure Functions 的 ARM 模板,具有针对不同环境和插槽的许多 appSettings

我有两个 Azure Function 应用程序,它们使用部署槽、阶段和生产。这两个 Azure Function 应用程序在应用程序设置中有大约 50 个键:值对,用于定义各种 API 密钥、应用程序行为、连接字符串等。

我想将这两个 Azure Function 应用程序部署到五个不同的环境(CI、DEV、QA、STG、PROD)。我相信使用 ARM 模板将这些资源部署到 Azure 是比 Azure CLI 更好的选择。我将在我的 Azure DevOps 发布管道中创建任务来实现这一点。

为了将 ARM 模板分解为易于维护的内容,我想为每个环境创建一个 ARM 模板参数文件。为 Azure 函数定义部署文件时,要定义的属性之一是siteConfig 对象,您可以在其中使用 NameValuePair 对象定义 appSettings 对象。对于每个环境,阶段和生产槽将具有不同的 API 密钥、连接字符串和应用程序行为。我的部署文件使用生产槽和阶段槽创建了 Azure Function 应用。在部署文件中,我必须两次提供 appSettings NameValuePair 对象。然后,我必须为每个环境创建 5 个不同的参数文件。乘以 2,因为我有两个插槽。

参数文件中定义的所有参数都必须在参数对象中的部署模板文件中定义也是如此吗?

我可以只从参数文件中传入一个带有 NameValuePairs 的对象数组,这样我就不必在顶部的部署文件中以及函数应用的 siteConfig.appSettings 下定义完整的参数列表吗?

此处的文档显示您只能提供字符串数组或具有多个键值的单个对象。但是 appSettings 是一个对象数组,其中每个对象都有 3 个键值对。

这就是资源在部署文件中的样子。我想简单地从参数文件中引用整个对象数组,但看起来文档说明我在部署文件的顶部定义了所有 50~ 个参数,然后参数文件在由 Azure CLI 或Azure DevOps 任务。

        {
            "type": "Microsoft.Web/sites",
            "apiVersion": "2018-11-01",
            "name": "[parameters('function-app-name')]",
            "location": "[parameters('location')]",
            "tags": …
Run Code Online (Sandbox Code Playgroud)

azure azure-resource-manager azure-cli azure-deployment-slots azure-functions

9
推荐指数
2
解决办法
6059
查看次数