Объявление и использование параметра в Logic Apps

В моем файле

LogicApp.parameters.json

Я объявил дополнительный параметр MyFirstNewParameter

полное содержимое файла ниже

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "value": "MyFirstLogicAppOne"
    },
    "servicebus_1_connectionString": {
      "value": "Endpoint=sb://notForYouToSee"
    },
    "MyFirstNewParameter": {
      "value": "abc123"
    }
  }
}

В моем файле LogicApp.json я добавил «объявление» MyFirstNewParameter.

в

"параметры": {}

область (4-я строка ниже - это место, где начинается этот раздел)

И я также добавил простой ответ, который пытается прочитать значение параметра и отправить его обратно в ответ. (Названный "Read_And_Use_Parameter_Value_Simple_Response" всех вещей)

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "metadata": {
        "description": "Name of the Logic App."
      }
    },
    "logicAppLocation": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "allowedValues": [
        "eastasia",
        "southeastasia",
        "centralus",
        "eastus",
        "eastus2",
        "westus",
        "northcentralus",
        "southcentralus",
        "northeurope",
        "westeurope",
        "japanwest",
        "japaneast",
        "brazilsouth",
        "australiaeast",
        "australiasoutheast",
        "southindia",
        "centralindia",
        "westindia",
        "canadacentral",
        "canadaeast",
        "uksouth",
        "ukwest",
        "westcentralus",
        "westus2",
        "[resourceGroup().location]"
      ],
      "metadata": {
        "description": "Location of the Logic App."
      }
    },
    "MyFirstNewParameter": {
      "type": "string",
      "metadata": {
        "description": "Name of the MyFirstNewParameter."
      },
      "defaultValue": "My1NewParameterDefaultValue"
    }
  },
  "variables": {},
  "resources": [
    {
      "name": "[parameters('logicAppName')]",
      "type": "Microsoft.Logic/workflows",
      "location": "[parameters('logicAppLocation')]",
      "tags": {
        "displayName": "LogicApp"
      },
      "apiVersion": "2016-06-01",
      "properties": {
        "definition": {
          "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
          "actions": {
            "Read_And_Use_Parameter_Value_Simple_Response": {
              "type": "Response",
              "inputs": {
                "statusCode": 200,
                "body": "The parameter value is ***@{parameters('MyFirstNewParameter')}***"
              },
              "runAfter": {}
            }
          },
          "parameters": {},
          "triggers": {
            "manual": {
              "type": "Request",
              "kind": "Http",
              "inputs": {
                "schema": {}
              }
            }
          },
          "contentVersion": "1.0.0.0",
          "outputs": {}
        },
        "parameters": {}
      }
    }
  ],
  "outputs": {}
}

введите описание изображения здесь

Когда я отправляю запрос, я получаю в клиенте следующее:

{
    "error": {
        "code": "NoResponse",
        "message": "The server did not received a response from an upstream server. Request tracking id '000000000000000000000'."
    }
}

Когда я проверяю портал, возникает следующая ошибка:

InvalidTemplate. Невозможно обработать выражения языка шаблонов во входных данных действия «Read_And_Use_Parameter_Value_Simple_Response» в строке «1» и столбце «1232»: «Параметр рабочего процесса« MyFirstNewParameter »не найден.»

Что делать?

Как «прочитать» параметры, определенные в LogicApp.parameters.json, в приложении Logic?

Интересующие URL

https://docs.microsoft.com/en-us/azure/logic-apps/logic-apps-workflow-definition-language#parameters.

ДОБАВИТЬ С РАБОЧИМ ПРАВИЛЬНЫМ КОДОМ

Принятый ответ показывает, что существует двусмысленность с наборами параметров.

Вот исправленный рабочий ответ с однозначными названиями.

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "logicAppName": {
      "value": "MylogicAppName"
    },
    "MyFirstNewArmParameter": {
      "value": "ValueIWantToSeeShowUp"
    }
  }
}

