APIM 策略中的泛型破坏了 Terraform
Generics in APIM policy breaks Terraform
无法通过 Terraform 部署以下 APIM 策略:
<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 reader。
如果 XML 策略由 Terraform 提供,则使用 <
和 >
。
无法通过 Terraform 部署以下 APIM 策略:
<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 reader。
如果 XML 策略由 Terraform 提供,则使用 <
和 >
。