Azure自定义资源提供程序-到ARM模板的自定义错误消息
如果我的自定义资源提供程序希望向ARM返回自定义失败消息,那么我的响应主体应该是什么? 我有一个由JavaScript Azure函数支持的自定义资源提供程序 我尝试了以下方法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 = {
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模板