Manbearpiet
Manbearpiet

Reputation: 31

Why is my ARM-deployment in a Invalidrequestformat

ARM template

Hey guys, we're trying out to implement a few new templates where we deploy a private Endpoint in an existing subnet. We've successfully set the PrivateEndpoint policies property using ARM, however when deploying the private Endpoint resource we run into a problem:

    "resources": [
        {
            "name": "[variables('privateEndpointName')]",
            "location": "[resourceGroup().location]",
            "type": "Microsoft.Network/privateEndpoints",
            "apiVersion": "2019-04-01",
            "properties": {
                "subnet": {
                    "id": "[parameters('subnetId')]"
                },
                "PrivateLinkServiceConnections": [
                    {
                        "properties": {
                            "privateLinkServiceId": "[parameters('privateLinkResource')]",
                            "groupIds": "[parameters('targetSubResource')]",
                            "requestMessage": "[parameters('requestMessage')]"
                        }
                    }
                ]
            },
            "tags": {
            }
        }
]

The parameters fed to the template are identical to deployment when using the portal and contain full resource URI's. Deploying to another resource, storage account or SQL has the same outcome.

We've verified the variable privateEndpointName using an empty deployment generating just output. So that's not the issue, but we still receive the following error:

Error

New-AzResourceGroupDeployment : 11:56:20 - Resource Microsoft.Network/privateEndpoints 'privateEndpointSubnet-pe-nameofthesqlserver' failed with message '{
  "error": {
    "code": "InvalidRequestFormat",
    "message": "Cannot parse the request.",
    "details": []
  }
}'

Portal Template

Deployment with this using the portal is successful

"resources": [
        {
            "location": "[parameters('location')]",
            "name": "[parameters('privateEndpointName')]",
            "type": "Microsoft.Network/privateEndpoints",
            "dependsOn": [
                "[parameters('subnetDeploymentName')]"
            ],
            "apiVersion": "2019-04-01",
            "properties": {
                "subnet": {
                    "id": "[parameters('subnet')]"
                },
                "privateLinkServiceConnections": [
                    {
                        "name": "[parameters('privateEndpointName')]",
                        "properties": {
                            "privateLinkServiceId": "[parameters('privateLinkResource')]",
                            "groupIds": "[parameters('targetSubResource')]"
                        }
                    }
                ]
            },
            "tags": {}
        },
        {
            "apiVersion": "2017-05-10",
            "name": "[parameters('subnetDeploymentName')]",
            "type": "Microsoft.Resources/deployments",
            "resourceGroup": "[parameters('virtualNetworkResourceGroup')]",
            "properties": {
                "mode": "Incremental",
                "template": {
                    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                    "contentVersion": "1.0.0.0",
                    "resources": [
                        {
                            "name": "tst2testst-weu-vnet-t/subnet-1",
                            "id": "/subscriptions/removedsubid/resourceGroups/blabla3/providers/Microsoft.Network/virtualNetworks/tst2testst-weu-vnet-t/subnets/subnet-1",
                            "properties": {
                                "provisioningState": "Succeeded",
                                "addressPrefix": "192.168.0.0/24",
                                "networkSecurityGroup": {
                                    "id": "/subscriptions/removedsubid/resourceGroups/blabla3/providers/Microsoft.Network/networkSecurityGroups/vnet-id-nsg"
                                },
                                "serviceEndpoints": [],
                                "delegations": [],
                                "privateEndpointNetworkPolicies": "Disabled",
                                "privateLinkServiceNetworkPolicies": "Enabled"
                            },
                            "type": "Microsoft.Network/virtualNetworks/subnets",
                            "apiVersion": "2019-04-01"
                        }
                    ]
                }
            }
        }
    ]

Upvotes: 1

Views: 1847

Answers (1)

Manbearpiet
Manbearpiet

Reputation: 31

Fixed!

privateLinkServiceConnections JSON-object also requires a name, doesn't look required in the Private Endpoint Arm reference. I'll set up a GitHub issue for it.

Upvotes: 2

Related Questions