I am trying to subscribe to storage account (Blob Created ) event using the event grid connector (Workflow URL) in the standard logic app and it fails with the below error. However, if i use the same connector in consumption logic app it works fine.
I have create a workflow using When a resource event occurs
trigger and got the same error alike you.
However, if i use the same connector in consumption logic app it works fine.
Yes, In consumption logic app it will work because the validation happens internally but as given in this blog, you need to explicitly validate the subscription handshake in order to receive the events in standard logic app.
Then I modified my workflow as below and it started working for me.
It will check for event type Microsoft.EventGrid.SubscriptionValidationEvent
which will be received at the time of event creation.
Below step is added for handshake validation.
Code:
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"Condition": {
"actions": {
"HTTP": {
"inputs": {
"body": "@triggerBody()?['data']?['validationCode']",
"method": "POST",
"uri": "@{triggerBody()?['data']?['validationUrl']}"
},
"runtimeConfiguration": {
"contentTransfer": {
"transferMode": "Chunked"
}
},
"type": "Http"
}
},
"else": {
"actions": { }
},
"expression": {
"and": [
{
"equals": [
"@triggerBody()?['eventType']",
"Microsoft.EventGrid.SubscriptionValidationEvent"
]
}
]
},
"runAfter": { },
"type": "If"
},
"Send_an_email_(V2)": {
"inputs": {
"body": {
"Body": "<p>@{triggerBody()?['data']}</p>",
"Importance": "Normal",
"Subject": "Blob Created",
"To": "***********.com"
},
"host": {
"connection": {
"referenceName": "office365"
}
},
"method": "post",
"path": "/v2/Mail"
},
"runAfter": {
"Condition": [
"SUCCEEDED"
]
},
"type": "ApiConnection"
}
},
"contentVersion": "1.0.0.0",
"outputs": { },
"triggers": {
"When_a_resource_event_occurs": {
"inputs": {
"body": {
"properties": {
"destination": {
"endpointType": "webhook",
"properties": {
"endpointUrl": "@{listCallbackUrl()}"
}
},
"filter": {
"includedEventTypes": [
"Microsoft.Storage.BlobCreated"
]
},
"topic": "afreenstorage"
}
},
"host": {
"connection": {
"referenceName": "azureeventgrid"
}
},
"path": "/subscriptions/@{encodeURIComponent('*********')}/providers/@{encodeURIComponent('Microsoft.Storage.StorageAccounts')}/resource/eventSubscriptions",
"queries": {
"x-ms-api-version": "2017-09-15-preview"
}
},
"splitOn": "@triggerBody()",
"type": "ApiConnectionWebhook"
}
}
},
"kind": "Stateful"
}
Then I created the event by using the below URL-
Event Creation:
Output:
Please ensure to add all the actions in your workflow specifically the handshake validation condition action then create the event.