а также

   {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
      "logicAppName": {
        "type": "string",
        "minLength": 1,
        "maxLength": 80,
        "metadata": {
          "description": "Name of the Logic App."
        }
      },
      "logicAppLocation": {
        "type": "string",
        "defaultValue": "[resourceGroup().location]",
        "allowedValues": [
          "eastasia",
          "southeastasia",
          "centralus",
          "eastus",
          "eastus2",
          "westus",
          "northcentralus",
          "southcentralus",
          "northeurope",
          "westeurope",
          "japanwest",
          "japaneast",
          "brazilsouth",
          "australiaeast",
          "australiasoutheast",
          "southindia",
          "centralindia",
          "westindia",
          "canadacentral",
          "canadaeast",
          "uksouth",
          "ukwest",
          "westcentralus",
          "westus2",
          "[resourceGroup().location]"
        ],
        "metadata": {
          "description": "Location of the Logic App."
        }
      },
      "MyFirstNewArmParameter": {
        "type": "string",
        "metadata": {
          "description": "Name of the MyFirstNewArmParameter."
        },
        "defaultValue": "My1NewArmParameterDefaultValue"
      }
    },
    "variables": {

    },
    "resources": [{
        "name": "[parameters('logicAppName')]",
        "type": "Microsoft.Logic/workflows",
        "location": "[parameters('logicAppLocation')]",
        "tags": {
            "displayName": "LogicApp"
        },
        "apiVersion": "2016-06-01",
        "properties": {
            "definition": {
                "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                "actions": {
                    "Read_And_Use_Parameter_Value_Simple_Response": {
                        "type": "Response",
                      "inputs": {
                        "statusCode": 200,
                        "body": "The parameter value is ***@{parameters('MyFirstNewLogicAppParameter')}***"
                      },
                        "runAfter": {

                        }
                    }
                },
              "parameters": {
                "MyFirstNewLogicAppParameter": {
                  "type": "string",
                  "defaultValue": "MyFirstNewLogicAppParameterDefaultValue"
                }
              },
                "triggers": {
                    "manual": {
                        "type": "Request",
                        "kind": "Http",
                        "inputs": {
                            "schema": {

                            }
                        }
                    }
                },
                "contentVersion": "1.0.0.0",
                "outputs": {

                }
            },
            "parameters": {
              "MyFirstNewLogicAppParameter": {
                "value": "[parameters('MyFirstNewArmParameter')]"
              }
            }
        }
    }],
    "outputs": {

    }
}

Теперь клиент получает ожидаемую стоимость

** Значение параметра *** ValueIWantToSeeShowUp *****

Я также нашел эту статью:

http://blog.ibiz-solutions.se/integration/logic-apps-parameters-vs-arm-parameters/

Первый абзац статей ниже, на случай, если URL-адрес перестанет работать в будущем (возможно, для поиска в Интернете, если он будет перемещен)

Параметры приложений логики и параметры ARM. У меня возник вопрос, в чем разница между параметрами шаблона ARM и параметрами приложения логики и когда их следует использовать, поэтому я постараюсь объяснить это в этой публикации. Первый из параметров шаблона ARM используется с шаблонами ARM, а шаблон ARM используется при развертывании ресурсов на основе ARM в Azure, а приложение Logic App - это ресурс, который развертывается с помощью шаблонов ARM. Язык определения рабочего процесса, лежащий в основе Logic App, очень похож на шаблоны ARM, и поэтому бывает сложно увидеть разницу в начале.

Автор: Маттиас Лёгдберг


person granadaCoder    schedule 06.09.2017    source источник
comment
Для будущих читателей ... проверьте это объяснение параметров приложения arm vs logic: blog.ibiz-solutions.se/integration/   -  person granadaCoder    schedule 07.09.2017


Ответы (1)


Я знаю, что это очень сбивает с толку, но есть параметры шаблона ARM и параметры LogicApp. Вы только что объявили параметр ARM, но пропустили параметр LogicApp. Затем вы можете передать параметр ARM в параметр LogicApp.

