azure - 如何使 Azure Function 代码在 Azure ARM json 模板中可读

标签 azure azure-functions azure-resource-manager

我有一个 Azure 资源组,其中包含调用 Azure 函数的 Azure 逻辑应用。

我将此资源组导出为 ARM 模板,以便可以将资源重新导入到另一个 Azure 订阅。这工作正常,但问题是,Azure 函数代码(100 多行 c# 文件)全部包含在 JSON ARM 模板文件的一行中。这使得从模板本身读取或修改 Azure Functions 变得非常困难。

有没有简单的方法可以解决这个问题?理想情况下,我的 Azure Function 将位于它自己的文件 (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}"
    }
  }
}

最佳答案

您有一些选择:

  1. 快速解决您的问题:通过某些代码格式化程序运行您的 ARM 模板。如果您尝试将模板复制粘贴到 Visual Studio 中的 json 文件中,然后按 CTRL-K、CTRL-D 自动设置格式,您可能会很幸运。我没有尝试过这个,但它可能会起作用。您还可以使用多种在线格式化工具中的任何一种或使用 Visual Studio 剪切代码并对其进行格式化。

  2. source control system 部署您的功能。分开对待您的基础设施和代码。 IE。从 ARM 模板创建函数 PaaS 服务,然后使用 CI/CD 流程部署代码和配置(函数)。

  3. 将代码包装到程序集中,将程序集部署到函数宿主并在函数中引用它。这称为外部引用 ( documentation here ),并将限制函数中的代码量,并将逻辑保存在单独的程序集中。您仍然需要弄清楚如何通过脚本或 CI/CD 流程部署程序集。

简而言之,根据您问题的评论,您需要从开发过程的角度更加勤勉地支持您的 Azure 功能开发。如果您有许多开发人员致力于您的功能,这一点就变得更加重要。

祝你好运!

关于azure - 如何使 Azure Function 代码在 Azure ARM json 模板中可读,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47106003/

相关文章:

node.js - Azure Functions 本地 HTTP 触发器问题及解决方案

powershell - 使用 AzureRM powershell 创建和发布 Azure 经典云服务项目

azure - 在 Arm 模板中使用 If/Else

powershell - 如何使用Microsoft帐户添加-AzureRmAccount?

php - Azure PHP 联系表单通过电子邮件发送问题

azure - dotnet 发布有时失败并显示 'Metadata generation failed'

entity-framework - 使用 Azure 表存储进行代码优先和身份验证

javascript - 在node.js中将pdf转换为图像的azure函数?

visual-studio - Visual Studio 2019 重新下载 Azure Function CLI 工具

azure - 使用 Azure DNS 转发电子邮件