可以在 ARM 模板中执行嵌套复制循环吗?

2023-12-28

我正在尝试动态生成路径映射,以将传入流量路由到应用程序网关的正确后端池。

例如,我们有 20 个租户,每个后端池允许 5 个租户,这意味着我们将生成 4 个后端池。

我需要动态创建路径映射,以便后端池一为租户 1-5 提供服务,后端池二为租户 6-10 提供服务,等等。

我想要生成的所需数组是:

[
    [ "tenant1", "tenant2", "tenant3", "tenant4", "tenant5"],
    ["tenant6", "tenant7", "tenant8", "tenant9", "tenant10"],
    ["tenant11", "tenant12", "tenant13", "tenant14", "tenant15"],
    ["tenant16", "tenant17", "tenant18", "tenant19", "tenant20"]
]

形成此数组后,我可以创建后端池并连接子数组字符串以形成我需要的路径映射。

这是其中一项尝试的快速原型......

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  },
  "variables": {
    "totalTenants": 20,
    "tenantsPerBackendPool": 5,
    "copy": [
      {
        "name": "outerCopy",
        "count": "[div(variables('totalTenants'), variables('tenantsPerBackendPool'))]",
        "input": {
          "copy": {
            "count": "[variables('totalTenants')]",
            "name": "innerCopy",
            "input": "[if(equals(div(copyIndex('innerCopy'), 5), copyIndex('outerCopy')), concat('/tenant', copyIndex('innerCopy'), '/*'), json('null'))]"
          }
        }
      }
    ]
  },
  "resources": [
    // Multiple backend pools will be created here, and use the path mappings to route correctly
  ],
  "outputs": {
    "pathMappings": {
      "type": "array",
      "value": "[variables('outerCopy')]"
    }
  }
}

但是我收到以下异常:New-AzResourceGroupDeployment: 16:01:18 - Error: Code=InvalidTemplate; Message=Deployment template language expression evaluation failed: 'The template language function 'copyIndex' has an invalid argument. The provided copy name 'innerCopy' doesn't exist in the resource.


我很确定你不能在OP中执行嵌套方法,但我认为你可以生成你想要的数组的数组:

{
    "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {
        "totalTenants": 20,
        "tenantsPerBackendPool": 5,
        "copy": [
            {
                "name": "firstPass",
                "count": "[variables('totalTenants')]",
                "input": "[concat('/tenant', copyIndex('firstPass', 1), '/*')]"
            },
            {
                "name": "finalpass",
                "count": "[div(variables('totalTenants'), variables('tenantsPerBackendPool'))]",
                "input": "[take(skip(variables('firstPass'), mul(variables('tenantsPerBackendPool'), copyIndex('finalPass'))), variables('tenantsPerBackendPool'))]"
            }
        ]
    },
    "resources": [ ],
    "outputs": {
        "firstPass": {
            "type": "array",
            "value": "[variables('firstPass')]"
        },
        "finalPass": {
            "type": "array",
            "value": "[variables('finalpass')]"
        }
    }
}

这种帮助?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以在 ARM 模板中执行嵌套复制循环吗? 的相关文章

