How to create hybrid connection inside azure function using arm template

765 views Asked by At

I have created azure function app using arm template. But I want to create few hybrid connections under networking of the azure function like this below:

enter image description here

So, can anyone suggest me how to do this?

2

There are 2 answers

3
Doris Lv On BEST ANSWER

Example works on my side:

Add an array list for your hybrid connection endpoint:

"parameters": {
        ......
        "endpoint": {
            "defaultValue": [
                "test6:3306",
                "test6:8081",
                "test6:8082"
            ],
            "type": "Array"
        }
    },

Copy Usage in resources section:

{
    "type": "Microsoft.Relay/namespaces/HybridConnections",
    "apiVersion": "2017-04-01",
    "name": "[concat(parameters('relayName'), '/', copyIndex())]",
    "location": "Central US",
    "dependsOn": [
        "[resourceId('Microsoft.Relay/namespaces', parameters('relayName'))]"],
    "properties": {
        "requiresClientAuthorization": false,
        "userMetadata": "[[{\"key\":\"endpoint\",\"value\":\"[parameters('endpoint')[copyIndex()]]\"}]"
    },
    "copy": {
        "name": "datacopy",
        "count": 3
    }
},
{
    "type": "Microsoft.Relay/namespaces",
    "apiVersion": "2018-01-01-preview",
    "name": "[parameters('relayName')]",
    "location": "Central US",
    "sku": {
        "name": "Standard",
        "tier": "Standard"
    },
    "properties": {}
}

Here are my reference:

  1. create hybridconnection using template

  2. Link existing hybrid connection to an azure web app through ARM-template

  3. copyIndex usage

0
KondzioSSJ4 On

for creating Hybrid-Connection for webs using bicep you need to:

param appServiceName string

var cfg = json(loadTextContent('../../bicepConsts.json'))
var hc = cfg.HybridConnection

resource appService 'Microsoft.Web/sites@2021-02-01' existing = {
  name: appServiceName
}

var relayId = resourceId(hc.ResourceGroup, 'Microsoft.Relay/namespaces', hc.Namespace)
var connectionId = '${relayId}/hybridConnections/${hc.Name}'
var senderKeyName = 'defaultSender'

var key = listKeys('${connectionId}/authorizationRules/${senderKeyName}', '2017-04-01').primaryKey


resource hybridConnection 'Microsoft.Web/sites/hybridConnectionNamespaces/relays@2021-02-01' = {
  name: '${appService.name}/${hc.Namespace}/${hc.Name}'
  location: hc.NamespaceLocation
  dependsOn: [
    appService
  ]
  properties: {
    serviceBusNamespace: hc.Namespace
    relayName: hc.Name
    relayArmUri: connectionId
    hostname: hc.Host
    port: hc.Port
    sendKeyName: senderKeyName
    sendKeyValue: key
    serviceBusSuffix: '.servicebus.windows.net'
  }
}

Where this bicepConsts file contains think like:

{ 
    "..." : "...",
    "HybridConnection": {
        "ResourceGroup": "resource group of your HybridConnection from Azure",
        "Name": "Name of hybrid connection",
        "Namespace": "Namespace of hybrid connection",
        "NamespaceLocation": "Location (e.g. 'West US 2') of your hybrid connection namespace",
        "Host": "Host of your hybrid connection",
        "Port": "Port of your hybrid connection AS INTEGER!",
    }
}