Azure Storage Account in a Virtual Network: The response for resource had empty or invalid content.
Today I was writing a Bicep script to deploy an Azure Storage Account in a virtual network.
In order to configure this in the resource you add the following property:
networkAcls: { bypass: 'AzureServices' virtualNetworkRules: [ { id: storageAccountSubnetId action: 'Allow' } ] defaultAction: 'Deny'}
Note that storageAccountSubnetId is a parameter in my case.
Next I added a virtual network Bicep script:
resource vnet 'Microsoft.Network/virtualNetworks@2020-08-01' = { name: '${prefix}-${stage}-vnet' location: location properties: { addressSpace: { addressPrefixes: [ vNetAddressPrefix ] } subnets: [ { name: '${prefix}-${stage}-storage-account-snet' properties: { addressPrefix: storageAccountSubnetAddressPrefix delegations: [] } } ] }}
Again, I use parameters: prefix, stage, location, vNetAddressPrefix, storageAccountSubnetAddressPrefix.
When I tried to deploy both resource from a main Bicep script the terminal in VS Code returned the following message:
(DeploymentFailed) At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.
Not a lot of details here.
When going to the Azure portal in order to view the deployment logs, I found the following error details:
The response for resource had empty or invalid content.
Again, not so much details.
The only thing I could think of now was to test everything manually in the portal. When trying to link the virtual network (which was deployed, the Storage Account I added using the portal) in the Storage Account I got a message that the Microsoft.Storage service endpoint has to be enabled. This quickly made me realize I forgot to configure this service in the VNet Bicep script. To fix this I added the following property to the sub net:
serviceEndpoints: [ { service: 'Microsoft.Storage' }]
And voila, now it’s working.
If you’re interested in the full code, see the following GitHub gist:
Hopefully this article might help someone with the same situation.
Cheers!