Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure自定义资源提供程序-到ARM模板的自定义错误消息_Azure_Azure Resource Manager - Fatal编程技术网

Azure自定义资源提供程序-到ARM模板的自定义错误消息

Azure自定义资源提供程序-到ARM模板的自定义错误消息,azure,azure-resource-manager,Azure,Azure Resource Manager,如果我的自定义资源提供程序希望向ARM返回自定义失败消息,那么我的响应主体应该是什么? 我有一个由JavaScript Azure函数支持的自定义资源提供程序 我尝试了以下方法 body = { error: { code: "Failed", message: "A custom error message'." } }; httpStatus = 200; context.res = {

如果我的自定义资源提供程序希望向ARM返回自定义失败消息,那么我的响应主体应该是什么? 我有一个由JavaScript Azure函数支持的自定义资源提供程序 我尝试了以下方法

 body = {
       error: {
            code: "Failed",
            message: "A custom error message'."
        }
    };
httpStatus = 200;

 context.res = {
            status: httpStatus,
            headers: {
                'Content-Type': 'application/json'
              },
            body: body
        };
ARM模板部署失败,出现错误-

{
    "error": {
        "code": "ResourceDeploymentFailure",
        "message": "The response for resource had empty or invalid content."
    }
我也试过了

 body = {
       properties: {
       provisioningState: "Failed",
       error: {
            code: "Failed",
            message: "A custom error message'."
        }
       }
    };
httpStatus = 200;

 context.res = {
            status: httpStatus,
            headers: {
                'Content-Type': 'application/json'
              },
            body: body
        };
ARM模板部署失败,出现错误

"The resource operation completed with terminal provisioning state 'Failed"
我希望ARM模板部署失败,并从Azure函数返回一条自定义错误消息-“自定义错误消息”

编辑:

这是我的手臂模板

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "resourcePrefix": {
      "type": "string",
      "defaultValue": "prfx-",
      "maxLength": 6,
      "metadata": {
        "description": "The prefix of HLF resource."
      }
    },
    "randomGuid": {
      "defaultValue": "[newGuid()]",
      "type": "string",
      "metadata": {
        "description": "New random GUID"
      }
    }
  },
  "variables": {
    "funcName": "[concat(parameters('resourcePrefix'), substring(parameters('randomGuid'), 0, 5))]",
    "myResourceProvider": "my-custom-provider",
    "location": "[resourceGroup().location]"
  },
  "resources": [
    {
      "apiVersion": "2018-09-01-preview",
      "type": "Microsoft.CustomProviders/resourceProviders",
      "name": "[variables('myResourceProvider')]",
      "location": "[variables('location')]",
      "properties": {
        "resourceTypes": [
          {
            "name": "deploy",
            "routingType": "Proxy",
            "endpoint": "<azure-func-url>"
          }
        ]
      }
    },
    {
      "apiVersion": "2018-09-01-preview",
      "type": "Microsoft.CustomProviders/resourceProviders/deploy",
      "name": "[concat(variables('myResourceProvider'), '/', variables('funcName'))]",
      "location": "[variables('location')]",
      "dependsOn": [
        "[concat('Microsoft.CustomProviders/resourceProviders/',variables('myResourceProvider'))]"
        ]      
    }
  ],
  "outputs": {
  }
}
{
“$schema”:”https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
“内容版本”:“1.0.0.0”,
“参数”:{
“资源前缀”:{
“类型”:“字符串”,
“默认值”:“prfx-”,
“最大长度”:6,
“元数据”:{
“说明”:“HLF资源的前缀。”
}
},
“随机GUID”:{
“defaultValue”:“[newGuid()]”,
“类型”:“字符串”,
“元数据”:{
“说明”:“新随机GUID”
}
}
},
“变量”:{
“funcName”:“[concat(参数('resourcePrefix')、子字符串(参数('randomGuid')、0,5))”,
“myResourceProvider”:“我的自定义提供程序”,
“位置”:“[resourceGroup().location]”
},
“资源”:[
{
“apiVersion”:“2018-09-01-preview”,
“类型”:“Microsoft.CustomProviders/resourceProviders”,
“名称”:“[变量('myResourceProvider')]”,
“位置”:“[变量('位置')]”,
“财产”:{
“资源类型”:[
{
“名称”:“部署”,
“路由类型”:“代理”,
“终结点”:”
}
]
}
},
{
“apiVersion”:“2018-09-01-preview”,
“类型”:“Microsoft.CustomProviders/resourceProviders/deploy”,
“名称”:“[concat(variables('myResourceProvider'),'/',variables('funcName'))]”,
“位置”:“[变量('位置')]”,
“dependsOn”:[
[concat('Microsoft.CustomProviders/resourceProviders/',variables('myResourceProvider'))]
]      
}
],
“产出”:{
}
}

自定义提供程序当前不支持按原样代理错误消息。自定义错误消息将作为详细信息嵌套在标准消息下


但是,似乎有一个bug正在阻止错误通过ARM模板的传播。这应该很快修复

@jjbfour是对的。自定义消息嵌套在传播消息的“下游”标签下。但这对我来说很好。以下作品

 body = {
       error: {
            code: "Failed",
            message: "A custom error message'."
        }
    };
httpStatus = 400;

 context.res = {
            status: httpStatus,
            headers: {
                'Content-Type': 'application/json'
              },
            body: body
        };

我之前犯的错误是没有正确设置HTTP状态

你能提供你的arm模板吗?我已经编辑了答案以包含arm模板