以下APIM策略无法通过Terraform部署:
<policies>
<inbound>
<send-request mode="new" response-variable-name="xxx" timeout="20" ignore-error="true">
<set-url>https://xxx/api/v1/xxx?code={{xxx}}</set-url>
<set-method>GET</set-method>
</send-request>
<return-response>
<set-status code="302" reason="Redirect" />
<set-header name="Location" exists-action="override">
<value>@{
var response = context;
IResponse variable = context.Variables["xxx"] as IResponse;
var content = variable.Body;
JObject obj = content.As<JObject>(); <------------ < and > characters
JProperty urlprop = obj.Property("xxx");
return "" + urlprop.Value;
}
</value>
</set-header>
</return-response>
</inbound>
...
</policies>
出现以下错误:The 'JObject' start tag on line 15 position 26 does not match the end tag of 'value'. Line 18, position 4.
这是由于content.As<JObject>
引起的。
该策略的定义如the Terraform documentation。
使用xml_content = "${file("xxx")}"
时出现相同的错误。
除了找到不使用content.As<JObject>
的解决方法之外,如何进行?
答案 0 :(得分:0)
多行语句(@{ }
)可以包含XML不友好的字符,但不能通过Terraform XML阅读器。
如果XML策略由Terraform设置,请使用<
和>
。