Close

Deploy API Connection using ARM

Azure API Connections have a name and a display name. When you create a new API Connection via the Azure Portal, you are not able to specify the name of the API Connection. This name is actually used in Logic Apps however. Example:
@parameters(‘$connections’)[‘sftp_1’][‘connectionId’]

In this case sftp_1 is the name, not the display name. If you deploy this logic app from DEV to ACC, you might run into problems when connection name sftp_1 refers to a different FTP server. The only way around this, is to create the API Connection via Powershell using an ARM template. The ARM template will create a resource of type Microsoft.Web/connections.

Example ARM Template:

{
“$schema”: “https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#”,
“contentVersion”: “1.0.0.0”,
“parameters”: {
“logicAppLocation”: {
“type”: “string”,
“defaultValue”: “[resourceGroup().location]”,
“allowedValues”: [
“[resourceGroup().location]”,
“eastasia”,
“southeastasia”,
“centralus”,
“eastus”,
“eastus2”,
“westus”,
“northcentralus”,
“southcentralus”,
“northeurope”,
“westeurope”,
“japanwest”,
“japaneast”,
“brazilsouth”,
“australiaeast”,
“australiasoutheast”,
“westcentralus”,
“westus2”
],
“metadata”: {
“description”: “Location of the Logic App.”
}
},
“sftp_name”: {
“type”: “string”,
“defaultValue”: “sftp”
},
“sftp_displayName”: {
“type”: “string”,
“defaultValue”: “”
},
“sftp_hostName”: {
“type”: “string”,
“defaultValue”: “”,
“metadata”: {
“description”: “Host Server Address”
}
},
“sftp_userName”: {
“type”: “string”,
“defaultValue”: “”,
“metadata”: {
“description”: “User Name”
}
},
“sftp_password”: {
“type”: “securestring”,
“defaultValue”: null,
“metadata”: {
“description”: “Password”
}
},
“sftp_portNumber”: {
“type”: “int”,
“defaultValue”: 22,
“metadata”: {
“description”: “SFTP Port Number (example: 22)”
}
},
“sftp_giveUpSecurityAndAcceptAnySshHostKey”: {
“type”: “bool”,
“defaultValue”: true,
“metadata”: {
“description”: “Disable SSH Host Key Validation? (True/False)”
}
},
“sftp_sshHostKeyFingerprint”: {
“type”: “string”,
“defaultValue”: “”,
“metadata”: {
“description”: “SSH Host Key Finger-print”
}
},
“sftp_disableUploadFilesResumeCapability”: {
“type”: “bool”,
“defaultValue”: false,
“metadata”: {
“description”: “Disable Resume Capability? (True/False)”
}
}
},
“variables”: {},
“resources”: [
{
“type”: “Microsoft.Web/connections”,
“apiVersion”: “2016-06-01”,
“location”: “[parameters(‘logicAppLocation’)]”,
“name”: “[parameters(‘sftp_name’)]”,
“properties”: {
“api”: {
“id”: “[concat(‘/subscriptions/’,subscription().subscriptionId,’/providers/Microsoft.Web/locations/’,parameters(‘logicAppLocation’),’/managedApis/sftp’)]”
},
“displayName”: “[parameters(‘sftp_displayName’)]”,
“parameterValues”: {
“hostName”: “[parameters(‘sftp_hostName’)]”,
“userName”: “[parameters(‘sftp_userName’)]”,
“password”: “[parameters(‘sftp_password’)]”,
“portNumber”: “[parameters(‘sftp_portNumber’)]”,
“giveUpSecurityAndAcceptAnySshHostKey”: “[parameters(‘sftp_giveUpSecurityAndAcceptAnySshHostKey’)]”,
“sshHostKeyFingerprint”: “[parameters(‘sftp_sshHostKeyFingerprint’)]”,
“disableUploadFilesResumeCapability”: “[parameters(‘sftp_disableUploadFilesResumeCapability’)]”
}
}
}
],
“outputs”: {}
}

It’s a bit too much, to share the entire Powershell function, but I will explain its workings. The Powershell function reads settings like the subscriptionId and the resource group from a settings.xml file. Next, it’s checked whether the user is already logged on. If not, Login-AzureRmAccount is called without parameters. This opens a window where you can specify username en password.

Finally the following statement is run:
New-AzureRmResourceGroupDeployment -TemplateFile $templateFilePath -ResourceGroupName $resourceGroupName -TemplateParameterFile $parametersFilePath

This command uses the above template file and a parameters file for configuration.

1 thought on “Deploy API Connection using ARM

  1. Hi there to all, how is the whole thing, I think every one is getting more from this website,
    and your views are fastidious in support of new visitors.

Comments are closed.