Azure功能:如何通过自动化设置CORS?

Bjo*_*cus 3 azure cors azure-rm-template azure-functions

我有一个azure函数应用程序,我想以可重复(自动)的方式进行设置,以便可以在不同的环境/资源组中复制它。我可以通过azure cli创建功能应用程序,但是我还需要配置CORS选项,以便可以从浏览器中调用它。

我已经在azure门户网站的web ui中的“平台功能”选项卡中找到了要执行的操作(https://docs.microsoft.com/zh-cn/azure/azure-functions/functions-how-to-use -azure-function-app-settings#cors),但是我找不到关于通过azure cli修改该设置的任何内容,也无法找到我在更改应用程序中的功能时已设置为发布的VSTS部署任务。

似乎您甚至可以通过local.settisg.json为本地开发指定CORS设置,但这仅在本地适用(https://docs.microsoft.com/zh-cn/azure/azure-functions/functions-run- local#local-settings)。我是通过azure功能工具cli部署应用程序的吗?我可以--publish-local-settings在部署时指定该标志,但是我没有那样部署。

似乎必须有一种无需使用Web UI即可修改CORS配置的方法,我只是找不到它吗?

Fab*_*nte 6

要以编程方式设置 CORS 设置,您需要使用 ARM。

这是您可以遵循的示例:https : //msftplayground.com/2016/08/setting-api-definition-url-cors-value-arm/


Bjo*_*cus 5

Fabio的答案是正确的,Azure资源管理器模板可用于此目的。由于他链接的示例是关于逻辑应用程序的,而不是关于Azure函数的,因此正确设置模板需要进行一些更改,我想添加一些细节,以帮助其他人更快地到达那里。

为了制作模板,我最终从手动创建的功能应用程序中下载了自动化模板,然后删除了东西,直到达到我认为的最低要求。这是我正在使用的:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "function_app_name": {
      "defaultValue": "my-function-app",
      "type": "string"
    }
  },
  "variables": {},
  "resources": [
    {
      "comments": "CORS allow origins *.",
      "type": "Microsoft.Web/sites/config",
      "name": "[concat(parameters('function_app_name'), '/web')]",
      "apiVersion": "2016-08-01",
      "properties": {
        "cors": {
          "allowedOrigins": [
            "*"
          ]
        }
      },
      "dependsOn": []
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

我还有一个与此类似的参数文件:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "function_app_name": {
            "value": null
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后Azure Resource Group Deployment在发布定义中进行一个步骤,以部署此代码并根据要部署到的环境替换所需的功能应用程序名称。