如何在Azure ARM json模板中使Azure函数代码可读
我有一个Azure资源组,其中包含调用Azure函数的Azure逻辑应用程序。如何在Azure ARM json模板中使Azure函数代码可读
我将此资源组导出为ARM模板,以便我可以将资源重新导入到另一个Azure订阅。这工作正常,但问题是,Azure功能代码(100 +行C#文件)全部包含在JSON ARM模板文件的一行中。这使得很难从模板本身读取或修改Azure功能。
有没有简单的方法来解决这个问题?理想情况下,我的Azure函数将在它自己的文件(run.csx)中,而Azure JSON ARM模板只会引用该外部文件。
这是我的ARM模板中的函数资源的JSON blob。包含关键run.csx的行是我关心的问题,我怎样才能让这段代码更具可读性并易于开发人员编辑?
{
"apiVersion": "2015-08-01",
"name": "[concat(parameters('test_site_name'),'\/ProvisionUser')]",
"type": "Microsoft.Web\/sites\/functions",
"properties": {
"config": {
"bindings": [
{
"authLevel": "function",
"name": "req",
"type": "httpTrigger",
"direction": "in"
},
{
"name": "return",
"direction": "out",
"type": "http"
}
]
},
"files": {
"run.csx": "LOTS OF C# CODE HERE - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - LOTS OF C# CODE HERE FROM MY AZURE FUNCTION - ",
"project.json": "{\r\n \"frameworks\": {\r\n \"net46\": {\r\n \"dependencies\": {\r\n \"Microsoft.IdentityModel.Clients.ActiveDirectory\": \"3.13.8\",\r\n \"Newtonsoft.Json\": \"10.0.2\",\r\n \"Microsoft.Sdk.CoreAssemblies\" : \"8.2.0.2\"\r\n }\r\n }\r\n }\r\n}"
}
}
}
你有一些选择:
快速解决你的问题:一些代码格式化你的运行ARM的模板。如果您尝试将模板复制粘贴到Visual Studio中的json文件中,然后使用CTRL-K和CTRL-D将其自动格式化,那么您可能很幸运。我没有尝试过,但它可能工作。您也可以使用任何一种在线格式化工具或使用Visual Studio将代码剪出并格式化。
从source control system部署您的功能。分开处理您的基础架构和代码。即从您的ARM模板创建您的功能PaaS服务,但随后使用CI/CD过程来部署您的代码和配置(功能)。
将代码包装到程序集中,将程序集部署到函数主机并在函数中引用它。这称为外部参考(documentation here),并将您的函数中的代码量限制为管道,将逻辑保存在单独的程序集中。您仍然需要制定如何通过脚本或您的CI/CD进程部署程序集。
简而言之,根据您对问题的评论,您需要从开发过程的角度来更加勤勉地支持您的Azure功能开发。如果你将有许多开发人员处理你的功能,这变得更加重要。
祝你好运!
最好使用msdeploy提供程序通过某些云托管zip部署功能文件,例如,像[this](https://github.com/davidebbo/AzureWebsitesSamples/blob/master/ARMTemplates/FunctionsWebDeploy.json) –
此外,您可以通过源代码控制引用进行部署,例如此示例(函数和逻辑应用程序)https:// github .com/Azure/azure-quickstart-templates/tree/master/101-logic-app-and-function-app – jeffhollan
谢谢,这些看起来很有用,会研究这些选项。 –