Попробуй это:

    {
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "logicAppName": {
            "type": "string",
            "minLength": 1,
            "maxLength": 80,
            "metadata": {
                "description": "Name of the Logic App."
            }
        },
        "logicAppLocation": {
            "type": "string",
            "defaultValue": "[resourceGroup().location]",
            "allowedValues": ["eastasia",
            "southeastasia",
            "centralus",
            "eastus",
            "eastus2",
            "westus",
            "northcentralus",
            "southcentralus",
            "northeurope",
            "westeurope",
            "japanwest",
            "japaneast",
            "brazilsouth",
            "australiaeast",
            "australiasoutheast",
            "southindia",
            "centralindia",
            "westindia",
            "canadacentral",
            "canadaeast",
            "uksouth",
            "ukwest",
            "westcentralus",
            "westus2",
            "[resourceGroup().location]"],
            "metadata": {
                "description": "Location of the Logic App."
            }
        },
        "MyFirstNewParameter": {
            "type": "string",
            "metadata": {
                "description": "Name of the MyFirstNewParameter."
            },
            "defaultValue": "My1NewParameterDefaultValue"
        }
    },
    "variables": {

    },
    "resources": [{
        "name": "[parameters('logicAppName')]",
        "type": "Microsoft.Logic/workflows",
        "location": "[parameters('logicAppLocation')]",
        "tags": {
            "displayName": "LogicApp"
        },
        "apiVersion": "2016-06-01",
        "properties": {
            "definition": {
                "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                "actions": {
                    "Read_And_Use_Parameter_Value_Simple_Response": {
                        "type": "Response",
                        "inputs": {
                            "statusCode": 200,
                            "body": "The parameter value is ***@{parameters('MyFirstNewParameter')}***"
                        },
                        "runAfter": {

                        }
                    }
                },
                "parameters": {
                    "MyFirstNewParameter": {
                        "type": "string"
                    }
                },
                "triggers": {
                    "manual": {
                        "type": "Request",
                        "kind": "Http",
                        "inputs": {
                            "schema": {

                            }
                        }
                    }
                },
                "contentVersion": "1.0.0.0",
                "outputs": {

                }
            },
            "parameters": {
                "MyFirstNewParameter": {
                    "value": "[parameters('MyFirstNewParameter')]"
                }
            }
        }
    }],
    "outputs": {

    }
}

Некоторые советы и рекомендации по подготовке приложений логики для CI / CD с использованием шаблонов ARM и параметров можно найти по этой ссылке: https://platform.deloitte.com.au/articles/preparing-azure-logic-apps-for-cicd

HTH

person Paco de la Cruz    schedule 06.09.2017
comment
Гаааааааааааааааааааааааааа. Это безумие. Таким образом, файл с именем LogicApp.parameters.json предназначен не для параметров приложения логики, а для параметров руки. Боже, Луиза. Я отправлю новый пример в качестве дополнения к моему вопросу (я сделаю это как ответ). Одна проблема и одно предложение. (в следующих комментариях) - person granadaCoder; 07.09.2017
comment
Синтаксис для перехода параметра arm-to-logic-app немного отличается. Обратите внимание на отсутствие @ в приведенном ниже коде. Поскольку имена неоднозначны, я немного изменил их. параметры: {MyFirstNewLogicAppParameter: {значение: [параметры ('MyFirstNewArmParameter')]} - person granadaCoder; 07.09.2017
comment
Я добавляю свой вопрос с полным рабочим недвусмысленным кодом. Если у вас будет возможность (Пако), вы можете исправить последнее значение синтаксической ошибки: [@parameters ('MyFirstNewParameter')] Спасибо, что помогли мне преодолеть это препятствие. - person granadaCoder; 07.09.2017
comment
Так что теперь мне интересно ... Параметр, который я на самом деле храню, - это имя контейнера моего хранилища BLOB-объектов. Должен ли я сохранить это в параметрах руки или в других параметрах? - person granadaCoder; 07.09.2017
comment
Хороший подхват @granadaCoder, только что починил. Что касается вашего последнего вопроса, это действительно зависит от обстоятельств. Если вы хотите использовать параметры ARM для развертывания в разных средах, самый простой способ сделать это - это то, что мы сделали, то есть передача параметров ARM в параметры LogicApp. В противном случае смешивание синтаксиса ARM с синтаксисом LogicApps очень беспорядочно, IMO. HTH - person Paco de la Cruz; 08.09.2017
comment
Спасибо. Да, главное беспокойство - это параметры развертывания. #notIntuitive Множество неоднозначных параметров json раздражает. Спасибо, что отвлек меня. - person granadaCoder; 08.09.2017
comment
вы можете установить значения по умолчанию для variables в разделе переменных в logicapp.json файле? - person Alex Gordon; 21.06.2019
comment
Какой у вас вариант использования значений по умолчанию для переменных @l --''''''--------- '' '' '' '' '' ''? - person Paco de la Cruz; 24.06.2019
comment
вот пример использования stackoverflow.com/questions/56693978/ - person Alex Gordon; 24.06.2019
comment
@l --''''''--------- '' '' '' '' '' ', Вы, конечно, можете установить фиксированные значения в своих переменных. Вы также можете реализовать условия и на основе этого условия установить значение переменной, используя статическое значение. HTH. - person Paco de la Cruz; 28.06.2019