以下 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>
的解决方法之外,如何继续?
最佳答案
多行语句 (@{ }
) 可以包含 XML 不友好字符,但不能通过 Terraform XML 读取器进行。
如果 XML 策略由 Terraform 配置,请使用 <
和 >
。
关于azure - APIM 策略中的泛型破坏了 Terraform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56773966/