代码之家  ›  专栏  ›  技术社区  ›  SamMade

Azure触发器链接模板defaultValue

  •  0
  • SamMade  · 技术社区  · 6 年前

    父母亲json

    ...
    parameters: {
      foo: {
        type: "string"
      }
    },
    resources: [{
      type: "Microsoft.Resources/deployments",
      properties: {
        templateLink: {
          uri: "sub.json",
          contentVersion: "1.0.0.0"
        },
        parameters: {
          bar: {
            value: "[parameters('foo')]"
          }
        }
      }
    }]
    ...
    

    ...
    parameters: {
      bar: {
        type: "string",
        allowedValues: ["larry", "moe", "curly"],
        defaultValue: "curly"
      }
    }
    ...
    

    不幸的是,通过了 无效的 父模板中的foo值将出错 The value of deployment parameter 'foo' is null . 如果我为foo传递一个空字符串,它将出错 The provided value '' for the template parameter 'bar' is not valid. The parameter value is not part of the allowed value(s): 'larry,moe,curly' .

    我试着让父母帮忙。json

    ...
    resources: [{
      type: "Microsoft.Resources/deployments"
      properties: {
      ...
        parameters: {
          bar: {
            value: "[if(empty(parameters('foo')), json('null'), parameters('foo'))]"
          }
        }
      }
    }]
    ...
    

    但它只会给出相同的值,即null。我知道这可以在AWS嵌套堆栈中使用value来完成 aws::NoValue

    2 回复  |  直到 6 年前
        1
  •  0
  •   4c74356b41    6 年前

    不要传递任何内容,甚至不要指定参数名称。因此,请输入:

    parameters: {}
    

    我从未尝试过,但您可能可以通过以下方式实现预期结果:

    parameters: "[variables('passMe')]"
    

    对于变量值,可以使用如下内容:

    passMe: {
        bar: {
             value: "bla-bla-bla"
        }
    }
    

    显然,您需要动态地或至少部分地动态地构造这些变量。

        2
  •  0
  •   SamMade    6 年前

    将来帮助别人。。。扩展@4c74356b41的响应。创建可以在运行时动态生成链接模板参数的变量。

    以下是一个工作示例:

    ...
    parameters: {
      foo: {
        type: "string"
      }
    },
    variables: {
      emptyObject: {},
      subParameterBar: {
        bar: {
          value: "[parameters('foo')]"
        }
      },
      hasSubParameterBar: "[if(empty(parameters('foo')), variables('emptyObject'), variables('subParameterBar'))]",
      subProperties: "unionvariables('HasSubParameterBar'), ...<any other parameter variables>)]"
    },
    resources: [{
      type: "Microsoft.Resources/deployments",
      name: "sub",
      properties: {
        templateLink: {
          uri: "sub.json",
          contentVersion: "1.0.0.0"
        },
        parameters: "[variables('barProperties')]"
      }
    }]
    ...