随机推荐

  • 我应该将 useSelector 传递给 useState

    大家好 我有一个关于您喜欢哪种方法的问题 在使用 TypeScript 的 React 功能组件中 使用 useSelector 从 Redux State 获取值是 1 const campaign useSelector campaig
  • 无法将 DispatcherServlet 映射到上下文根

    这是我用于 spring mvc 的当前配置 1 web xml
  • 我的 C 程序读取一个文本文件。当我将它放入 Xcode 时,它​​失败了。发生了什么?

    我有一个打开 txt 的函数 使用 fscanf 读取格式如下的数字 532 2 234 32 当我使用 GCC 编译时它成功地做到了这一点 但我无法在 Xcode 中打开文件 为什么 相关代码是 int main void FILE in
  • 如何禁用 WinForms DataGrid 中的按钮单元格?

    我有一个 WinForms 应用程序 其中包含一个 DataGridView 控件和一列 DataGridViewButtonCell 单元格 当我单击其中一个按钮时 它会启动一项后台任务 我想禁用这些按钮 直到该任务完成 我可以禁用 Da
  • Gekko 长期性能

    在下面的代码中 全年 PV 斜率优化 每小时时间步长 CSV 数据下载link https drive google com file d 172HaD87t9V PDElMER4MwDaWyuCZ3KA5 view usp sharing
  • 如何在使用rescue_from时使用Rails4和RSpec测试渲染状态:404

    我有一个带有 PagesController 的 Rails4 应用程序 当找不到页面时 show method 会抛出自定义异常 PageNotFoundError 在我定义的控制器之上rescue from PageNotFoundEr
  • 转换输出中不需要的字符编码转换

    我这里有一个情况 JAVA版本1 6 Linux RH 5 6 Tikanga Windows 7 Cygwin最新版本 等级 1 6 在一台机器 Linux 上 当我运行 Gradle 构建时 我得到生成的 xsl 文件 这些文件与我运行
  • iOS:Objective-C 中的事件监听器相当于什么?

    在我的一些学习中 我看到有人提到 在视图控制器中 您可以拥有一个模型 并在模型上有某种监听器来监听其中的变化 我认为我没有使用正确的名称 这可能就是为什么我的搜索没有找到任何结果的原因 本质上 我想将服务器调用从控制器移到我的模型中 但我需
  • 使用 Netty 的多线程 UDP 服务器

    我正在尝试使用 Netty 实现 UDP 服务器 这个想法是只绑定一次 因此只创建一个Channel This Channel仅使用一个处理程序进行初始化 该处理程序通过一个线程在多个线程之间分派传入数据报的处理ExecutorServic
  • Google Drive API 使用浏览器版本创建空的“无标题”文件

    我正在尝试使用 Google Drive API 的 浏览器 版本 它似乎主要遵循 Nodejs 语法 但除了浏览器的第一个 hello world 示例之外 似乎没有太多示例 现在我正在尝试创建一个文件夹 然后在该文件夹内创建一个简单的
  • 当任务计划程序启动时隐藏 C# 控制台应用程序窗口

    我已经在谷歌上搜索了这个并阅读了一些资源 但我无法找到一个好的答案 有谁知道如何防止控制台应用程序窗口在任务计划程序启动时打开 Ref 改变output type to Windows application会解决你的问题 转到 项目 gt
  • 从 XAML 中的 *.resx 文件获取值

    是否可以将资源文件中的某些值直接添加到 XAML 标记中 或者为了本地化 我们总是必须在 cs 文件中制作类似的内容 txtMessage Text Messages WarningUserMessage Where Messages是资源
  • Python、Pandas:使用 GroupBy.groups 描述将其应用于另一个分组

    让我们考虑一个 DataFrame 它在 2010 年 1 月的每一天包含 1 行 2 个值 date range pd date range dt 2010 1 1 dt 2010 1 31 freq 1D df pd DataFrame
  • 如何从 DQL 查询返回对象?

    我在原则 2 中编写了一个 DQL 查询 qb gt select r position gt from Entities Races r gt where qb gt expr gt eq r entrantId entrant id g
  • 如何使用 GraphicsPath 绘制形状来创建自定义控件的区域?

    我目前正在尝试覆盖OnPaint 我正在构建的自定义控件的方法 该对象只是一个简单的面板 但我试图让它看起来不同类型的方式 如下所示 我正在使用 GraphicsPath 来帮助我尝试完成此任务 但它的外观 行为并不像我预期的那样工作 因为
  • Node.js Mongoose.js 字符串到 ObjectId 函数

    是否有一个函数可以使用 mongoose 将字符串转换为节点中的 objectId 架构指定某物是一个 ObjectId 但是当它从字符串保存时 mongo 告诉我它仍然只是一个字符串 例如 对象的 id 显示为objectId blah
  • ggraph的定制图例

    我想创建一个自定义图例 示例图例如下所示 这是我的情节 我使用 ggraph 创建了这个图 在这个情节下或在情节附近的某个地方我想要有我上面提到的图例 有任何想法吗 从技术上讲 您要求使用另一个图作为图例 因此 我们需要安排一个网格并将该图
  • 为 Facebook 对象 ID 而不是 URL 制作一个点赞按钮?

    Facebook点赞按钮上的文档 http developers facebook com docs reference plugins like 允许为 URL 创建 赞 按钮 然而 文档还表明根据对象 ID 记录点赞数 http dev
  • 为什么'int i = i;'合法的? [复制]

    这个问题在这里已经有答案了 可能的重复 int 变量 1 无效主 int i i https stackoverflow com questions 3173462 int var 1 void main int i i 下面的代码在g 和
  • 可以在 ARM 模板中执行嵌套复制循环吗?

    我正在尝试动态生成路径映射 以将传入流量路由到应用程序网关的正确后端池 例如 我们有 20 个租户 每个后端池允许 5 个租户 这意味着我们将生成 4 个后端池 我需要动态创建路径映射 以便后端池一为租户 1 5 提供服务 后端池二为租户