Open brandonh-msft opened 3 years ago
This may be an issue with the resource provider. When the runtime evaluates the expression "[reference(resourceId('Microsoft.Web/connections', 'tablestorage')).connectionRuntimeUrl]"
, it will perform a GET on the specific resource. If the RP doesn't make the connectionRuntimeUrl
property available immediately after the initial PUT succeeds and returns a response on the GET without the property, it would explain the failure.
How can we get this equivalent in bicep?
{
"name": "azuretables_runtimeUrl",
"value": "[reference(resourceId('Microsoft.Web/connections', 'tablestorage', 'full')).connectionRuntimeUrl]"
},
(note the 'full'
param added to the resourceId
function)
'full'
is not an argument that is supported on the resourceId()
function, it is an argument of the reference()
function, but that is not the issue. The resource does not appear to return the connectionRuntimeUrl
property on a GET request. My guess is the CLI is doing multiple calls, not just a simple GET request to grab this value. The right next step is to reach out to the Web RP team as to how/why they are doing this, and if they can start returning it in a GET. Any chance you can open a support request for this? Otherwise, we can discuss this during our monthly sync with that team on 7/21.
'full'
is not an argument that is supported on theresourceId()
function, it is an argument of thereference()
function, but that is not the issue. The resource does not appear to return theconnectionRuntimeUrl
property on a GET request. My guess is the CLI is doing multiple calls, not just a simple GET request to grab this value. The right next step is to reach out to the Web RP team as to how/why they are doing this, and if they can start returning it in a GET. Any chance you can open a support request for this? Otherwise, we can discuss this during our monthly sync with that team on 7/21.
Thanks for that detail; unfortunately, I'm headed out of the office until the 18th and probably wouldn't know the right verbiage/people as well as you/your team. If you want to include me in the call on the 21st that'd be great - I'll see if I can make it.
Also, please review usage in ARM here which works fine (I just botched my c/p)
I think I figured this one out. There are at least two issues:
kind
which needs a value of v2
in order for this property to be emitted. We are more strict with top-level properties in bicep, so the fact that this property is missing from the type is treated as an error, which will prevent you from deploying this bicep code. This is another case for prioritizing Azure/bicep#3000.connectionRuntimeUrl
is also missing. I suspect this is because the property didn't get introduced until the kind: 'v2'
value existed.Both of these problems should be properly fixed in a single swagger update. I'm not sure how quickly that will get done, so Azure/bicep#3000 will have to serve as a stop-gap in the meantime. Unfortunately, you are blocked on doing this in Bicep until that is done. cc @miqm as FYI since I know he was looking into implementing this.
Yup i just filed Azure/bicep#3512 as part of trying to figure this out. My workaround is to bicep build
the file then sed
the output JSON to add the "kind"
property
This is maybe helpful to someone else. If you already have a connection created named "myConnection" you will get the following error if you try to change the kind to V2. Delete the resource first then try the creation again.
{"code":"DeploymentFailed","message":"At least one resource deployment operation failed. Please list deployment operations for details. Please see https://aka.ms/DeployOperations for usage details.","details":[{"code":"ConnectionV2KindMismatch","message":"The 'kind' property in api connection '
This is still an issue.
Bicep version
Describe the bug
I'm creating an API Connection resource in Azure so that I can then use its Runtime URL in a Logic App connection. However, I'm unable to get the runtime URL despite it being available on the API Connection resource's output from
az cli
To Reproduce Steps to reproduce the behavior:
now try to get the
connectionRuntimeUrl
property off the created Azure resource as shown byaz resource show --ids <connection resource ID>
:I tried by using
tableStorageConnection.properties.connectionRuntimeUrl
andtableStorageConnection.properties['connectionRuntimeUrl']
and am met with the following warning in the CLI during deployment
but the deployment then fails in Azure with the same message:
(Secondary complaint: if it's going to fail the deployment, then bicep should error, not warn)
Bicep's compiled JSON looks like this: