none
Unable to set $connection with ARM template RRS feed

  • Question

  • I have created an ARM template in Visual Studio project with connection to slack. When I connect to slack in Azure portal - everything is fine. My slack API connection is authorized and works. My problem is with deployment and setting $connections.

    Here is my template

    {
      "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
      "contentVersion": "1.0.0.0",
      "parameters": {
        <template-params>
      },
      "variables": {
        "slack": "[concat(parameters('appPrefix'), '-slack-', parameters('environment'))]"
      },
      "resources": [
        {
          "type": "Microsoft.Web/connections",
          "apiVersion": "2016-06-01",
          "location": "[resourceGroup().location]",
          "name": "[variables('slack')]",
          "properties": {
            "api": {
              "id": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Web/locations/', resourceGroup().location, '/managedApis/slack')]"
            },
            "displayName": "Slack",
            "parameterValues": {}
          }
        },
        {
          "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": {
                "Collecting_went_wrong": {
                  "inputs": {
                    "host": {
                      "connection": {
                        "name": "@parameters('$connections')['slack']['connectionId']"
                      }
                    },
                    "method": "post",
                    "path": "/chat.postMessage",
                    "queries": {
                      "channel": "<channel>",
                      "text": "<message>",
                      "username": "<user>"
                    }
                  },
                  "runAfter": {},
                  "type": "ApiConnection"
                }
              },
              "parameters": {
                "$connections": {
                  "type": "object",
                  "defaultValue": {
                  }
                }
              },
              "triggers": {
               <trigger>
              }
            },
            "parameters": {
              "$connections": {
                "value": {
                  "slack": {
                    "id": "[resourceId('Microsoft.Web/connections', variables('slack'))]",
                    "connectionId": "[resourceId('Microsoft.Web/connections', variables('slack'))]",
                    "connectionName": "slack"
                  }
                }
              }
            }
          },
          "dependsOn": [
            "[resourceId('Microsoft.Web/connections', variables('slack'))]"
          ]
        }
      ],
      "outputs": {}
    }

    The 'fun' part is validation of template during the deployment:

    New-AzureRmResourceGroupDeployment : 17:08:51 - Resource Microsoft.Logic/workflows 'reporting-reminder-logic-app-dev' 
    failed with message '{
      "error": {
        "code": "ConnectionsParameterInvalid",
        "message": "The provided API connection parameter 'slack' is missing the required property 'id'."
      }
    }'

    I'm really confused here.

    What I tried to deploy it as connection and added $connection parameter definition as well, deployment went through. Nevertheless, when I changed connection to $connections in template parameters, Azure portal throw at me the same validation error.

    Any idea what am I doing wrong here?

    Thanks

    Thursday, July 30, 2020 1:51 PM

Answers

  • The issue was about different ID in resources -> Microsoft/Web.connections -> properties -> id and slack -> connection. Once this connection ids were the same, the validation passed.

    So it's only confusing validation message.

    • Marked as answer by Lubomir Kovac Saturday, August 8, 2020 11:19 AM
    Saturday, August 8, 2020 11:19 AM