Azure Functions Deployment Error

October 10, 2019

I was deploying a test azure function using the tutorial at https://docs.microsoft.com/en-us/azure/azure-functions/functions-create-first-java-maven and it was failing with the following error:

[ERROR] Failed to execute goal com.microsoft.azure:azure-functions-maven-plugin:1.3.4:deploy (default-cli) on project azure-functions: 2 exceptions occurred. : 
Chain of Causes for CompositeException In Order Received =>
: Unrecognized field "evaluationDetails" (class com.microsoft.azure.PolicyViolationErrorInfo), not marked as ignorable (13 known properties: "policyDefinitionId",
 "policyDefinitionReferenceId", "policyDefinitionDisplayName", "policyAssignmentParameters", "policyAssignmentName", "policySetDefinitionName", "policyDefinitionName", 
 "policyAssignmentScope", "policyDefinitionEffect", "policyAssignmentId", "policySetDefinitionId", "policySetDefinitionDisplayName", "policyAssignmentDisplayName"])
 [ERROR]  at [Source: (String)"{"policyDefinitionDisplayName":"Allowed locations","evaluationDetails":{"evaluatedExpressions": 
 {"result":"True","expressionKind":"Field","expression":"location","path":"location","expressionValue":"westus","targetValue":["northeurope","westeurope"],"operator":"NotIn"},
 {"result":"True","expressionKind":"Field","expression":"location","path":"location","expressionValue":"westus","targetValue":"global","operator":"NotEquals"},
 {"result":"True","expressionKind":"Field","expression":"type","path":"ty"[truncated 904 chars]; line: 1, column: 73] (through reference chain: 
 com.microsoft.azure.CloudError["additionalInfo"]->java.util.ArrayList[0]->com.microsoft.azure.PolicyViolationErrorInfo["evaluationDetails"])
: Unrecognized field "evaluationDetails" (class com.microsoft.azure.PolicyViolationErrorInfo), not marked as ignorable (13 known properties: "policyDefinitionId", 
"policyDefinitionReferenceId", "policyDefinitionDisplayName", "policyAssignmentParameters", "policyAssignmentName", "policySetDefinitionName", "policyDefinitionName", 
"policyAssignmentScope", "policyDefinitionEffect", "policyAssignmentId", "policySetDefinitionId", "policySetDefinitionDisplayName", "policyAssignmentDisplayName"])
[ERROR]  at [Source: (String)"{"policyDefinitionDisplayName":"Allowed locations","evaluationDetails":{"evaluatedExpressions":
[{"result":"True","expressionKind":"Field","expression":"location","path":"location","expressionValue":"westus","targetValue": ["northeurope","westeurope"],"operator":"NotIn"}, 
{"result":"True","expressionKind":"Field","expression":"location","path":"location","expressionValue":"westus","targetValue":"global","operator":"NotEquals"},
{"result":"True","expressionKind":"Field","expression":"type","path":"ty"[truncated 912 chars]; line: 1, column: 73] (through reference chain: 
com.microsoft.azure.CloudError["additionalInfo"]->java.util.ArrayList[0]->com.microsoft.azure.PolicyViolationErrorInfo["evaluationDetails"])

Googling the headline error Unrecognized field "evaluationDetails" (class com.microsoft.azure.PolicyViolationErrorInfo) gave me no matches at all.

I worked out that the problem was due to the region I was deploying into - I had westus set in my pom.xml. Changing this to westeurope made the problem go away and I successfully deployed the function.

In writing this up, I've noticed a hint of this in the error message:

"expressionValue":"westus","targetValue":["northeurope","westeurope"]

but it was somewhat obscure!